[유니티] Z-Buffer & Color Buffer
* 본문은 아래 영상을 정리한 글입니다.
출처 : https://www.youtube.com/watch?v=CVGlOfQMNdQ
------------------------------------------- ------------------------------------------- -------------------------------------------
화면에 그리는 순서
1. Vertex Shader
2. Culling & Depth Test
3. Fragment Shader
4. Alpha Test
5. Blending
Z Buffer ? 눈(카메라) ~ 해당 픽셀이 가리키는 공간까지의 거리, 즉 Depth를 담아두는 버퍼
동일한 렌더큐(From Shader = 2000, Transparent = 3000 그것)일 때, 카메라로부터 먼 오브젝트부터 렌더링한다.
아래는 Z-Buffer와 Color Buffer, 그리고 그리는 방식을 보기 쉽게 설명한 그림
1번부터 64번까지의 픽셀이 있다고 가정한다.
초록색 오브젝트의 깊이값은 30이다.
초록색 오브젝트가 차지하는 픽셀의 번호는 10~15, 18~23, 26~31, 34~39, 42~47, 50~55 이다.
빨간색 오브젝트의 깊이값은 27이다.
빨간색 오브젝트가 차지하는 픽셀의 번호는 19~22, 27~30, 35~38, 43~46 이다.
초록색 오브젝트가 빨간색 오브젝트보다 더 멀리 있으므로(깊이값이 더 크므로), Z-Buffer의 알맞는 픽셀 번호에 자신의 깊이값을 넣고, 초록색 오브젝트를 먼저 그린다(Color Buffer의 알맞은 번호에 색상값을 넣는다.)
그 후, 빨간색 오브젝트가 Depth Buffer와 Color Buffer의 자신에 알맞는 번호에 색상값을 넣는다.
이 과정에서, 자연스럽게 앞에 있는 오브젝트가 뒤에 있는 오브젝트의 깊이값(Z-Buffer)과 색상값(Color Buffer)을 덮어씌운다.
결론적으로, Z-Buffer와 Color Buffer 값은 앞에 있는 오브젝트가 계속해서 덮어씌우게 된다.
게임에서 시각 효과를 만드는 법은 Z Buffer를 수정하는 방법이 있다. 유니티에서는 이에 3가지 방법을 제공한다.
1. Cull (Back / Front / Off)
2. ZWrite
3. ZTest