상세 컨텐츠

본문 제목

쉐이더(Shader) 와 랜더링 파이프라인(Rendering Pipeline)

Tech/Unity 유니티

by 2024. 1. 18. 16:58

본문

쉐이더(Shader)

쉐이더(Shader)는 픽셀의 색을 정하는 함수를 말한다.

그치만 조금 더 아트 관점의 시각을 첨가해서 말하면, 쉐이더(Shader)는 오브젝트의 음영과 색상을 계산하여 다양한 재질을 표현하는 것을 말한다.

 

 

렌더링 파이프라인(Rendering Pipeline : 렌더링 순서)

랜더링은 다음과 같은 순서로 이루어진다.

 

1. 버텍스 쉐이더(Vertex Shader)

버텍스는 그래픽스에서 정보를 가진 점들을 말한다.

버텍스는 위치, 인덱스, UV, Normal, color 등의 정보를 가지고 있다.

GPU는 이 버텍스 정보들을 받아, 버텍스 쉐이더를 통해 좌표 변환을 시켜준다.

처음에 버텍스 정보들은 각각의 Object가 중심인 Object 공간에서 Local 위치 좌표를 가지고 있다.

이를 (0, 0, 0) 좌표가 중심인 World 좌표로 변환을 시킨다. 유니티에서는 이 World 좌표를 Model 이라고 부른다.

여기서 World 좌표를 카메라 중심의 좌표로 변환한다. 이 때 이 행렬을 view 행렬이라고 한다. 또한 이를 Orthographic Projection 이라 부르기도 한다.

여기서 원근감을 추가하고 싶으면 Projection 행렬을 곱해준다.

버텍스 정보에 modelviewprojection matrix 를 곱해주는게 방금까지의 과정이다.

vertex shader(좌표변환)
버텍스 쉐이더(이득우 유튜브)

 

2. 래스터라이저(Rasterizer)

3D 오브젝트를 모니터에 보이도록 픽셀화하는 것.

사진을 찍는 순간 3D 오브젝트가 2D 이미지가 되는 것을 생각하면 된다.

 

3. 픽셀 쉐이더(Pixel Shader), 프래그먼트 쉐이더(Fragment Shader)

조명, 텍스처, 그림자와 각종 특수효과 등을 연산한다.

 

 

 

(출처 : 테크니컬 아티스트를 위한 유니티 쉐이더 스타트업, 정종필 저, 비엘북스)

관련글 더보기