Artoke

쉐이더: 앰비언트 오클루전 — 틈새 그림자

쉐이더: 앰비언트 오클루전 — 틈새 그림자

방 안을 한번 둘러보자. 책상 밑. 서랍이 살짝 열린 틈. 소매 안쪽. 옷장과 벽 사이 좁은 자리.

거기는 다 어둡다. 전등은 하나인데, 왜 유독 그런 자리만 어두울까?

답은 간단하다. 빛이 들어갈 길이 막혀서다. 이 "막힘"을 숫자로 재서 그림에 칠해 주는 방법이 앰비언트 오클루전이다. 줄여서 AO라고 부른다.

이름부터 뜯어보자

어려운 말처럼 보이지만 두 단어다.

  • 앰비언트(ambient) = 사방에 깔린 은은한 빛. 흐린 날 밖에 나가면 해는 안 보이는데도 환하다. 그게 주변광이다. 하늘 전체가 커다란 전등인 셈이다.
  • 오클루전(occlusion) = 가림. 누가 앞을 막고 서 있는 것.

합치면 "은은한 빛이 얼마나 가려졌나"가 된다.

하늘이 얼마나 보이냐의 문제

더 쉽게 바꿔 보자. 어떤 점에 개미가 한 마리 앉아 있다고 치자. 개미가 고개를 들었을 때 하늘이 얼마나 보이는가?

  • 운동장 한가운데 → 하늘이 통째로 보인다. 아주 밝다.
  • 건물 사이 좁은 골목 → 하늘이 길쭉한 띠만큼만 보인다. 좀 어둡다.
  • 장롱 밑 → 하늘이 거의 안 보인다. 캄캄하다.

AO는 딱 이걸 잰다. 물체 표면의 점 하나하나에 개미를 앉혀 놓고 하늘이 몇 퍼센트 보이는지 세는 것이다.

컴퓨터는 어떻게 셀까

사람처럼 눈으로 보지는 못한다. 대신 빛줄기를 쏴 본다.

점 하나에서 위쪽 사방으로 가느다란 선을 수십 개 쏜다. 그리고 하나씩 확인한다.

  • 하늘까지 쭉 날아갔다 → O
  • 가다가 다른 물체에 부딪혔다 → X

O가 많으면 밝게, X가 많으면 어둡게 칠한다. 그게 전부다. 아래 그림이 그 과정이다.

쉐이더: 앰비언트 오클루전 — 틈새 그림자 도식

재미있는 건 깊이다. 빨대 안쪽을 들여다보자. 입구는 그럭저럭 밝다. 조금 더 들어가면 어둡다. 더 깊이 들어가면 새까맣다. 안으로 들어갈수록 하늘이 보이는 각도가 좁아지기 때문이다.

이게 없으면 어떻게 보일까

AO를 빼면 물체가 바닥에서 붕 뜬 것처럼 보인다. 스티커를 배경 위에 대충 붙여 놓은 느낌이다.

사람 눈은 "닿았나 안 닿았나"를 그림자로 판단한다. 발밑이 살짝 어두워야 땅을 밟고 있다고 믿는다.

쉐이더: 앰비언트 오클루전 — 틈새 그림자 도식

바뀐 건 공 밑의 얼룩 하나뿐이다. 그런데 느낌이 완전히 다르다.

진짜와 가짜, 두 가지 방식

빛줄기를 수십 개씩 실제로 쏘면 결과가 정확하다. 대신 느리다. 영화처럼 한 장을 몇 시간씩 그려도 되는 곳에서 쓴다.

게임은 그럴 시간이 없다. 1초에 60장을 그려야 하니까. 그래서 꼼수를 쓴다. 화면에 이미 그려진 그림만 보고 "여기는 옆 픽셀보다 움푹 들어갔네, 좀 어둡게 하자"라고 대충 판단한다. 이걸 화면 공간 AO, 흔히 SSAO라고 부른다. 정확하지는 않지만 빠르고, 대충 봐서는 티가 잘 안 난다.

쓸 때 좋은 점

  • 조명을 대충 해도 그럴싸해진다. 전등 하나만 놓고도 장면이 갑자기 진짜 같아진다. 초보자가 가장 크게 이득 보는 부분이다.
  • 물체가 제자리에 앉는다. 떠 보이던 것들이 한 번에 바닥에 붙는다.
  • 모양이 또렷해진다. 옷 주름, 벽돌 사이, 얼굴의 콧방울 옆. 파인 곳이 살아나면서 입체감이 생긴다.
  • 따로 그림자용 조명을 잔뜩 배치하지 않아도 된다. 손이 덜 간다.

쓸 때 힘든 점

  • 화면 밖 물체는 계산에서 빠진다. SSAO의 고질병이다. 카메라를 살짝 돌려 기둥이 화면 밖으로 나가면, 기둥이 만들던 그늘이 스르륵 사라진다. 처음 보면 버그인 줄 안다.
  • 지글거린다. 빛줄기를 아껴 쏘면 화면에 모래알 같은 잡티가 낀다. 그걸 없애려고 뿌옇게 뭉개면 이번엔 그림자 경계가 흐물흐물해진다. 둘 사이에서 계속 왔다 갔다 하게 된다.
  • 세게 주면 때가 낀 것처럼 보인다. 강도 슬라이더를 올릴수록 좋아 보여서 자꾸 올리게 되는데, 어느 순간 장면 전체가 지저분하고 칙칙해진다. 다음 날 다시 보면 확 티가 난다.
  • 검은 테두리가 생긴다. 물체 가장자리에 있지도 않은 굵은 외곽선이 둘러진다. 흔히 헤일로라고 부른다.
  • 공짜가 아니다. 품질을 올리면 프레임이 떨어진다. 결국 "어디까지 포기할까"를 정해야 한다.

정리하면, 켜는 건 1초면 되지만 적당히 맞추는 데 오래 걸린다. 대부분은 자기가 생각한 것보다 약하게 주는 쪽이 맞다.

직접 확인해 보기

지금 손을 펴서 손가락을 서로 붙여 보자. 손가락 사이가 어두워진다. 떼면 밝아진다. 전등은 그대로인데 말이다.

컵 안쪽도 좋다. 위에서 내려다보면 바닥 가장자리, 벽과 만나는 둥근 모서리가 제일 어둡다. 거기가 하늘이 가장 안 보이는 자리다.

이걸 한 번 눈으로 확인하고 나면, 3D 화면에서 AO가 켜졌는지 꺼졌는지 바로 알아보게 된다.

한 줄 정리

앰비언트 오클루전은 "여기서 하늘이 얼마나 보이나"를 재서 틈새를 어둡게 칠하는 일이다. 계산은 단순한데, 있고 없고의 차이는 꽤 크다.

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기