Direct3D 기능 수준

Microsoft Direct3D 11은 신규 및 기존 컴퓨터에서 비디오 카드의 다양성을 처리하기 위해 기능 수준의 개념을 소개합니다. 이 항목에서는 Direct3D 기능 수준에 대해 설명합니다.

각 비디오 카드는 설치된 GPU(그래픽 처리 장치)에 따라 특정 수준의 Microsoft DX(DirectX) 기능을 구현합니다. Microsoft Direct3D의 이전 버전에서는 비디오 카드에 구현된 Direct3D 버전을 찾아서 그에 따라 응용 프로그램을 프로그래밍할 수 있었습니다.

Direct3D 11에서는 기능 수준이라는 새로운 패러다임이 도입되었습니다. 기능 수준은 잘 정의된 GPU 기능 집합입니다. instance 경우 9_1 기능 수준은 셰이더 모델 ps_2_xvs_2_x 기능을 노출하는 Microsoft Direct3D 9에서 구현된 기능을 구현하는 반면, 11_0 기능 수준은 Direct3D 11에서 구현된 기능을 구현합니다.

이제 디바이스를 만들 때 요청하고자 하는 기능 수준에 맞게 디바이스를 생성하려고 시도할 있습니다. 디바이스 생성이 진행되면 기능 수준이 지원되는 것이고, 그렇지 않으면 하드웨어에서 기능 수준이 지원되지 않는 것입니다. 더 낮은 기능 수준에서 디바이스를 다시 생성해 보거나 애플리케이션을 종료하는 방법을 선택할 수 있습니다. 디바이스를 만드는 방법에 대한 자세한 내용은 D3D11CreateDevice 함수를 참조하세요.

기능 수준을 사용하여 Direct3D 9, Microsoft Direct3D 10 또는 Direct3D 11용 애플리케이션을 개발한 다음 9, 10 또는 11 하드웨어에서 실행할 수 있습니다(일부 예외를 제외하고, 새 11개 기능은 기존 9개 카드 실행되지 않음). 기능 수준의 몇 가지 다른 기본 속성은 다음과 같습니다.

  • 디바이스 생성을 허용하는 GPU는 해당 기능 수준의 기능을 충족하거나 초과합니다.
  • 기능 수준에는 항상 이전 또는 더 낮은 기능 수준의 기능이 포함됩니다.
  • 기능 수준은 성능이 아닌 기능만 의미합니다. 성능은 하드웨어 구현에 따라 달라집니다.
  • Direct3D 11 디바이스를 만들 때 기능 수준을 선택합니다.

특정 기능 수준에서 비하드웨어 유형 디바이스를 만드는 제한 사항에 대한 자세한 내용은 WARP 및 참조 디바이스 만들기 제한 사항을 참조하세요.

디자인할 기능 수준을 결정하는 데 도움이 되도록 각 기능 수준의 기능을 비교합니다.

10Level9 참조 섹션에는 다양한 ID3D11DeviceID3D11DeviceContext 메서드가 다양한 10Level9 기능 수준에서 작동하는 방식의 차이점이 나열되어 있습니다.

버전 번호 형식

Direct3D 버전, 셰이더 모델 및 기능 수준에는 세 가지 형식이 있습니다.

  • Direct3D 버전은 마침표를 사용합니다(예: Direct3D 12.0).
  • 셰이더 모델은 마침표를 사용합니다(예: 셰이더 모델 5.1).
  • 기능 수준은 밑줄을 사용합니다. 예를 들어 기능 수준 12_0입니다.

Direct3D 12 기능 지원(기능 수준 12_2~11_0)

나열된 기능 수준에는 다음 기능을 사용할 수 있습니다. 위쪽 행의 제목은 Direct3D 12 기능 수준입니다. 왼쪽 열의 제목이 기능입니다. 테이블의 각주도 참조하세요.

기능 \ 기능 수준 12_28 12_10 12_00 11_11 11_0
셰이더 모델 6.5 5.12 5.12 5.12 5.12
WDDM 드라이버 모델 2.0 1.x 1.x 1.x 1.x
광선 추적 계층 1.1 선택 사항 선택 사항 선택 사항 선택 사항
가변 음영 속도 계층 2 선택 사항 선택 사항 선택 사항 선택 사항
메시 셰이더 계층 1 선택 사항 선택 사항 선택 사항 선택 사항
샘플러 피드백 계층 0.9 선택 사항 선택 사항 선택 사항 선택 사항
리소스 바인딩 계층 3 계층 3 계층 3 계층 3 계층 1
루트 서명 1.1 1 1 1 1
깊이 경계 테스트 선택 사항 선택 사항 선택 사항 선택 사항
즉시 쓰기 버퍼 Direct, Compute, Bundle 선택 사항 선택 사항 선택 사항 선택 사항
GPU 가상 주소 비트 4010 4010 4010
타일형 리소스 계층 3 계층 26 계층 26 선택 사항 선택 사항
일반 래스터화 계층 3 계층 16 선택 사항 선택 사항 아니요
래스터라이저 순서 보기 선택 사항 선택 사항 아니요
최소/최대 필터 선택 사항 아니요
기본 버퍼 매핑 해당 없음 선택 사항 선택 사항 선택 사항 선택 사항
셰이더 지정 스텐실 참조 값 선택 사항 선택 사항 선택 사항 선택 사항 아니요
형식화된 UAV(순서가 지정되지 않은 액세스 뷰) 로드 18개 형식, 좀 더 선택적 18개 형식, 좀 더 선택적 18개 형식, 좀 더 선택적 3개 형식, 좀 더 선택적 3개 형식, 좀 더 선택적
기하 도형 셰이더
스트림 출력
DirectCompute/컴퓨팅 셰이더
헐 및 도메인 셰이더
기능 \ 기능 수준 12_28 12_10 12_00 11_11 11_0
텍스처 리소스 배열
큐브맵 리소스 배열
BC4/BC5 압축
BC6H/BC7 압축
Alpha-to-coverage
확장 형식(BGRA 등)
10비트 XR 하이 컬러 형식
논리 연산(출력 병합기) 선택 사항1
대상 독립적 래스터화 아니요
ForcedSampleCount가 1인 MRT(다중 렌더링 대상) 선택 사항1
UAV 슬롯 계층화된9 64 64 64 8
모든 단계의 UAV 아니요
기능 \ 기능 수준 12_28 12_10 12_00 11_11 11_0
UAV 전용 렌더링에 대한 최대 강제 샘플 수 16 16 16 16 8
상수 버퍼 오프셋 및 부분 업데이트 선택 사항1
픽셀당 16비트(bpp) 형식 선택 사항1
최대 텍스처 차원 16384 16384 16384 16384 16384
최대 큐브맵 차원 16384 16384 16384 16384 16384
최대 볼륨 범위 2048 2048 2048 2048 2048
최대 텍스처 반복 16384 16384 16384 16384 16384
최대 이방성 16 16 16 16 16
최대 기본 형식 수 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
최대 꼭짓점 인덱스 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
최대 입력 슬롯 32 32 32 32 32
동시 렌더링 대상 8 8 8 8 8
기능 \ 기능 수준 12_28 12_10 12_00 11_11 11_0
폐색 쿼리
알파 혼합 구분
한 번 미러링
겹치는 꼭짓점 요소
독립 쓰기 마스크
인스턴싱
비강력2 조건부3 아니요 아니요 아니요 아니요 아니요
비강력2 무조건4

또한 다음 플래그가 설정됩니다.

기능 \ 기능 수준 12_28
WaveOps TRUE
OutputMergerLogicOp TRUE
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation TRUE
CopyQueueTimestampQueriesSupported TRUE
CastingFullyTypedFormatSupported TRUE
Int64ShaderOps TRUE

Direct3D 11 기능 지원(기능 수준 12_1~9_1)

다음 기능은 나열된 기능 수준에 사용할 수 있습니다. 위쪽 행의 제목은 Direct3D 11 기능 수준입니다. 왼쪽 열의 제목이 기능입니다. 테이블에 대한 각주도 참조하세요.

기능 \ 기능 수준 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
셰이더 모델 5.12 5.12 5.02 5.02 4.x 4.0 2.0(4_0_level_9_3) [vs_2_a/ps_2_x]5 2.0(4_0_level_9_1) 2.0(4_0_level_9_1)
WDDM 드라이버 모델 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x
타일형 리소스 계층 26 계층 26 선택 사항 선택 사항 아니요 아니요 아니요 아니요 아니요
일반 래스터화 계층 16 선택 사항 선택 사항 아니요 아니요 아니요 아니요 아니요 아니요
래스터라이저 순서 보기 선택 사항 선택 사항 아니요 아니요 아니요 아니요 아니요
최소/최대 필터 선택 사항 아니요 아니요 아니요 아니요 아니요 아니요
기본 버퍼 매핑 선택 사항 선택 사항 선택 사항 선택 사항 아니요
셰이더 지정 스텐실 참조 값 선택 사항 선택 사항 선택 사항 아니요 아니요 아니요 아니요 아니요 아니요
형식화된 UAV(순서가 지정되지 않은 액세스 뷰) 로드 18개 형식, 좀 더 선택적 18개 형식, 좀 더 선택적 3개 형식, 좀 더 선택적 3개 형식, 좀 더 선택적
기하 도형 셰이더 아니요 아니요
스트림 출력 아니요 아니요 아니요
DirectCompute/컴퓨팅 셰이더 선택 사항 선택 사항 해당 없음 해당 없음 해당 없음
헐 및 도메인 셰이더 아니요 아니요 아니요 아니요
기능 \ 기능 수준 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
텍스처 리소스 배열 아니요
큐브맵 리소스 배열 아니요 아니요 아니요 아니요
BC4/BC5 압축 아니요 아니요 아니요
BC6H/BC7 압축 아니요 아니요 아니요 아니요 아니요
Alpha-to-coverage 아니요
확장 형식(BGRA 등) 선택 사항 선택 사항
10비트 XR 하이 컬러 형식 선택 사항 선택 사항 해당 없음 해당 없음 해당 없음
논리 연산(출력 병합기) 선택 사항1 선택 사항1 선택 사항1
대상 독립적 래스터화
ForcedSampleCount가 1인 MRT(다중 렌더링 대상) 선택 사항1 선택 사항1 선택 사항1 아니요
UAV 슬롯 64 64 64 8 1 1 해당 없음 해당 없음 해당 없음
모든 단계의 UAV 해당 없음 해당 없음 해당 없음
기능 \ 기능 수준 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
UAV 전용 렌더링에 대한 최대 강제 샘플 수 16 16 16 8 해당 없음 해당 없음 해당 없음 해당 없음 해당 없음
상수 버퍼 오프셋 및 부분 업데이트 선택 사항1 선택 사항1 선택 사항1 1 1 1
픽셀당 16비트(bpp) 형식 선택 사항1 선택 사항1 선택 사항1 선택 사항1 선택 사항1 선택 사항1
최대 텍스처 차원 16384 16384 16384 16384 8192 8192 4096 2048 2048
최대 큐브맵 차원 16384 16384 16384 16384 8192 8192 4096 512 512
최대 볼륨 범위 2048 2048 2048 2048 2048 2048 256 256 256
최대 텍스처 반복 16384 16384 16384 16384 8192 8192 8192 2048 128
최대 이방성 16 16 16 16 16 16 16 16 2
최대 기본 형식 수 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65535
최대 꼭짓점 인덱스 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65534
최대 입력 슬롯 32 32 32 32 32 16 16 16 16
동시 렌더링 대상 8 8 8 8 8 8 4 1 1
기능 \ 기능 수준 12_28 12_10 11_11 11_0 10_1 10_0 9_37 9_2 9_1
폐색 쿼리 아니요
알파 혼합 구분
한 번 미러링
겹치는 꼭짓점 요소
독립 쓰기 마스크
인스턴싱 7 아니요
비강력2 조건부3 아니요 아니요 아니요 아니요 아니요 아니요
비강력2 무조건4 아니요 아니요

테이블의 각주

0 Direct3D 11.3 또는 Direct3D 12 런타임이 필요합니다.

1 Direct3D 11.1 런타임이 필요합니다.

2 셰이더 모델 5.0 이상은 필요에 따라 배정밀도 셰이더, 확장된 배정밀도 셰이더, SAD4 셰이더 명령 및 부분 정밀도 셰이더를 지원할 수 있습니다. DirectX 11에 사용할 수 있는 셰이더 모델 5.0 옵션을 확인하려면 ID3D11Device::CheckFeatureSupport를 호출합니다. 일부 호환성은 실행 중인 하드웨어에 따라 달라집니다. 셰이더 모델 5.1 이상은 사용 중인 기능 수준에 관계없이 DirectX 12 API를 통해서만 지원됩니다. DirectX 11은 최대 셰이더 모델 5.0만 지원합니다. DirectX 12 API는 기능 수준 11_0으로만 내려갑니다.

3 기능 수준 9_1, 9_2 및 9_3에서 디스플레이 디바이스는 두 조건에서 2의 전원이 아닌 차원의 2차원 텍스처 사용을 지원합니다. 첫째, 각 텍스처에 대해 하나의 MIP 맵 수준만 만들 수 있으며, 둘째, 텍스처에 대한 래핑 샘플러 모드가 허용되지 않습니다(즉, D3D11_SAMPLER_DESCAddressU, AddressVAddressW 멤버를 D3D11_TEXTURE_ADDRESS_WRAP 설정할 수 없음).

4 기능 수준 10_0, 10_1 및 11_0에서 디스플레이 디바이스는 2차원의 전원이 아닌 차원의 2차원 텍스처 사용을 무조건 지원합니다.

5 256 명령, 32 임시 레지스터, 깊이 4의 정적 흐름 제어, 깊이 24의 동적 흐름 제어 및 D3DVS20CAPS_PREDICATION 있는 꼭짓점 셰이더 2a. 512개의 명령, 32개의 임시 레지스터, 깊이 4의 정적 흐름 제어, 깊이 24의 동적 흐름 제어, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT 및 D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT 있는 픽셀 셰이더 2x.

6 상위 계층 선택 사항입니다.

7 기능 수준 9_3의 경우 지원되는 유일한 렌더링 방법은 Draw, DrawIndexedDrawIndexInstanced입니다. 또한 기능 수준 9_3의 경우 점 목록 렌더링은 그리기를 통한 렌더링에만 지원됩니다.

8 Windows 11 지원합니다.

9 Direct3D 12 API에는 CBV/SRV/UAV 힙의 설명자 수에 제한이 있습니다. 자세한 내용은 하드웨어 계층을 참조하세요. 별도로 리소스 바인딩 계층을 기반으로 하는 모든 단계의 모든 설명자 테이블에 있는 UAV 수에 제한이 있습니다.

10 64비트 프로세스에는 리소스 및 프로세스당 40비트 주소 공간이 필요합니다. 32비트 프로세스는 31비트 주소 공간으로 제한될 수 있습니다. API에는 프로세스당 및 리소스당 두 가지 기능(caps)을 사용할 수 있습니다. 프로세스별 주소 공간은 항상 리소스당 주소 공간보다 크거나 같습니다.

다양한 하드웨어 기능 수준에서 형식 지원에 대한 자세한 내용은 다음을 참조하세요.