개발하는 리프터 꽃게맨입니다.

Screen Space Ambient Occulusion 본문

카테고리 없음

Screen Space Ambient Occulusion

파워꽃게맨 2025. 4. 14. 13:15

 

그렇게 눈에 띄는 효과는 아니지만

없으면 허전한게 앰비언트 오클루전 인 것 같습니다.

 

반구형 오프셋 커널을 만들어서

현재 픽셀을 일정 오프셋만큼 이동시켜줍니다.

그 다음 해당 픽셀의 깊이와 뎁스 버퍼에 저장된 깊이를 비교하여

뎁스 버퍼에 저장된 깊이가 더 얕다면 오클루전 팩터에 1씩 더합니다.

 

이것은 현재 픽셀 주변에 나를 가리는 차폐체가 있다는 것을 의미합니다.

 

그렇게 게산하면

 

이 장면에서

 

 

이렇게 차폐 정도를 계산할 수 있습니다.

 

이걸 라이팅 과정에서 앰비언트 부분에 곱해주면 SSAO 완성입니다.

 

 

좌: AO 가 적용되지 않음

우: AO 가 적용됨

 

차이가 좀 있는지요..?

제 눈에는 조금 납니다

 

 

좌: AO 가 적용되지 않음

우: AO 가 적용됨

 

현재는 샘플링수가 64, 노이즈의 크기는 4입니다. 꽤나 고품질이죠.

 

 

잘보면 AO 텍스처에 아티펙터같은게 있습니다.

블러링을 시도해봤습니다.

 

 

블러링을 해주면 아티펙트는 확실히 사라지는데 경계가 생깁니다.

다른 블러를 사용해야겠습니다.

 

저는 Separable Bilateral Blur 라는 블러를 사용해봤습니다.

기본적으로 가우시안 블러를 사용하는데, 픽셀 간의 깊이 차이를 고려하여 경계부분은 블러처리가 되지 않습니다.

 

 

블러가 없을 때

 

 

블러가 있을 때

 

격자 무늬가 사라진 것으로 만족입니다.

 

 

블러가 없을 때

 

 

블러가 있을 때

 

확실히 깔끔해진 모양

 

 

우려하던 경계 현상도 없어졌습니다.