336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이 글은 10년도에 작성 된 글 백업임. 망할 이글루스

0-------------------------------------------------------



[번역] Two-part shadow maps :wolfire ( AO와 Shadow map) Game develop

앰비언트 오클루전은 게임 그래픽에서 입체감을 부여하기 위해 자주 쓰이게 된다. 대부분 Screen-space AO(SSAO링크 모음)를 주로 사용하고 우리 엔진 역시 이를 사용한다. 하지만 하드웨어 요구사항 및 아티스트의 제어 난해함으로 인해 SSAO가 아닌 방법을 사용하는 사례도 눈에 띄곤 한다.( 대표적으로 스프린터 셀 : GDC2010 : Hill Stephen Rendering Tools Splinter Cell Conviction)

회사 동료를 통해 그러한 사례를 하나 더 발견하게 되어 소개해드리고자 한다. OverGrowth란 게임에서 쓰인 방식인데, 반구로부터 64방향으로 그림자를 만들어 AO를 생성한다. 기왕 소개하는 김에 본인과 같이 나랏말쏘미 미쿡에 달아 서로 사맛디 아니할쌔 이런 전차로 미쿸말을 싫어하는 분을 위해 번역하여 올린다. 발로 번역하였으므로 미쿸말과 친한 분이라면 정신 건강을 위해 원문을 읽는 것을 권장한다.

이번 이글루스 권한 오류 대란에도 아무 피해를 입지 않은, 아무도 찾지않는 바람부는 언덕의 잡초 블로그지만, 혹시나 이 글을 퍼가도 되나 망설이시는 분이 있다면 마음놓고 퍼가셔도 된다. 어짜피 나도 포스트 작성자 허가 없이 가져와서 번역한거다.

원문 : Two-part shadow maps By David Rosen on March 17th, 2010

Two-part shadow maps

 

Overgrowth에서 쓰인 shadow map은 두가지 파트(direct shadows와  ambient occlusion)를 포함하는 일반적이지 않은 방법을 사용 한다. 이는 야외 씬의 하늘과 태양 두가지 라이트 소스에 해당한다. 사막에 집이 있는 다음 씬을 가지고 이 방식이 어떻게 작동하는지를 설명하겠다.

쉐도우 맵의 첫번째 파트는 direct shadows로 이루어져있다. 우리는 씬을 그리드로 나누어 계산하고 고정밀 뎁스 맵 쉐도우로 축적한다. 이는 매우 높은 연산 속도를 위해서 그래픽카드에서 완료된다. 다음 그림은 이 씬의 direct shadows를 나타낸다.

shadow map의 두번째 파트는 ambient occlusion(스카이 반구로 부터 얼마나 많은 빛이 도달하는 가에 대한)이다. 이는 하늘 반구의 64 포인트로부터의 direct shadows를 누적함으로써 계산된다. 다음 그림은 이 씬의 ambient occlusion을 나타낸다.

두 shadow map을 나누어서 저장할 수 있지만, 효과적으로 하기 위해서는 그 둘을 하나의 shadow map에 섞을 수 있다. 그래픽 카드는 이미지를 3개의 컬러 채널(RGB)로 저장하므로 우리는 direct shadows를 red 채널에, ambient occlusion을 green 채널에 저장할 수 있다.다음 그림은 direct shadows, ambient occlusion, 두 파트를 섞은 shadow map을 각각 나타낸다.

그림자 처리된 라이팅을 적용하기 위해서는, 우리는 direct shadows에 의한 direct 라이트와 ambient occlusion에 의한 ambient 라이트를 조절하면 하면 된다. 그다음에 direct와 ambient가 조절된 라이팅을 각각의 픽셀의 최종 라이팅에 더한다. 다음 그림에서 조절된 direct 라이팅과 조절된 ambient 라이팅과 합성된 최종 라이팅을 볼 수 있다.

이제 라이팅을 컬러맵과 합성해야하여 최종 이미지를 얻게 된다. 다음 그림에서 합산 라이팅, 컬러맵, 그리고 최종 이미지를 볼 수 있다.

최근 이 포스트에서 왜 ambient occlusion이 케릭터에게 중요한지를 상의했다. 그리고 같은 이유로 환경에도 중요하다( 공간을 정의하고 그림자 영역에 깊이를 더해주는 것을 도와준다). 좌측에 ambient occlusion이 없는 이미지와 우측에 ambient occlusion이 있는 이미지를 아래에 비교해놓았다. 구석 공간을 어떻게 정의하는 것을 도와주는지를 확인하기 위해서 어닝(차양지붕) 아래와 나무 통로를 살펴보면 된다.

많은 게임이 cascading shadow maps, screen-space 깊이 비교( 역주: SSAO를 가리키는 듯), deferred light 누적을 이용하여 직접광원과 간접광원의 근사치를 낸다. 이 텍크닉들은 강력하고 사용하기에 재밌지만 그것들의 결과물들과 하드웨어는 요구사항은 Overgrowth에는 적합하지 않다. 우리는 효과적이고 정확한 구워진  shadow map을 만드는 것이 더 나은 선택이다. 


Posted by ozlael
,