오늘 배운 내용
- URP
URP(Universal Unity Pipeline)
- 게임이 화면에 그려지는 과정 (CPU -> GPU -> 화면)
1) 정리
CPU : 이 3D 모델들을 이 카메라 시점에서 그려줘(명령, 데이터 전달)
GPU : 알겠어.
- 3D를 2D로 변환(Vertex)하고,
- 픽셀로 쪼개서(Raterization),
- 색을 채워서(Pixel/Fragment)
- 화면에 보여줄게
2) GPU관점에서 RP를 처리하는 최소 단위
2-1) Vertex(점)
- 3D 공간상의
한 점을 의미한다. 좌표(x,y,z)로 구성
2-2) Polygon(면, 다각형)
- Vertex(점)들이 모여 만들어지는 최소의 면 단위
2-3) Mesh(모델)
Mesh란?
흐름
점(Vertex) -> 면(Polygon) -> 메쉬(Mesh)
정리
- Mesh Filter: 어떤 모양(Mesh)을 쓸 것인가?
- Mesh Renderer: 그 모양을 화면에 '그리는' 담당자. (Material 참조)
- Material: 어떤
색과 질감
3-1-1 UV Mapping
- 3D 표면의 위치(점/면)와 2D 텍스처의 위치(UV 좌표)를 연결하는 과정
2D 이미지를 3D 물체 표면에 정확히 붙이는 방법
- 블랜더(blender)
- 맥스(3max)
- 마야(Maya)
3-2 Material
- 게임 화면에 보이는
질감을 담당한다
- 색상, 질감, 빛, 투명도 등 정보를 포함한다.
3-3 Shader
- Meterial이 가진 Texture 혹은 색상 정보를 조합해서 화면에 최종적으로 질감을 입히는 역할
- Shader(틀/설계도): 어떤 데이터를 담을
빈 칸(속성)을 가진다.
그래픽 처리 순서 (게임 엔진)
4가지 (거시적)
- CPU 명령 (Draw-Call)
- CPU가 무엇을 그릴지 정해서 명령을 내리면,
- Vertex Shader
- GPU가 그 물체의 `점(Vertex)을 화면 위치에 맞게 옮김
- Rasterizer
- Pixel/Fragment Shader
8가지 (미시적)
1~3단계
-
CPU & Draw-Call
- CPU -> GPU 그려라! 라고 명령하는 단계
- 메쉬(Mesh), 메테리얼(Material)
-
Vertex Shader (정점 연산)
- 3D 공간에 있는 어떤 메쉬/모델을 2D화면에 위치 시키는 것
-
Culling
3가지
[Default로 제공]
프로스텀 컬링(CPU) : 카메라 시야 아예 밖에 있는가? (시야 밖 통째로 버림)
백페이스 컬링(GPU) : 물체 면의 방향이 카메라 반대편(뒷면)을 보고있는가? (뒷면 버림)
[직접 설정]
오클루전 컬링(CPU/GPU) : 앞에 있는 물체에 완전히 가려졌는가?(가려진 부분 버림)
4~5단계 (비주얼 담당 = 색 칠하기)
- Rasterizer
- 출력될
픽셀 조각들로 쪼개는 과정
- 이
계단 현상(Aliasing)이 발생
- 추후에
Anti-Aliasing 개념까지 들어감.
-
Pixel/Fragment Shader (색상과 질감)
- 실제 색을 입히는 단계
- Texture하고 그림자 영역이 여기서 처리됨
6~7단계
-
Depth Test(Z-Test)
- 그려지는 우선순위 = 오브젝트의 앞뒤 판별
Z-Buffer(깊이 지도)
- 새로 그릴 픽셀이 기록된 값보다 뒤에 있으면 계산을 취소한다.
-
Blending
- 배경하고 어떻게 섞일것인가?
- 앞뒤 판별이 끝난 후, 배경색+현재 픽셀 합성
-
불투명
-
반투명
Q. 불투명 객체끼리 겹쳐있다면?
-
Front-to-Back
-
Z-Write ON
Q. 불투명과 투명 객체끼리 겹쳤다면?
-
Back-to-Front
-
Z-Write OFF
8단계
- Post-Processing
Bloom
Color Gradient
Anti-Aliasing
RP를 이해하기위한 소스 개념 이해하기
RP 일련과정 이해를 위한 소스
-
Vertex(점)
-
Polygon(면)
-
Mesh(모델)
-
Texture (+UV-Mapping)
-
Material
-
Shader
그래픽 처리 일련 과정
Unity가 가지고 가는 RP 이해하기 (Forward)
1) Built-in Pipeline (Legacy)
- 개발자가 내부 구조를 수정할 수 없음
- 유니티에서 제공해주는 옵션 조정만 가능
2) SRP (Scriptable-Render-Pipeline)
-> 기반 템플릿 URP/HDRP
- Built-in 한계
- SRP 초기: C#, HLSL 언어(2018)
- SRP 기반 템플릿 -> URP/HDRP(2019)
Q. URP의 장점은?
- SRP Batcher (드로우 콜 최적화)
- Forward+
- GPU Resident Drawer
1) Forward Render Pipeline
2) Deffered Render Pipeline