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(가변 속도 음영) | 가변 속도 음영 또는 거친 픽셀 음영은 렌더링된 이미지에 따라 다른 속도로 렌더링 성능/파워를 할당할 수 있는 메커니즘입니다. |
| 렌더링이 전달합니다. | 렌더링 패스 기능을 사용하면 메모리 트래픽을 오프칩 메모리로/오프칩 메모리로 줄여 렌더러가 GPU 효율성을 향상시킬 수 있습니다. 애플리케이션이 리소스 렌더링 순서 요구 사항 및 데이터 종속성을 더 잘 식별할 수 있도록 하여 이 작업을 수행합니다. |