매 프레임마다 배경, 캐릭터, 이펙트, UI가 모두 그려지는 과정이 있다.
가장 먼저 그려지는 것은? 먼저 계산이 끝난 녀석부터 그린다.
뒤에 있는 물체 앞에 물체가 덧 그려지면
이를 오버드로우라고 한다.
그러나 앞에 있는게 먼저 그려지고
뒤에가 그려지면 문제가 생긴다.
그래서 앞에 그려져 있는게 누구인가 라는 정보가 필요하다.
그 정보는 픽셀 단위로 존재한다.
앞뒤 판정을 위해, 각 픽셀마다 카메라 기준으로 가장 가까운 오브젝트의 깊이값이 저장되어 있는 데이터 시트가 필요하다.
이 깊이값을 Z 버퍼라고 부른다.
그래픽 카드는 여러 버퍼를 렌더링하고 있다.
눈에 보이지 않지만, 그림으로 그려서 가지고 있는 것을 버퍼라고 한다.
뒤 오브젝트가 나중에 그려져도
앞 오브젝트가 미리 써놓은 Z 버퍼값을 참조해 해당 부분을 그리지 않는다.
추가정보
그래픽 카드에 있는 깊이 버퍼를 가져와 사용하기 쉽지 않다.
쉐이더에서 _CameraDepthTexture를 사용하여 깊이값을 텍스쳐로 받아와 처리할 수 있다.
단, Deferred rendering 모드로 해야 정상작동한다. (포워드 렌더러에서도 만들 수 있지만 생략)
'셰이더 (Shader) > 유니티 쉐이더 스타트업 - 정종필' 카테고리의 다른 글
[Unity/Shader] 파트16-3 : 알파 블렌딩 제작 (0) | 2023.08.25 |
---|---|
[Unity/Shader] 파트16-2 : 반투명 (알파 블렌드 Alpha Blend) (0) | 2023.08.23 |
[Unity/Shader] 파트15-2 : Normalmap이 적용된 Cubemap (0) | 2023.08.23 |
[Unity/Shader] 파트15-1 : Cubemap 적용 (0) | 2023.08.22 |
[Unity/Shader] 파트14-8 : Diffuse Wraping 기법 응용 (0) | 2023.08.22 |
댓글