
메시 셰이더
메시 셰이더(MS)는 본질적으로 정점, 인덱스, 프리미티브 데이터를 프리미티브 어셈블러로 내보내는 스테이지별 내장 함수를 가진 컴퓨트 셰이더입니다. 모든 데이터는 셰이더 코드에서 상수 버퍼 뷰(CBV) 및 셰이더 리소스 뷰(SRV)에서 명시적으로 페치되어야 합니다. 이는 개발자가 드로우 호출에 대한 관점을 컴퓨트 셰이더의 워크플로에 더 부합하도록 재조정해야 함을 의미합니다. 셰이더 작성자가 스레드그룹 크기와 각 스레드가 워크로드를 완료하는 데 어떻게 사용되는지 결정합니다. 셰이더 웨이브 내장 함수와 그룹 공유 메모리에 접근하여 데이터를 공유하고 래스터화를 위한 프리미티브 목록을 효율적으로 구축할 수 있습니다. 그림 2. 메시 셰이더 전용 파이프라인이 바인딩된 상태에서 DispatchMesh(4, 1, 1) 호출로부터 디스패치된 GPU 작업의 시각화. 컴퓨트 셰이더와 마찬가지로 DispatchMesh는 x-, y-, z-차원의 스레드그룹 개수를 필요로 합니다. 이는 지정된 수의 메시 셰이더 스레드그룹을 실행을 위해 디스패치합니다.
증폭 셰이더
증폭 셰이더(AS)는 메시 셰이더 스테이지 앞에 오는 선택적 스테이지입니다. 이 스테이지도 컴퓨트와 유사하며 메시 셰이더 스레드그룹의 클러스터를 동적으로 디스패치할 수 있는 기능을 가지고 있습니다. 각 스레드그룹은 디스패치할 메시 셰이더 스레드그룹의 자체 개수를 계산합니다. 각 스레드그룹은 또한 생성된 메시 셰이더 스레드그룹으로 전달될 최대 16 KB의 공유 사용자 정의 페이로드 데이터로 구성됩니다. 이 데이터는 그룹 공유 메모리에서 직접 내보내질 수 있습니다. 증폭 셰이더의 기능은 셰이더 프로그램이 사용자 정의 기준에 따라 워크로드를 동적으로 줄이거나 증폭할 수 있게 합니다. 이는 효율적이고 낮은 세분성 컬링이나 사용자 정의 테셀레이션의 가능성을 열어줍니다. 그림 3. AS-MS 파이프라인 상태(PS) 개체를 디스패치하는 시각화. 일부 AS 스레드그룹은 MS 스레드그룹을 디스패치하도록 선택할 것입니다. 다른 스레드그룹은 아무것도 디스패치하지 않을 수 있습니다.
