쉐이더

3D 컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 색을 정해주는 함수

그래픽 데이터의 음영과 색상을 계산해서 모니터에 다양한 재질로 표현할 때 쓰이는 하나의 수단

*언리얼 : 쉐이더 = 메터리얼


렌더링 파이프라인

1. 오브젝트 데이터 받아오기

Vertex로 이루어진 오브젝트의 데이터를 받아온다. (인덱스 넘버, 포지션, 노멀, 컬러 등)

2. 정점 (Vertex) 쉐이더

로컬 좌표계를 갖고있는 오브젝트에게 월드 변환 행렬(월드 좌표계)를 곱해준다. 이때 월드의 중심점이 (0,0,0)이 된다.

로컬 좌표계 : 오브젝트 개인이 갖고 있는 좌표계

월드 좌표계(Model) : 하나의 월드(공간)을 생성하면 월드가 갖게되는 좌표계

월드 좌표계에 카메라 행렬을 곱해 월드 좌표계에 있던 오브젝트들의 위치값이 카메라를 중심으로 얼마나 떨어져 있는가로 연산된다. 이렇게 카메라 행렬을 곱해준 이후부터 오브젝트들을 화면에서 볼 수 있다.

카메라 행렬 : View 혹은 Orthographic Projection이라 불림.

③카메라 행렬로 정렬된 버텍스들에 원근감을 부여해주기 위해 프로젝션 행렬을 곱해준다. 이로써 화면에 찍힐 준비는 완료 되었으나 픽셀 쉐이더를 거치지 않아, 3D 공간에 존재하는 오브젝트가 될 뿐이다.

+이 단계에서 가벼운 라이트를 연산해줄 수 있는데, 이를 고라우드 쉐이딩(Gouraud Shading)이라고 한다.

*Gouraud Shading = Smooth Shading

3. 래스터라이저(Rasterizer)

3D 오브젝트가 모니터에 보이도록 픽셀화 시키는 것 = 가상 공간에서 입체로 존재하던 오브젝트는 픽셀이 되고, 픽셀 쉐이더에서 픽셀 데이터에 접근하게 된다.

4. 픽셀쉐이더

여태 작업해온 오브젝트는 아무런 그래픽 데이터가 없는 상태이나, 픽셀쉐이더를 가동되면 특수효과를 연출하는 오브젝트가 탄생하게 된다.


빛의 기본 원리

모니터 : 가산혼합의 원리로 색을 표현한다. 일반적으로 R,G,B로 구성된 3개의 서브픽셀로 이루어져 있다.

픽셀 쉐이더 : 한 픽셀의 색을 결정하는 코드이다. 여기에 삽입되는 색을 나타내주는 값들은 보통 %(percentage)방식으로 작성하며, float형식으로 해주는 것을 원칙으로 한다. (ex: 0.5f, 0.5f, 1.0f)

색을 나타내주는 값 중 가장 큰 값은 100%의 1.0f이며, 이에 따라 수치를 조절해준다.

색을 반전(invert)시켜주고 싶을 때 : 각 값을 a, b, c라고 하면, 1.0-a, 1.0-b, 1.0-c를 해주면 반전 색상이 나타나게 된다. 





프로그래머 지망하는 그림그리는 사람

두얀님의 창작활동을 응원하고 싶으세요?