1. Direct3D
1.1 Geometry Shader
1.1.1 Geometry Shader
- 테셀레이션 단계를 사용하지 않는다고 할 때, Vertex & Pixel Shader 단계 사이에 있는 생략 가능 단계
- 정점 셰이더는 개별 정점들을 입력받는 반면 기하 셰이더는 온전한 기본 도형을 입력 받음
- 한 삼각형의 정점 세 개를 입력받아 기본도형들의 목록을 출력, 기하구조를 새로 생성 및 파괴 가능
- 하나의 입력 기본도형을 여러 개의 다른 기본도형들로 확장, 주어진 조건에 따라 특정 기본 도형 폐기
- 하나의 점으로부터 사각형으로 확장
- 기하 셰이더의 프로그램을 작성할 때 기하 셰이더의 한 실행에서 출력할 정점들의 최대 개수를 지정
- 최대 정점 개수 특성을 지정, 숫자의 의미는 한 번의 실행에서 출력할 최대 정점 개수
[maxvertexcount(4)]
- 두 종류의 매개변수를 받는데 하나는 입력 매개변수, 하나는 출력 매개변수
- 입력 매개변수는 항상 기본도형을 정의하는 정점들의 배열, 기하 셰이더가 받는 기본도형의 키워드를 붙여야 함
point, line, triangle, lineadj, triangleadj
- 출력 매개변수는 항상 스트림 형식, 기하 셰이더가 출력하는 기본도형을 정의하는 정점들의 목록을 담음
- 출력 스트림 목록에 정점을 추가할 때 함수 적용
- 스트림 형식은 템플릿 형식으로 출력 정점의 정점 형식을 지정
void StreamOutputObject<OutputVertexType>::Append(OutputVertexType v);
PointStream<OutputVertexType>, LineStream<OutputVertexType>, TriangleStream<OutputVertexType>
- 위의 모든 방식을 참조하여 기하 셰이더를 생성한 값은 밑의 코드 참조
[maxvertexcount (4)] void GS(line VertexOut gin[2], inout TriangleStream<GeoOut> triStream);
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 26. Direct3D Compute Shader (0) | 2023.06.21 |
---|---|
[Direct11] 25. EX App Program - Billboard (0) | 2023.06.20 |
[Direct11] 23. EX App Program - Mirror (0) | 2023.06.19 |
[Direct11] 22. Direct3D Stencil (0) | 2023.06.19 |
[Direct11] 21. EX App Program - Fog System (1) | 2023.06.17 |