티스토리 뷰
랜더링 파이프 라인은 물체가 그려지는 과정이다. 3차원 정보들이 2차원으로 그려지는 과정이라고 생각하면 된다.
랜더링 파이프 라인을 복습하기 전에 일단 쉐이더 부터 되짚어 보자.
쉐이더는
1. Vertex Shader
2. Hull Shader
3. Domain Shader
4. Geometry Shader
5. Pixel Shader
6. Compute Shader
이렇게 여섯가지가 있다.
1번부터 5번까지는 모두 랜더링 파이프라인에 사용되며
2번 3번인 훌 쉐이더와 도메인 쉐이더는 테셀레이션 과정에 사용된다.
전체적인 파이프라인 과정은 다음과 같다.
1. IA - Input Assembler
2. Vertex Shader
3. Tessellation or Geometry Shader
4. Rasterize
5. Pixel Shader
6. Depth Stencil State Test
7. Blender State Test
이렇게 7단계로 이루어진다.
1. IA부터 살펴보자. 말 그대로 그릴 물체의 정보를 입력하는 것이다. 랜더링 관련 정보를 입력하고 받아서 파이프라인을 시작하도록 한다.
2. Vertex Shader
정점 하나당 실행되는 함수이다. 정점을 투영 좌표계로 옮긴다. 투영 좌표계는 NDC(Noramlize Device Coordinate)라고 부르며 정규 좌표계라고도 부른다. 투영 좌표계는 2번 단계의 마지막에서 화면 밖으로 벗어난 그림? 오브젝트들을 모두 자르게 된다. 그리고 중심점이 0,0 이고 가로세로 길이가 2인 좌표계를 이용하는 것이다. 이러면 계산이 단순해진다!
3. Tessellation or Geometry Shader
테셀레이션은 우리가 멀리서 사물을 볼 때 단순화 되며 사물의 vertex가 줄어들며 도형이 단순화 되어 보이는걸 말한다. 이 외에 뭐라고 설명할지 좀 난감하네..
4. Rasterize
래스터라이즈는 화면에 한 면이 있을때 그 면 안에 있는 점(픽셀)들을 유추하는 것이다. 폴리곤 내부 픽셀 검출이라고도 말할 수 있다. 복잡한 계산이 아니며 각 점들에 대한 계산(노가다)이 필요하다고 한다! 뒤의 단계인 픽쉘 세이더를 호출할 정점들을 찾아내는 단계라고 할 수 있다.
5. Pixel Shader
래스터라이즈에서 검출된 정점들마다 함수를 호출한다.
<OM - Output Merge 단계 : 출력 병합 단계>
6. Depth Stencil State Test
픽셀의 깊이값을 깊이 텍스처와 비교해서 판정
7. Blender State Test
혼합 공식에 따른 블랜딩 -> 이 후 랜더 타겟에 출력된다.
정점마다 함수 호출이 있는 쉐이더 과정에서 우리는 고수준쉐이더 언어 High Level Shader Language (HLSL) 을 사용하게 된다. HLSL은 DX에서 사용하는 쉐이더 언어이다. GPU를 컨트롤하기 위한 언어로 이 HLSL를 거친 코드들을 저장해 두는곳이 BLOB이라고 한다. HLSL에서는 Sementic이라는 정점 데이터를 어떤식으로 세밀하게 나눈지에 관한 추가정보가 있다. 하나의 데이터 덩어리를 어떤식으로 나누는지에 대한 정보로 순서는 딱히 상관 없으며 보통 Vec4-color와 Vec3-position으로 되어있다.
'공부 > DirectX' 카테고리의 다른 글
[DX12] 기초 (0) | 2023.09.09 |
---|---|
쉐이더 관련 포스트 모음 (0) | 2023.08.21 |
물체그리기 (0) | 2022.03.27 |
DX11기초 (0) | 2022.03.27 |
다이렉트X 11 시작 (0) | 2022.03.27 |
- Total
- Today
- Yesterday
- 해시
- 스택/큐
- Ue
- 디자인 패턴
- 누적합
- Unreal 5.1
- Heap
- level3
- 재귀
- greedy
- IMGUI
- sort
- LV3
- 너비우선탐색
- 개인공부
- 힙
- C++
- 고득점 Kit
- 채팅서버
- LV2
- 프로그래머스
- FPS
- 정렬
- 데디케이티드
- 고득점kit
- DFS
- 완전탐색
- BFS
- 탐욕법
- UE5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |