1. 개요[편집]
| 앰비언트 오클루전 Ambient Occlusion | |
|---|---|
| 약칭 | AO |
| 분야 | 실시간 렌더링 × 전역 조명 근사 |
| 역할 | 주변광 차폐 근사, 접촉 그림자 |
| 대표 기법 | SSAO, HBAO, GTAO |
| 관련 | 전역 조명, 레이 트레이싱 |
구석은 어둡다. 왜 어두운지 정확히 계산하긴 비싸니까, 그냥 구석이면 어둡게 칠하자.
앰비언트 오클루전(Ambient Occlusion, AO)은 한 지점이 주변 기하 구조에 의해 얼마나 가려져 주변광(ambient light)을 덜 받는지를 근사해 어둡게 표현하는 실시간 렌더링 기법이다. 물체의 틈새, 주름, 두 면이 만나는 구석, 물체가 바닥에 닿는 접촉면을 은은하게 어둡게 만들어, 밋밋한 3D 장면에 입체감과 무게감을 부여한다.
물리적으로 정확한 전역 조명을 실시간으로 계산하는 건 여전히 비싸다. AO는 그 중에서 “얼마나 가려졌는가(occlusion)“라는 한 조각만 떼어내 값싸게 근사하는 실용적 타협이다. AO를 껐다 켜보면 그 효과가 극명하다. AO가 없으면 물체들이 배경 위에 붕 떠 있는 것처럼 보이고, 켜는 순간 장면에 착 달라붙는다. 그래서 게이머들이 옵션에서 켜는 순간 프레임이 깎이는 걸 알면서도 켜는 항목이기도 하다.
2. 물리적 정의[편집]
이론적으로 한 점 에서의 앰비언트 오클루전은 그 점의 반구 위에서 얼마나 많은 방향이 다른 기하에 막히지 않고 하늘로 뚫려 있는지를 적분한 값이다.
여기서 는 방향 가 가려지지 않았으면 1, 막혔으면 0인 가시성 함수(visibility function)이고, 는 표면 법선과의 코사인 가중치다. 값이 1이면 완전히 트여 있고(밝음), 0에 가까우면 사방이 막혀 있다(어두움). 문제는 이 적분을 정직하게 하려면 각 픽셀마다 반구 전체에 레이를 쏴야 한다는 것. 그래서 실시간 렌더링의 역사는 이 적분을 어떻게 싸게 근사하느냐의 역사이기도 하다.
3. SSAO: 화면 공간의 혁명[편집]
2007년 크라이텍(Crytek)이 게임 크라이시스에서 선보인 SSAO(Screen-Space Ambient Occlusion)는 AO를 대중화한 결정적 기법이다.1 핵심 아이디어는 3D 장면 전체를 뒤지는 대신, 이미 렌더링된 깊이 버퍼(depth buffer)만으로 오클루전을 근사하는 것이다.
각 픽셀 주변에 반구 모양으로 여러 개의 샘플 점을 흩뿌린 뒤, 각 샘플의 깊이를 깊이 버퍼에 저장된 실제 표면 깊이와 비교한다. 샘플이 표면보다 뒤에 (즉 다른 기하에 가려져) 있으면 그만큼 오클루전에 기여한다. 화면에 보이는 것만 다루므로 장면 복잡도와 거의 무관하게 상수 시간에 가깝고, 공간 분할 자료구조나 경계 볼륨 계층 같은 가속 구조도 필요 없다. 대신 화면 밖 기하는 오클루전에 기여하지 못하고, 샘플 수가 적으면 노이즈가 껴서 블러로 뭉개야 하는 한계가 있다.
4. HBAO·GTAO 계보[편집]
SSAO 이후 더 정확한 근사를 향한 개량이 이어졌다.
| 기법 | 등장 | 특징 |
|---|---|---|
| SSAO | 2007 | 깊이 비교 기반, 최초의 실시간 화면공간 AO |
| HBAO | 2008 | 지평선 각도 적분, 물리적으로 더 타당 |
| HBAO+ | 2014 | HBAO 최적화·품질 개선판 |
| GTAO | 2016 | 지상 실측 기반 정규화, 다중 산란 근사 |
HBAO(Horizon-Based Ambient Occlusion)는 깊이 버퍼를 높이장(height field)으로 보고, 각 방향으로 “지평선 각도(horizon angle)“를 찾아 하늘이 얼마나 트여 있는지를 적분한다. 단순 깊이 비교보다 이론적으로 근거가 탄탄하다. GTAO(Ground-Truth Ambient Occlusion)는 오프라인 레이 트레이싱으로 구한 “정답(ground truth)“에 맞춰 근사를 정규화하고 다중 산란을 근사해, 화면공간 기법 중 물리적으로 가장 정확한 축에 든다.2 언리얼·프로스트바이트 같은 상용 엔진이 이 계보를 채택했다.
5. 접촉 그림자와 시각적 역할[편집]
AO가 만드는 가장 중요한 시각 신호는 접촉 그림자(contact shadow)다. 컵이 테이블에 놓였을 때 컵과 테이블이 만나는 바로 그 경계에 생기는 미세한 그늘, 벽과 바닥이 만나는 구석의 어둠 — 이것이 물체를 공간에 “앉히는” 역할을 한다. 인간의 시각은 이 접촉 그늘을 무의식적으로 깊이 단서로 쓰기 때문에, AO가 빠지면 아무리 물리 기반 렌더링을 잘 해도 물체가 붕 떠 보인다.
AO는 보통 광원과 무관한 주변광 항에만 곱해진다. 즉 직접광 그림자(그림자 매핑)와는 별개로 작동하며, 둘은 서로 보완 관계다. 그림자 매핑이 “특정 광원이 만드는 뚜렷한 그림자”를 담당한다면, AO는 “어디서 오는지 모를 은은한 주변광이 구석에서 덜 들어오는” 효과를 담당한다.
6. 전역 조명과의 관계[편집]
AO는 엄밀히 말하면 전역 조명의 아주 거친 근사다. 진짜 전역 조명은 빛이 표면 간에 여러 번 튕기며 색이 번지는 색 번짐(color bleeding)까지 계산하지만, AO는 오직 “얼마나 가려졌는가”라는 흑백 정보만 다룬다. 색은 없고 그림자만 있는 셈이다.
최근에는 하드웨어 레이 트레이싱이 보급되며 화면공간의 한계(화면 밖 기하 무시, 노이즈)를 벗어난 RTAO(Ray-Traced Ambient Occlusion)가 등장했다. 각 픽셀에서 반구로 실제 광선을 쏴 가려짐을 직접 판정하므로 물리적으로 정확하지만, 그만큼 비싸서 노이즈 제거(디노이징)와 세트로 쓴다. AO가 전역 조명 전체로 대체되려면 아직 갈 길이 멀지만, 방향은 분명히 “근사에서 실측으로” 흐르고 있다.3
7. 관련 문서[편집]
8. Footnotes[편집]
-
SSAO를 만든 크라이텍의 뷰라스 카이날라(Vladimir Kajalin)의 이름을 따서 초기엔 “카이날라 AO”로도 불렸다. 크라이시스는 당대 “이 게임 돌아가면 컴퓨터 좋은 거다”의 대명사였는데, 그 무겁던 이유의 상당 부분이 이 SSAO였다. ↩
-
GTAO 논문(Jimenez et al., 2016, Activision)의 제목이 대놓고 “Practical Real-Time Strategies for Accurate Indirect Occlusion”이다. 학계가 “실측(ground truth)에 맞춘다”는 표현을 쓰기 시작한 게 이 무렵부터 렌더링이 ‘그럴듯하게’에서 ‘물리적으로 맞게’로 넘어간 신호다. ↩
-
AO는 사실 물리적으로 완전히 정당한 개념은 아니다. 실제로는 주변광이 균일하게 온다는 가정 자체가 틀렸기 때문. 그래서 렌더링 이론가들은 AO를 “물리적으로는 사기지만 시각적으로는 유용한(physically wrong but visually useful)” 대표 사례로 꼽는다. 그래도 안 쓰면 그림이 뜬다. 사기꾼이 일은 잘한다. ↩