[쉐이더란]
3d 컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 색을 정해주는 함수
[랜더링 파이프라인]
1. 오브젝트 데이터 받아오기
- 그래픽카드는 버텍스로 이루어진 물체의 데이터 값을 받아옴
- 버텍스는 인덱스 넘버, 포지션, 노말 컬러 등의 정보을 가지고 있음
- 그래픽카드에선 이 버텍스 정보들을 가지고 삼각형 면을 생성 하게 되는데, 오브젝트 기본적인 형태가 갖추어 지게됨
- 이 정보들을 버텍스 쉐이더로 넘김
2. 정점(버텍스) 쉐이더
- 위 데이터을 가지고 쉐이딩 작업이 가동되기 시작함
- 첫번쨰 과정이 정점 쉐이더이며, 좌표 변환을 하게됨. 이때 쉐이더를 제어하는 데이터에 접근하고, 각종 버텍스 연산을 자유롭게 조절할 수 있게됨
- 로컬 좌표계 * 월드 변환 행렬 = 월드 좌표계
- 월드 좌표계 * 뷰 변환 행렬= 카메라 좌표계
- 카메라 좌표계 * 프로젝션 행렬 = 클립 좌표계
- 여기까지 출력을 했다면, 여전히 텍스쳐도 음영도 없는, 폴리곤 덩어리가 생성됨. 아직 픽셀쉐이더를 거치지 않았기 때문에 결과적으로 모니터로 볼수도 없는 단지 3d공간에 존재하는 오브젝트임
3. 래스터라이져
- 현재까지 좌표계가 조정된 버텍스를 이용해서 화면에 오브젝트를 출력할 준비가 되었고, 모니터에 오브젝트을 출력함
- 이 오브젝트가 모니터에서 표현될때 어느 픽셀로 표현 될 것인지를 나타내는 장치를 거치게 되는데,
이를 래스터라이져라 부르며 2D 픽셀로 표현되는 세계로 넘어오게됨
- 3d 오브젝트는 모니터에 보이도록 픽셀이 되었고 이 과정을 래스터화 라고 함
- 모니터에 보이려면 3d 오브젝트을, 2d 이미지로 만들어야하고 함
4. 픽셀쉐이더 / 프래그먼트 쉐이더
- 모니터까지 넘어온 3d 그래픽 데이터는 화면에 픽셀로 찍히게 됨.
- 여기에 픽셀쉐이더가 가동되면서 조명과 텍스처, 그림자 및 특수효과을 연산하게 됨.
| GPU
|
정점데이터 => | [[버텍스 쉐이더]] == 정점위치==> [[래스터라이저]] == 픽셀위치 ==> [[픽셀 셰이더]]
| (정점 좌표변환) (픽셀 색상결정)
|
--------------------------------------------
'Unity > Shader' 카테고리의 다른 글
Function (0) | 2022.01.03 |
---|---|
SubShader (0) | 2022.01.03 |
Properties (0) | 2021.12.24 |
기본 쉐이더 형태 (0) | 2021.12.24 |
유니티 쉐이더의 작성요령 (0) | 2021.12.22 |