일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 오류
- 에러
- shader
- c#
- 유니티
- NavMesh
- 쓰는 법
- 애니메이션
- 깃허브
- 프로퍼티
- 리팩토링
- 속성
- tutorial
- 2판
- 최적화
- Final IK
- 메모리
- 유니티 그래픽 최적화
- github
- unity
- 유니티 그래픽스 최적화 스타트업
- 사용법
- 애님
- 익명 타입
- 튜토리얼
- 리깅
- 파이널 IK
- Effective C#
- 쉐이더
- error
- Today
- Total
참치김밥은 최고의 한식이다
[유니티] 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
'Unity' 카테고리의 다른 글
[유니티] TMP_Text와 TextMeshProUGUI의 차이? (2) | 2023.12.11 |
---|---|
[유니티] Stencil (0) | 2023.11.20 |
[Unity] 처음으로 직접 만들어 본 HLSL 쉐이더 - 눈 쌓인 쉐이더 (0) | 2023.10.11 |
[Unity] Particle 회전 시키는 방법 (0) | 2023.09.08 |
[Unity] NavMesh 모르던 기능 (0) | 2023.09.07 |