'Global Illumination'에 해당되는 글 4건

  1. 2011/04/03 Hybrid Cryrsis 2 소감 (4)
  2. 2010/04/09 Hybrid Crytek 의 문서 중 재미있는 공식들
  3. 2010/04/06 Hybrid CG 4. Real World & Rendering (2) - G.I. & Photon Mapping
  4. 2008/11/19 Hybrid 파장에 영향을 받는 반사 함수 (3)

Cryrsis 2 소감

Games 2011/04/03 14:39

아래 내용은 전부 추측임, 다른 생각이 있으면 언제든 리플 달아주세요.

전반적인 흐름을 보자면, 기본적으로 ‘동적 물체, 동적 라이팅’에 중심을 맞춘듯 하다. 사실 정적 라이팅, 정적 물체가 많을 수록 그래픽 퀄리티는 좋아진다. 그런데, 그걸 모두 동적으로 해결하려다보니까 놓치는게 제법 있는 듯 하다.

정적으로 계산을 하면 포톤 매핑 같은 방법 이용할 수 있다. 실제 Halo3 관련 문서에서 포톤 매핑의 사용을 언급 하였다. 하지만, 크라이시스2에서는 기본이 동적이기 때문에, 혼합하여 사용하는 것을 극히 제한한듯 하다[1].

아무튼, 크라이텍에서 직접 자랑하듯, 자신들의 엔진은 전처리가 필요 없다고 하는데(아에 없는지 없어도 되는건지는 잘 모름. 즉, 원한다면 제작자가 포톤 매핑 같은 정적 기술들을 적용을 할 수는 있는건지는 모름), 그것이 일부는 독이 되는듯 하다.

일단, 테스트한 그래픽카드는 GTS450으로, 크라이시스2 때문에 구입했다. -_-^ 자동적으로 맞춰주는 사양은 HIGH, VERY HIGH, EXTREME 중 VERY HIGH인데, 문제점이 생기는 부분들은 EXTREME으로 변경해서 관찰도 해봤지만, 달라지는 것은 없었다.

사진은 클릭하면 커집니다!!

1. 소프트 파티클 부재 (패치 예정)

깜짝 놀랬다. -_-; 알고보니, 아직 DirectX 11을 지원안한다고 한다. 패치 예정임. 버그도 많은거보면, 급하게 출시한 듯 하다. DX11 지원이 들어가면, 소프트 파티클이야 당연히 적용 될듯. (스샷은 생략)

2. Motion Blur

Motion Blur
딱히 문제점...이라기보다는, 현존하는 후처리 기반 실시간 모션 블러의 한계가 잘 나온 스샷임. 거대한 물체가 지나가는 장면이고, 이걸 보면 필터 샘플링을 몇개 썼는지 정도는 볼 수 있다. 이런 장면은 극단적인 장면이라 무시해도 좋고, 블러가 생기는 물체 경계 주위로 생기는 halo 현상도 그렇게 눈에 띄지 않을 정도로만 발생한다(다른 효과랑 섞어쓰기 때문일 수도...).

3. 동적 GI!!!

게임에서 정적 GI는 이미 예전부터 썼다. Radiosity 기법[2]이나 Photon Mapping 방식인데, 물체와 광원 모두가 정적이라는 한계와 오랜 시간의 전처리가 필요하다는 단점이 있다. 고런데, SH 방법이나[3], 크라이텍에서 밀고 있는 LPV(Light Propagation Volumes) 방식은 동적인데다가 전처리가 필요 없는 장점이 있다. 하지만, 그 때문에 생기는 단점도 존재한다.

일단은 관찰 할 수 있는 부분부터!!

Global Illumination in Crysis 2
가운데 쓰레기통 같이 생긴 것은 직접 조명을 받지 않는 부분이다. 따라서 이 쓰레기통에 보이는 조명은 간접 조명이라는 것. 이걸 들었다 놨다 해도 약하지만 제대로 보인다. 하지만 엄밀히 말하면, 왼쪽의 선반?같이 생긴 것도 조명을 받아야 되는데, 왠일인지 전혀 못받고 있고, 오른쪽에 멀리 있는 물체들도 전혀 못 받고 있다.

Global Illumination in Crysis 2
벽을 보면 바닥의 빨간 색들이 잘 반사되어 있다. 물론 이런 효과는 기존의 정적인 방법들로도 얼마든지 구현할 수 있지만, 여러가지 이유를 통해, 여기서는 동적으로 구현했다고 추측할 수 있다.

하지만 이 효과들이 생각보다 잘 나타나지는 않는다. 일단 매우 약하게 묻어나서 아쉬운 경우가 많다.

이 경우는 빨간색 싸이렌 경보 + 조명이 360도 회전하는 장면이다. 지금은 왼쪽을 비추고 있다. 사실성을 따지자면 오른쪽에 빨간색이 많이 묻어나야하는데, 많이는 커녕 아에 안묻었다고 볼 수 있다. 굳이 문제점이라고 할 순 없겠지만, 실시간 GI에 대해 기대를 많이 한만큼 그냥 좀 아쉬운 부분이다[4].

이건 어쩌면 버그라고 할 수 있을 듯 한데, 계단 밑, 조명이 없는 부분에서 구석이 밝게 나타나는 문제가 생겼다. 아마도 벽 반대편의 조명이 흘러들어온듯 하다. 이런 경우 정적인 GI를 이용한다면 사실 더 잘 표현될 수 있는 부분이다.

요약하자면, 동적을 외치느라, 정적으로 더 잘 표현될 부분을 놓친듯 하다. 이 스샷 같은 경우도, 건물은 어차피 정적이고, 빛을 정적으로 둔다면, radiosity나 photon mapping의 방법을 사용하여, 라이트맵을 사용하면 더 좋은 결과를 얻을 수 있을 것 같다(메모리/성능에 문제가 생길라나). 빛이 들어오는 부분을 빼면 바닥이 그냥 텍스쳐 발라진 것만으로 표현되는걸 보면 아쉽다(그래도 왼쪽 벽을 보면 곳곳에 명암이 진곳이 있는데, 이건 라이트맵이 아니라 SSAO다. SSAO에 엄청나게 의지하고 있다).

4. SSAO 뭥미?

심각하다. 예전에 SSAO(Screen Space Ambient Occlusion) 구현 할 때 생겼던 문제점을 그대로 가지고 있었다. 한가지 궁금한건, 원래 모든 컴퓨터에서 이렇게 보이는지, 아니면 내 컴퓨터에서 예상치 못한 결과가 나온 것인지인데, 그래픽 카드에 따라 이렇게 심한 결과가 나올 수 있나 생각이 든다. 어쨌건, 내 컴퓨터에서도 모든 상황에서 문제가 생기는 것은 아닌데, 다음과 같은 현상은 매우 빈번하게 발견할 수 있다.

M
물체 주변에 halo 현상이 빈번하게 관찰된다. 정말 눈에 거슬릴 정도인데, 너무 심해서 원래 SSAO를 도입한 게임은 전부 이런가 생각도 해보고, 내 컴퓨터와 궁합이 안맞나 생각도 해본다. 어쨌건, 이것만 봐서는 분명 문제가 있다[5].

SSAO의 좋은 예
반면, 이건 SSAO가 아주 잘먹은 좋은 예이다. 보통은 이런 구석진 부분은 라이트맵으로 처리하는데, 크라이텍 님하들은 쿨하게 그런거 없이, 실시간으로 SSAO를 사용해서 이 효과를 나타내준다. 증거 화면은 다음에 있다.

스샷을 보면 명암이 생기는 부분이 무척 넓다는 것을 알 수 있다. 이걸 봐서도, 기존의 포인트 방식의 SSAO 방식은 좀 무리가 있을 것으로 보여지고, 이런 경우 i3D 2010 논문의 Volumetric Obscurance 방식이 더 적합해보인다[6]. 이렇게 넓게 SSAO가 들어간 것을 보면, 물체마다 SSAO 스케일도 다르게 준건가 추측도 해본다.

5. 심각한 충돌체

충돌체가 실제 물체와 심각하게 맞지 않는 경우가 많다.

충돌체 문제
가운데 있는 동그란 조명기구는 어디 걸려 있는게 아니라 그냥 허공에 매달려 있다. 어딘가의 주위 충돌체에 걸려서 둥둥 떠있는 부분. 이런 장면이 제법 많다. 총 쏘다가 충돌체에 걸려서 적이 안맞을 때도 매우 빈번하다.

6. 기타 버그

아주아주 많다. 가장 심각한 것 중에 하나는, 게임을 하면서 Nano Suit를 업그레이드 할 때 쓰는 Nano Catalyst가 모이질 않는다던지 없어진다던지 하는 버그다. 이걸 사용하는게 게임을 쉽게 만들 수도 있고 재밌게 만들 수도 있는 중요한 요소다. 그런데, 버그 때문에 망쳐버렸다. 이 문제는 해외 포럼에서도 적지 않게 언급됐다. 그 외에도 버그가 종종 발견 된다.

7. 요약

일단, 기대가 컸기 때문에 그만큼 실망이 크고, 버그는 좀 많아서 게임을 즐기는데 방해가 됨. GI는 살짝 감상할 수 있는데, 왜 있나 싶을 때도 있긴 함. 글에서 스샷하나 안올렸지만, 쉐이딩 효과들은 그냥 최고인듯,

ps. 스샷을 찍고보니 더더욱....... 나도 와이드 모니터 사고 싶다. ㅜ_ㅜ



  1. 제한할 수 밖에 없는게, 정적인 부분의 퀄리티를 극도로 높여놓으면, 그만큼 동적인 퀄리티가 낮아보일 수 있다. 어쨌건 일단 이질감이 생긴다는 말. 디즈니 셀 애니메이션 같은 것이 예라고 할 수 있을 듯. [본문으로]
  2. 현재 이슈가 되는, 실시간 Radiosity 기법과는 좀 다름. [본문으로]
  3. PRT Precomputed Radiance Transfer 방식을 말함. [본문으로]
  4. 아마도 ambient 를 강제로 달아버리거나, 반대편을 향해 가상의 조명을 달아버리면 이런 부분도 표현할 수 있을 듯하다. 아니면 Instant(Real-time) Radiosity를 제대로 활용하던지... [본문으로]
  5. 내가 구현했던 SSAO는 i3D 2010에서 나온 Volumetric Obscurance이었는데, 예전 크라이텍인가에서 이 논문을 인용한걸 보면, 이걸 도입했나 생긱이 들었다. 이 방법의 문제인가 싶기도 한데, 잘 모르겠다. 기회가 되면 자세한 테스트를...... (이 말뜻은, 앞으로 테스트 안하겠다는 말) [본문으로]
  6. Ogre3D 포럼에서 이 방법을 더욱 개선한 방법도 누가 보여줬었는데, 자세히 안봐서 까먹었다. [본문으로]
크리에이티브 커먼즈 라이센스
Creative Commons License
2011/04/03 14:39 2011/04/03 14:39

트랙백 주소 :: http://www.hybrid.pe.kr/tt/trackback/680

댓글을 달아 주세요

  1. ozlael 2011/04/03 14:59  댓글주소  수정/삭제  댓글쓰기

    ㅎㅎ 블로깅 올리셨군요 ㅎㅎ
    잘봤습니다. 실시간 GI라 엄청 기대했는데 정말 쓸데없게 해놨네요 ㅡㅡㅋ
    얘네 ssao는 쿨하게 4x4 블러만 해서 헤일로 현상 잘보일겁니다.
    엔비댜샘플의 바이리니어필터나 스타2의 깊이 가중 필터등을 안쓴거같더군요
    근데 문제는 개발자 눈에만 보인단겁니다ㅠ
    한번 헤일로에 눈을 뜨기 시작하면 모든 게임에서 보여요ㅠ
    저는 엄청 거슬리던데 다른 사람들은 안보인대요 ㅋ

    • Hybrid 2011/04/03 16:11  댓글주소  수정/삭제

      쓸데없다기보다는..... 아직은 쬐끔(아니 좀 많이) 아쉬운거죠. ㅎㅎ
      아쉬운 얘기만 했지만, 일단 전처리(라이트맵 만드는 과정) 없이 모든지 동적으로 계산하는것이니까 대단하죠.. +_+ 뭐, 엔진 팔면서 좀 더 개선하면 ㅎㄷㄷ해질지도..

      암튼, 헤일로 문제는 개발자 눈에만 보인다니까 신기하네요. 어떻게 이게 눈에 안띌 수가 있지... ㅡ0ㅡ;

  2. karnas 2011/04/07 10:36  댓글주소  수정/삭제  댓글쓰기

    gi 부분은 저도 아쉽더군요. 최소한 크라이텍이 발표했던 gi pt 수준의 퀄리티는 나와줬으면 했는데 말입니다. 색반사도 제대로 구현 안된 것 같고, 파티클 반사도 빠진 것 같고, 태양광 같은 큰 광원에만 대응하더군요.(고로 실내나 야간에선 끄나 켜나 변화가 없습니다 oTL) 아마 콘솔 멀티 때문에 그런 것이 아닐까..하는 생각이 들긴 합니다만...아쉬운건 아쉬운거죠 ㅠㅠ halo 현상은 크라1때도 있던 것인데, 크라이텍 얘네들이 개선 방법을 몰랐을 리는 없고..아마 퍼포먼스 때문이 아닐까 추측됩니다. ozlael님 말대로 개발자 눈에는 정말 거슬리는데 대부분의 사람에게는 안보이는 신기한 현상(?) 이거든요=_=...

    ps. gi의 경우 베리 하이옵 이상에서만 걸리는 것 같습니다.

    • Hybrid 2011/04/07 21:26  댓글주소  수정/삭제

      태양광에만 반응하는 건 아닌것 같은데.... (스샷에 보면 실내 광에 반응하고 있죠.)
      주변에 있는 메인 광원 하나씩에만 반응하는거 같긴 합니다.

      그래도 기술들을 연구하고 끌어올리니까 대단한건 맞는데.....
      그래서 karnas님 말씀대로 아쉬운건 아쉬운.... ㅜ_ㅜ

[로그인][오픈아이디란?]