Direct3D 12의 작업 제출

Direct3D 앱의 CPU 효율성을 개선하기 위해 버전 12부터 Direct3D는 더 이상 디바이스와 연결된 직접 컨텍스트를 지원하지 않습니다. 대신, 애플리케이션은 그리기 및 리소스 관리 호출을 포함하는 ‘명령 목록’을 기록한 후 제출합니다. 여러 스레드에서 하나 이상의 명령 큐로 이 명령 목록을 제출할 수 있으며, 명령 큐에서 명령 실행을 관리합니다. 이 기본적인 변경은 애플리케이션이 나중에 다시 사용할 수 있도록 렌더링 작업을 미리 컴퓨팅할 수 있도록 하여 단일 스레드 효율성을 높이고 렌더링 작업을 여러 스레드에 분산하여 다중 코어 시스템을 활용합니다.

섹션 내용

항목 설명
명령 큐 및 명령 목록의 디자인 철학 렌더링 작업 및 다중 스레드 스케일링을 다시 사용할 수 있도록 하려면 Direct3D 앱이 렌더링 작업을 GPU에 제출하는 방법을 기본적으로 변경해야 했습니다.
명령 목록 및 번들 만들기 및 기록 이 항목에서는 Direct3D 12 앱에서 명령 목록과 번들을 기록하는 방법을 설명합니다. 명령 목록 및 번들을 사용하면 앱에서는 GPU(그래픽 처리 장치)에서 나중에 실행할 수 있도록 그리기 또는 상태 변경 호출을 기록할 수 있습니다.
명령 목록 실행 및 동기화 Microsoft Direct3D 12에는 더 이상 이전 버전의 직접 실행 모드가 없습니다. 대신, 앱은 명령 목록과 번들을 만든 다음, GPU 명령 집합을 기록합니다. 명령 큐는 실행할 명령 목록을 제출하는 데 사용됩니다. 이 모델을 사용하면 개발자가 GPU 및 CPU의 효율적인 사용을 보다 잘 제어할 수 있습니다.
Direct3D 12에서 그래픽 파이프라인 상태 관리 이 항목에서는 Direct3D 12에서 그래픽 파이프라인 상태를 설정하는 방법을 설명합니다.
Direct3D 12에서 리소스 장벽을 사용하여 리소스 상태 동기화 전체 CPU 사용량을 줄이고 드라이버 다중 스레딩 및 전처리를 사용하도록 설정하기 위해 Direct3D 12는 리소스별 상태 관리의 책임을 그래픽 드라이버에서 애플리케이션으로 이동합니다.
Direct3D 12를 사용하는 파이프라인 및 셰이더 Direct3D 12 프로그래밍 가능 파이프라인은 이전 세대의 그래픽 프로그래밍 인터페이스보다 렌더링 성능을 크게 향상합니다.
VRS(Variable-Rate Shading) 가변 속도 음영(또는 거친 픽셀 음영)은 렌더링된 이미지에 따라 다양한 속도로 렌더링 성능/전원을 할당할 수 있는 메커니즘입니다.
Render Pass 렌더러는 렌더링 단계 기능을 통해 GPU 효율성을 개선할 수 있습니다. 이를 위해 애플리케이션에서 리소스 렌더링의 순서 지정 요구 사항 및 데이터 종속성을 더 잘 파악하도록 하여 오프칩 메모리와 주고받는 메모리 트래픽을 줄입니다.