Shader/Urp shader

[URPShaderGraph] Alpha & Depth buffer

구찬애 2023. 8. 2. 00:29
반응형

앞뒤 판정을 위해서, 각 픽셀마다 카메라를 기준으로 가장 가까운 오브젝트의 깊이 값이 저정되는데 이게 Depth buffer 다.

가까운 쪽이 1이고 먼쪽이 0이라는 것 (1은 흰색 / 0은 검은색)

만약 두 플랜이 같은 Z값(포지션)에 존재한다면 두 플랜이 겹쳐서 서로 지글거리는 노이즈 현상이 발생하는데 이것을

Z fighting 이다.

위키

자.. 정리 해보면 게임의 오브젝트를 그리는 순서는 정해져 있지 않고, 오브젝트가 그려질 때 마다 Z버퍼를 참고하여 앞뒤 판정을 한후 그릴 픽셀과 안 그릴 픽셀을 부분한다는 것이다...

 

  • 불투명(Opaque)를 먼저 그리고
  • 반투명(Transparent)를 나중에 그린다.
  • 반투명 오브젝트끼리는 뒤에서 부터 그린다.(알파소팅)
  • 알파소팅을 써봤자 완벽하게 앞뒤 판정을 제대로 하긴 힘들다.
  • 알파블랜딩 쉐이더는 Z 값을 사용하지 않는다.
  • 그래서 알파 테스팅 / 알파 클리핑을 사용한다. (PC에서는 알파블랜딩보다 연산이 더 빠르다)
  • 단점은 외곽을 부드럽게 표현할수 없다.

 

반응형