나는 (이전의) 고용주를위한 3D 게임 프로그래밍과 나의 인디 게임을위한 나만의 커스텀 엔진을 공정하게 공유했습니다.
처음에는 Direct3D 9와 D3DX9로 시작했습니다. D3DX9는 거의 모든 작업을 수행했으며 셰이더 측면에서 전혀 생각할 필요가 없었습니다.
그 후 첫 Direct3D 9 셰이더를 작성했지만 대부분 내가 한 모든 작업에 매우 간단한 셰이더를 사용했습니다.
내 게임 엔진의 최신 반복에서 Direct3D 11로 이동하여 그와 함께 많은 셰이더를 만들었습니다. GPU에서 GPU 스키닝, GPU 계산 입자, 많은 조명 및 사후 처리 효과를 모두 수행했습니다. 정말 멋진 물건.
지금까지 정점 및 픽셀 / 조각 셰이더 만 사용했습니다. 여전히 아직 수행하지 않은 작업이 많이 있지만 정점 및 픽셀 / 조각 셰이더의 기능과이 기능이 전체 3D 파이프 라인에 어떻게 적용되는지 확실하게 알고 있습니다.
최신 개발에 따라 새로운 셰이더 단계에 관심을 갖게되었습니다. 즉, Geometry Shader, 심지어 최신 Hull 및 Domain 셰이더입니다.
필자는이 단계를 사용한 적이 없지만 지오메트리 셰이더는 활성화 된 경우 버텍스 셰이더 다음에 각 변환 된 버텍스마다 (또는 프리미티브 당 한 번) 실행되고 버텍스 (및 프리미티브?)를 버릴 수 있습니다. , 새로운 것을 만듭니다 (파이프 라인의 시작으로 돌아가는 것 같습니까?).
지오메트리 쉐이더의 주된 용도는 프로그래밍 방식으로 GPU에서 지오메트리를 생성하는 것입니다. 일반적인 사용법은 단일 정점을 기반으로 빌보드 쿼드를 만드는 것이지만 프랙탈을 생성하고 프로그래밍 방식으로 100 % 생성 할 수있는 다른 것들을 제외하고는 다른 많은 일반적인 시나리오를 실제로 시각화하지는 않습니다.
헐 및 도메인 셰이더는 테셀레이션과 관련이있는 것으로 보이며 (거친 표면에서 매끄러운 표면을 생성합니까?) 함께 사용하거나 전혀 사용하지 않아야합니다. "패치"라는 용어도 여기에서 일반적으로 보입니다.
누구든지이 새로운 쉐이더 스테이지가 무엇인지, 3D 파이프 라인에 어떻게 적용되는지, 어떤 경우에 사용해야하는지 실용적으로 설명해 주어야합니까?