Transcript SSAO
SSAO 관하여 방원영 ◈ SSAO 를 발표과제로 선택한 이유 Kasa 에서 발표 한적이 없다. SSAO 가 처음 소개된 게 얼마 되지 않았지만, 그사이 많은 새로운 방법들이 소개 되어 졌다. 실제로 작년에 적용해봤지만, 생각처럼 그럴싸하게 나 오지 않아서 … ( 크라이텍 처럼 왜 안되는 거야~ T.T) 지금은 SSAO 를 웬만하면 다 사용하는 아주 흔한 주제 지만, 보기 좋게 구현 하기는 어렵다고 생각하고, 여기 계신 다른 분들과 실제로 적용에 관해 이것저것 이야기 하고 싶었습니다. ◈ 오늘 다루게 될 SSAO ◈ 목차 SSAO 란? 처음으로 소개된 SSAO Starcraft II SSAO SSAO 실제로 적용하기 지금까지의 SSAO 문제점과 효용성 SSDO ?? Siggraph 2010 토이 스토리 SSAO ◈ SSAO 란? Global illumination 의 일부분. (그 중에 AO 의 일부분) 주변광(Ambient) 는 항상 우리주변에는 일정한량의 광원이 비춘 다는 가정에서 출발. Ambient Occlusion 은 광원의 도달하지 못한 양의 합 광원의 합은 현재 렌더링 되는 점의 평면 위의 반구로 그 량을 구한 다. (간접광의 힛팅 수) 구석이나 틈은 언제나 주변보다 어두운 이유가 이 때문이다. 하지만 이러한 구의 차폐를 결정하는 것도 여전히 실시간으로는 아주 계산 양이 많음 구의 중심을 원점으로 일정한 거리의 ray ( kernel ) 로 샘플링 해서 AO의 근사치를 Screen Surface 에서 얻는 것이 SSAO ◈ 초기모델 SSAO 특징및 구현 Scene 의 Depth 를 필요로 함. SSAO 맵을 만드는 과정에서 View 각 2D 포인트에 서 Projection Ray 가 필요함 (3D 포인트를 계산 하 기 위해, 참고 주소 http://www.iquilezles.org/www/articles/ssao/ssa o.htm ) Projection Ray 와 Depth 로 구해진 점 P 에서 각 kernel 로 뻗은 점에서 그 위치 z 와 Depth 와 비교 후 Occlusion 결정 ◈ 결과 ◈ 초기모델 SSAO 의 문제점 Example showing the benefits from edges highlight -> 세월이 좀 지나니 단점이 되었다. 무조건 구로 샘플링 하다 보니 샘플의 거의 반은 쓰 이지도 않음 가뜩이나 적은 샘플링 Popping 의 원인이 된다. ( popping 을 그나마 피하기 위해서는 kernel 의 방향 이 한 평면에 있지 않도록 적절히 분산해야 함) ◈ Demo ◈Starcraft II (1) Depth 외에 Normal 을 필요로 한다. ( Normal 을 쓰게 되면 면 뒤에 샘플링 되는 kernel 을 걸러 낼 수 있다. 반대방향이면 flip) Depth 와 Normal 을 같은 RednerTarget 에 렌더링 ( 16F RGBA 에 하든지 , 32 비트 두 바이트는 depth 로, 나머지 바이트는 normal x,y 저장후 사용시에 계산) ◈Starcraft II (2) - heuristics Occluding Surface 가 sampler 포인트 보다 뒤에 있 으면 OV (occlusion value) = 0 둘의 차이가 약간 나면 높은 OV 값 아주 큰 차이가 나면 (어느 특정값 이상 차이) 다시 또0 ◈Starcraft II (3) – SSAO맵 다듬기 샘플링 kernel 의 텍스쳐를 사용한 random 회전 (다 른 예제 다하는 방식) 그 다음 패턴을 상쇄 하기 위해서 가우스 블러를 한 다. Normal 과 Depth 에 값의 임계 값을 설정해서 이상의 차이가 나면 가우스 weight 값 0 SSAO 샘플링 ray 를 두 단계로 나눔 , 하나는 짧은 거리 용( 약 전체 샘플의 ¼ 정도) 나머지는 넓게 퍼지지게 긴 거리용. ◈ SSAO맵 적용하기 SSAO 맵 생성은 Post Process 에 생성되지만 , 마지막에 1) 2) 3) 덮어 버리면 안된다!! (라이트 있는 부분이 시커멓게 그 림자가 드리운다) 정석 (크라이시스 , 스타 크래프트2) Depth 와 Normal 만 따로 렌더링 다시 Scene 을 렌더링 할때 ambient 칼라로 이용 Deffered 렌더링이 아니면 조금 부담스러운방식 ◈ SSAO 지금까지 기술들의 단점 1) Depth 가 연속성임을 가정했고, 두께를 모름으로 인해 생기는 오류 ◈ SSAO 지금까지 기술들의 단점 2) 샘플링 스텝 사이의 한계 ◈ 그래도 SSAO 를 사용하는 이유 1) 추가 적인 기하학적 데이터가 전혀 필요 없다. (Scene 의 복잡도와 전혀 무관하다) 2) 구현에 비해 얻어 지는 결과물이 너무 좋다. 3) 현재도 진행형이며, 점점 더 기술이 나아 지고 있다.