Skip to main content

레거시 파이프라인

지난 20년 동안 그래픽 파이프라인은 진화하여 지금의 익숙한 상태에 도달했습니다. 독립 하드웨어 벤더(IHV)가 코어 수, 메모리 용량, 대역폭의 지속적인 확대 경쟁에 집중하면서 지오메트리 처리 모델에서 특정 고정 기능 병목 현상이 명백해졌습니다. 그림 1. 레거시 그래픽 파이프라인. 파란색 색조의 스테이지는 고정 기능입니다. 녹색 색조의 스테이지는 프로그래밍 가능한 셰이더입니다. The legacy graphics pipeline 이러한 병목 현상 중 가장 문제가 되는 것 중 하나는 입력 어셈블러(IA)입니다. IA는 인덱스를 처리하고 정점 데이터를 페치하는 그래픽 파이프라인 상단에 위치하는 하드웨어 컴포넌트입니다. IA 유닛의 수는 다른 GPU 리소스와 같은 속도로 확장되지 않았습니다. 소수의 고정된 IA 유닛은 종종 GPU 코어를 작업으로 포화시키지 못할 수 있는 제한적인 시작 속도를 도입합니다. 지오메트리 파이프라인의 하단에는 프리미티브 어셈블러(PA)가 있습니다. 이 하드웨어 컴포넌트는 변환된 정점을 프리미티브로 구성하고, 컬링 및 클리핑 루틴을 수행한 다음, 살아남은 인스턴스를 래스터화로 전달합니다. 이는 고정된 내보내기 속도를 가지고 있으며, 이 속도를 유지하는 것은 어려울 수 있습니다. 어떤 경우에는 이것이 IA 때문일 수 있는데, 셰이더 웨이브가 파이프라인에 더 빠르게 시작될 수 있다면 더 많은 프리미티브를 병렬로 제출할 수 있습니다. 진행 중인 병렬 워크로드가 많을수록 PA에 대한 압력을 더 잘 유지할 수 있습니다. 레거시 그래픽 파이프라인의 또 다른 제한 사항은 전통적인 파이프라인에서의 지오메트리 컬링 방법이 제한적이라는 것입니다. 컬링된 지오메트리는 효과적인 처리량을 감소시키고, 절대 빛을 보지 못할 정점 속성을 로드하고 셰이딩하는 메모리 대역폭과 ALU를 낭비합니다. 이상적으로는, 가능한 한 이른 순간에 지오메트리를 컬링하기 위해 다양한 세분성으로 컬링할 수 있는 기능을 원합니다.

메시 셰이더 파이프라인

메시 셰이더 파이프라인은 이러한 레거시 그래픽 파이프라인 제한 사항을 대상으로 합니다. 우선, 파이프라인에서 IA와 테셀레이터를 제거합니다. 이는 셰이더 웨이브 시작 속도를 최대화하고 GPU와 함께 확장할 수 있는 셰이더 코드로 IA를 이동시키는 것을 목표로 합니다. 이는 GPU 코어를 포화시키고 PA에 대한 압력을 유지하는 데 도움이 될 수 있습니다. 이 파이프라인은 또한 파이프라인의 다양한 지점에서 워크로드를 컬링할 수 있는 기능을 제공합니다. 증폭 셰이더는 그룹화된 개체, 인스턴스 또는 메시렛과 같은 낮은 세분성 컬링을 수행하는 데 사용될 수 있습니다. 메시 셰이더는 프리미티브별 세분성으로 컬링을 수행할 수 있습니다. 이는 트리비얼하게 컬링 가능한 프리미티브를 조기에 자주 폐기할 수 있는 경로를 제공합니다 - 소중한 계산, 메모리 대역폭, PA 처리량을 절약합니다. 그림 2. 메시 셰이더 파이프라인의 스테이지. 녹색 색조의 스테이지는 프로그래밍 가능합니다. 파란색 색조의 스테이지는 고정 기능입니다. Stage diagram of the Mesh Shader pipeline

메시 셰이더

메시 셰이더는 컴퓨트 셰이더에서만 찾을 수 있는 수준의 일반성을 지오메트리 파이프라인에 제공하도록 설계되었습니다. 이는 개발자가 각 스레드의 워크로드를 완전히 제어할 수 있게 합니다. 인덱스 및 정점 속성 페치를 셰이더 코드로 이동하면 고정 기능 하드웨어에 대한 의존성이 제거되고, 웨이브 시작 속도가 최대화되며 IA가 나머지 GPU와 함께 확장될 수 있습니다. 정점과 프리미티브 내보내기 개수를 동적으로 지정할 수 있는 기능은 프리미티브 컬링을 위한 효율적인 온칩 지원의 문을 엽니다. 이는 메시 셰이더 내의 임의의 컬링 기준에 대해 메시렛별 또는 프리미티브별로 수행할 수 있습니다. 이를 통해 셰이더는 여러 컬링 계층이 이미 수행된 후, 파이프라인 끝까지 정점 속성 페치와 셰이딩을 연기할 수 있습니다.

증폭 셰이더

컴퓨트 셰이더는 정기적으로 리소스를 사전 처리하는 데 사용되며, 그 결과를 ExecuteIndirect를 사용하여 소비하는 드로우 호출이 뒤따릅니다. 이는 뷰별 컬링의 많은 형태에서 일반적인 기법입니다. 이는 적절한 하드웨어 지원으로 최적화될 수 있는 몇 가지 미묘한 단점이 있습니다. 우선, 컴퓨트 셰이더 인스턴스는 자신의 데이터를 글로벌 메모리에 써야 합니다. 이는 페치 지연 시간을 초래하고 GPU 전반의 메모리 대역폭 경합의 대상이 됩니다. 둘째, 컴퓨트 생산자와 그래픽 소비자가 연속적인 작업인 경우, GPU는 소비하는 드로우 호출을 시작하기 전에 모든 컴퓨트 셰이더 인스턴스가 종료될 때까지 기다려야 합니다. 이는 최종 UAV에 대한 모든 컴퓨트 셰이더 쓰기가 완료된 후에야 셰이더가 소비할 수 있도록 강제하는 순서 없는 액세스 뷰(UAV) 리소스 배리어에 의해 발생합니다. 그림 3. 즉시 이어지는 ExecuteIndirect “DispatchMesh” 드로우와 함께 컴퓨트 셰이더의 단순화된 웨이브 스케줄링 시각화. UAV 배리어로 인한 파이프라인 정지로 컴퓨트 셰이더 웨이브(노란색)와 메시 셰이더 웨이브(녹색) 실행이 분리됩니다. 번호가 매겨진 ID는 호출하는 컴퓨트 셰이더 스레드그룹을 메시 셰이더 자식의 클러스터와 연관시킵니다. Diagram of a simplified wave scheduling visualization, showing a compute shader workload with an immediately subsequent ExecuteIndirect call by using DispatchMesh. The compute shader waves, shown in yellow, are separated from the execution of corresponding Mesh Shader waves, shown in green, by a stall in the pipeline because of a UAV resource barrier. 증폭 셰이더 스테이지는 이러한 문제를 다루기 위한 것입니다. 생산자와 소비자는 파이프라인화됩니다 - 중간 파이프라인 플러시가 없는 온칩 스테이지 간 메모리. 증폭 셰이더와 메시 셰이더 웨이브의 스케줄링은 산재되어 있어, GPU를 작업으로 더 완전히 포화시킬 수 있습니다. 이는 또한 레거시 그래픽 파이프라인에는 단순히 존재하지 않는 일반화된 워크로드 감소 또는 증폭 기능의 수준을 열어줍니다. 이는 컬링 기법, 동적 인스턴스 상세도(LOD) 선택 또는 사용자 정의 테셀레이션 루틴과 같은 기능을 구현하는 데 사용될 수 있습니다. 그림 4. 증폭 셰이더 워크로드의 웨이브 스케줄링 시각화. 파이프라인에서 정지가 제거됩니다. 번호가 매겨진 ID는 호출하는 증폭 셰이더 스레드그룹을 메시 셰이더 자식의 클러스터와 연관시킵니다. Diagram of a simplified wave scheduling visualization, showing an Amplification Shader workload. The Amplification Shader waves, shown in yellow, are interspersed with corresponding Mesh Shader waves, shown in green, eliminating the stall from the pipeline.

참고 항목

메시 셰이더 파이프라인 개요 메시 셰이더 API 개요 메시 셰이더 파이프라인 사용법
마지막 수정일 2026년 8월 13일