입니다. 크라이시스에 대해서 간단히 설명드리자면, 독일의 FPS 개발사이자 엔진 개발사인
이 도대체 뭘 잘못 먹었는지 현존하는 어떤 PC에서도 돌아갈 것 같지 않은 포토리얼리스틱 그래픽으로, 고대 유산을 설건드리다가 일 벌린 북한군을 제치고 외계인과 싸우는 미군 특수부대의 활약상을 그리다 만 FPS입니다.
이후로 간만이예요. 사실 그도 그럴 법한게, 이게 전혀 엔진이 최적화가 덜 되어서 느린 게 아니라, 현존 그래픽 카드 상에서 적용할 수 있는 기법은 정말 모조리 쏟아부었기 때문에 느린 거라, 오히려
입니다.
데모 버전에서 처음 보고
진심으로 어이없던 장면
사실 크라이시스에 쓰인 그래픽 테크닉은 시그라프나 GDC 등의 행사, 혹은 GPU Gems 같은 책을 통해서 종류 별로 다양하게 소개된 바가 있기 때문에
3D 그래픽 프로그래밍을 조금만 하시는 분이라면 다들 아실 법한 내용이긴 하지요. 하지만 블로그에 들르시는 모든 분들이 그래픽 프로그래밍에 조예가 깊진 않으시리라 믿고, '대단하긴 대단한데 얼마나 대단하길래 저렇게 설레발을 친다지?'란 의문을 가지시는 분들을 위해 크라이시스에 적용된 주요한 그래픽 기법에 대해서 간단히 소개를 드릴까 합니다.
열대의 섬은 크라이시스의 상징,
그 중에서도 숲 속 묘사는 백미 중의 백미
크라이시스를 처음 볼 때
인상적인 것은 뭐니뭐니 해도 눈 앞에 정말 사실적인 트로피컬 아일랜드가 펼쳐진다는 점 아닐까 싶습니다. 탁 트인 열대의 섬을 배경으로 게임이 전개되었던 것으로 높게 평가받았던 파 크라이의 후속작이니만큼 자연 묘사에 있어서만큼은 파 크라이의 한 단계 정도가 아니라 몇 단계는 앞질러가버린 화면을 보여줍니다. 개인적으론 열대 느낌을 전해주는 건 지형의 묘사도 한 몫 하지만, 뭐니뭐니해도 빽빽한 밀림의 묘사가 가장 크게 영향을 주지 않았을까 싶어요.
최근 게임 업계 수목 표현의 표준이라고 할 수 있는 스피드트리,
크라이시스와 비교하면 화면에서 느껴지는 사실감이 부족합니다
일단 요즘 게임들은 수목을 표현한다면 보통
스피드트리[idv] 같은 솔루션을 사용하기 마련인데, 스크린샷만 비교해봐도 아시겠지만
크라이시스의 초목 모델의 디테일은 정말로 차원을 달리합니다. 스피트트리에서 단순히 나무 모양과 색상이 어떻다 정도만 지정하고 있을 때, 크라이시스에서는 잎사귀의 이 부분은 빛을 얼마나 투과하고, 바람에 얼마나 잘 흔들리고, 이 부분이 몸에 닿으면 휘어야 하고…등의 추가적인 정보를 더 들고 있단 말이죠.
(이에 관련해서 자세한 내용은 GPU Gems 3권을 참고하세요. 아쉽게도 온라인 링크가 없습니다) (솔직히 게임 플레이에 아무런 영향이 없어서 이거 왜 만들었나? 싶긴 합니다만) 나무를 아무 위치나 부러뜨릴 수 있단 건 정말이지 보통 게임들이 상상하지 못한 경지입니다.
(스타워즈 : 포스 언 리시드[.]에도 물체 파괴가 있습니다만 미발매라…) 3D 모델이란 게 사실은 종이 공작 해놓은 것처럼 껍데기만 있고 속이 비어있는 거라서 아무 데서나 자르면 텅 비어보이는데, 이걸 막아주는 게 꽤나 어려운 문제거든요. 나뭇잎이 종잇장처럼 보이지 않도록
항상 옆단면을 만들었다는 인터뷰[crysis-online]도 인상적입니다.
구름
대기감
바다
크라이시스의 그래픽에서 지형과 수풀의 묘사가 단번에 눈을 잡아 끄는 역할을 하고 있다면,
구름과 대기감, 그리고 물의 표현은 은근하게 몰입감을 더해주는 역할을 하고 있습니다. 이런 부분의 묘사는 사실 잘 해봐야 플레이어들이 어색한 면을 느끼지 않는다는 점에서 본전인데, 못하면 CG라는 게 금방 느껴지거든요.
|
산란이란 어려운 문제입니다 구름이나 대기감, 혹은 물 속에서 본 장면을 물리적으로 정확하게 묘사한다는 건 상당히 복잡한데, 그 이유는 위의 그림을 보시면 짐작이 되시지 않을까 싶습니다. 자연 상태에서 태양광이 P에서 비춰서 구름이나 대기를 통과한 뒤에 E에 도달한다고 생각했을 때, 실제 물리적으로 태양광이 선택할 수 있는 경로는 정말이지 무수하게 많습니다.
아무리 좋은 컴퓨터를 사용해도 한 점에 도달하는 태양광의 경로를 정확하게 계산한다는 건 불가능한 일인데요, 하물며 이런 계산을 화면에 보이는 구름 크기에 해당하는 모든 점에 대해서 해준다는 건 정말정말정말 불가능이겠죠. 그래서 비교적 간단한 수학적 모델로 계산하는 방법이 알려져 있고, 크라이시스에서도 이런 방법 중 하나를 사용하고 있습니다. |
|
참 쉽죠? 근데 농담이 아니라 이거, 자세히 보면 두 개의 익스포넨셜 포그를 섞은 것 뿐이라, 제대로 산란 계산을 하는 수학적 모델에 비해선 정말로 간단한 모델이예요;;;
항상 최고의 기술만 사용했을 것 같지만, 물리적인 사실과 성능 사이에서 균형점을 찾는 노력도 게을리하지 않는 게 대단하다고 할까요. (위 공식은 Realtime Atmospheric Effects in Games[acm]에서 참고하실 수 있습니다) |
개발자 커뮤니티에 큰 파문을 일으킨
스크린 스페이스 앰비언트 오클루전
수풀의 묘사나 대기감, 구름, 바다의 묘사가 물리적으로 정확한 묘사에 집중했다면, 스크린스페이스 앰비언트 오클루전
(이후 SSAO)이라는 특유의 테크닉은 픽사 같은 3D 애니메이션 회사에서도 바쁠 때 사용하는 전통적인 눈속임 방식에 가까운 기법입니다. 그림의 왼쪽은 물체와 배경 사이에 그림자가 져서 또렷이 구분되는 반면, 오른쪽 같은 경우는 빛이 닿지 않는 부분이 모두 같은 색으로 보여서 구분이 잘 안 되는데, 왼쪽 그림에서
물체간의 전후 관계를 부각시키는 데 사용된 효과가 바로 SSAO라는 효과입니다.
앰비언트 오클루전 개념도
SSAO를 설명하자면 먼저 앰비언트 오클루전에 대해서 설명해야 할텐데, 그림을 보시면 이해가 빠를텐데요, 그림에서 가운데 있는 점은 주변이 어느 정도 막혀있기 때문에 빛이 아무리 비추더라도 완전히 열려있는 점에 비해서 받을 수 있는 빛의 양이 적습니다. 즉,
앰비언트 오클루전이란 물체 상의 각 지점이 주변 환경에 대해서 얼마나 열려있는지를 의미하는 값입니다.
앰비언트 오클루전만으로도
굉장한 사실감을 얻을 수 있다, 출처는 이곳[.] 그림은 실제로 조명을 하지 않고 앰비언트 오클루전만을 시각화한 것인데, 보시는 바와같이 조명이 없이 앰비언트 오클루전만으로도 굉장한 사실감을 얻을 수 있습니다. 그런데 왜 지금껏 게임에서 사용하지 않았을까요? 그것은 앰비언트 오클루전이라는 것이 모든 물체의 표면 상의 모든 지점에서 자기 주변이 얼마나 열려있는지를 확인해야 하는
매우 비싼 과정을 거쳐야만 얻을 수 있는 것이기 때문이었습니다.
그런데 크라이시스는 이 문제를 기가 막힌 방법으로 풀어버렸습니다. 모든 물체의 모든 지점에 대해서 미리 계산하는 게 아니라, 화면 상에 그려진 각각의 픽셀들이 자기 근처의 픽셀들과 비교해서 얼마나 가려졌는지를 계산하는 방법으로
비싼 전처리 비용을 아예 없애버린 거죠. 이 기법은 크라이시스의 다른 기법처럼 수학이 복잡한 것도 아니라서, 아마도 전 세계 수많은 개발자들이 이 기법을 보고 왜 진작에 생각해내지 못했을까 통탄해했으리라고 봅니다.
(좀 더 자세한 내용은 Finding Next Gen : CryEngine 2[acm]에서 참고하실 수 있습니다)
사실적인 피부 묘사도 주요 관전 포인트
정말 간단한 방법이지만 효과적으로
사실적인 피부 질감을 획득하는 기법도 인상적입니다. 사람의 피부는 불투명하지 않고, 빛이 닿으면 빛이 닿은 면의 뒷면이나 근처도 미묘한 산란에 의해서 빛나게 되는데, 3D CG에서는 구름이나 대기를 물리적으로 정확하게 묘사하기 힘든 것과 같은 이유로 미묘한 표면하 산란 효과를 표현하지 못하거든요. 오히려 인체의 경우엔 대기나 구름처럼 적당한 형태가 아니라 더 섬세한 형태기 때문에 간략한 계산식으로 풀기도 어렵지요.
표면하 산란의 예
반면 농담처럼 하는 얘기지만, '서양 개발자들 사이에는 흑인 쉐이더가 공유되는 게 아니냐' 싶을 정도로 최근 어떤 3D 게임에서도 흑인 묘사는 사실적인데, 그 이유는 멜라닌 색소가 피부의 미묘한 산란효과를 방지하기 때문에 3D로 산란 효과를 표현하지 못해도 다른 디테일만 높이면 그럭저럭 사실적으로 보이기 때문입니다. 그만큼
피부의 산란 효과는 재현하기 까다롭고 중요한데, 크라이시스에서는 조명이 뒤쪽에서 닿아도 빛을 낼 정도를 인체의 각 지점마다 지정하는 비교적 간단한 방식으로 해결하고 있습니다.
(엄밀히 따지자면 하프라이프 2의 하프 램버트 기법의 확장입니다)
외계인과의 접촉 이후의 눈 내린 묘사도 압권
그 외에도 금속과 같은 반사가 강한 질감을 좀 더 물리적으로 정확하게 묘사한 분석적 BRDF 기법이라든가, 지면의 기울기와 선회에 영향을 받는 모션 블렌딩이라든가, 동굴과 같은 지형을 묘사하는 복셀 모델링이라든가, 바닥의 디테일을 높여주는 패럴랙스 오클루전 매핑이라든가…소개할 만한 거리는 여럿 있지만 글이 너무 길어지니 이쯤 마무리하겠습니다.
정작 게임 플레이 얘기는 하나도 안 한 것 같은데;;;, 난이도가 무식하게 높고 세이브를 강요한다든가, 맨 몸의 인민군이 강화복 입은 나보다 더 세다든가, 탈 것에 타고 있으면 적이 강한 무기로 공격해서 더 쉽게 죽는다든가, 맥시멈 아머와 맥시멈 파워 모드 외에는 쓸모가 없다든가…불만 거리가 꽤 많지만 그런 것 다 필요없어요, 시시때때로 튀어나오는
눈을 의심하게 만드는 그래픽이 소소하지 않은 게임 밸런싱조차 잊어버리게 만듭니다. 특히 외계인 본거지의 CG는 정말이지 뻥 좀 보태서 에일리언 2나 어비스가 실시간으로 도는 기분인데, 이건 꼭 직접 보시기를 권해드립니다. 크라이엔진 2에 대해서는 아키텍처가 형편없다는 소문이라든가, GPGStudy에서
좀 웃기는 글[gpgstudy]을 보기도 해서 그닥 대단치 않게 생각하고 있었는데, 3년쯤 뒤에 이런 그래픽으로 MMORPG가 나온다면 피 좀 토할 것 같습니다. 생각만 해도 오싹하네요.