2008년 11월 Direct3D 11 Tech Preview의 새로운 기능

이 버전의 Direct3D 11에는 새로운 기능, 도구 및 설명서가 포함되어 있습니다.

항목 Description
테셀레이션
Direct3D 11은 상위 기본 형식의 실시간 테 셀레이션 을 지원하는 추가 파이프라인 단계를 제공합니다. 광범위하게 프로그래밍 가능한 기능을 사용하면 근사 기술을 사용하는 세분화 표면, 베지어 패치, 적응형 테셀레이션 및 변위 매핑을 비롯한 다양한 방법으로 고차 표면을 평가할 수 있습니다. 이 기능은 Direct3D 11 클래스 하드웨어에서만 사용할 수 있으므로 이 기능을 평가하려면 참조 래스터라이저를 사용해야 합니다. 작동 중인 테셀레이션 데모의 경우 샘플 브라우저를 통해 사용할 수 있는 SubD11 샘플을 검사.
컴퓨팅 셰이더
컴퓨팅 셰이더는 GPU에서 범용 컴퓨팅을 사용하도록 설정하는 Direct3D 11 파이프라인과 독립적인 추가 단계입니다. 통합 셰이더 코어에서 제공하는 모든 셰이더 기능 외에도 컴퓨팅 셰이더는 순서가 지정되지 않은 액세스 뷰, 실행 중인 스레드 그룹 내의 공유 메모리 풀, 동기화 기본 형식, 원자성 연산자 및 기타 여러 고급 데이터 병렬 기능을 통해 분산된 읽기 및 리소스에 대한 쓰기를 지원합니다. Direct3D 10 클래스 하드웨어에서 작동할 수 있는 Direct3D 11 컴퓨팅 셰이더의 변형이 이 릴리스에서 사용하도록 설정되었습니다. 따라서 실제 하드웨어에서 컴퓨팅 셰이더를 개발할 수 있지만 업데이트된 드라이버가 필요합니다. Direct3D 11 컴퓨팅 셰이더의 전체 기능은 Direct3D 11 클래스 하드웨어를 지원하기 위한 것이므로 전체 기능을 평가하려면 이러한 하드웨어를 사용할 수 있을 때까지 참조 래스터라이저를 사용해야 합니다. 작동 중인 컴퓨팅 셰이더 데모의 경우 샘플 브라우저를 통해 사용할 수 있는 HDRToneMappingCS11 샘플을 검사.
다중 스레드 렌더링
Direct3D 11의 Direct3D 10과 주요 API 차이점은 여러 코어에 분산된 Direct3D 명령의 확장 가능한 실행을 가능하게 하는 지연된 컨텍스트의 추가입니다. 지연 컨텍스트는 상태 변경과 같은 작업을 캡처하고 어셈블하고 나중에 실제 디바이스에서 실행할 수 있는 제출을 그립니다. 애플리케이션은 여러 스레드에서 지연 컨텍스트를 활용하여 Direct3D11 런타임에 필요한 CPU 오버헤드와 드라이버를 여러 코어로 분산하여 최종 사용자의 컴퓨터 구성을 더 잘 사용할 수 있습니다. 이 기능은 현재 Direct3D 10 하드웨어와 참조 래스터라이저에서 사용할 수 있습니다. API 사용의 데모를 위해 샘플 브라우저를 통해 사용할 수 있는 MultithreadedRendering11 샘플을 검사.
동적 셰이더 연결
성능을 위해 셰이더 전문화에서 나타나는 결합 폭발 문제를 해결하기 위해 Direct3D 11은 애플리케이션을 실행하는 동안 거의 최적의 셰이더 전문화를 허용하는 제한된 형태의 런타임 셰이더 연결을 도입합니다. 이는 셰이더가 파이프라인에 할당될 때 셰이더 코드에서 특정 함수의 구현을 지정하여 드라이버가 새 구성을 사용하여 중간 언어를 네이티브 명령으로 다시 컴파일하도록 강제하는 대신 드라이버가 네이티브 셰이더 명령을 신속하게 인라인할 수 있도록 하여 수행됩니다. 셰이더 개발은 HLSL에 대한 클래스 및 인터페이스의 도입을 통해 노출됩니다. 데모를 위해 샘플 브라우저를 통해 사용할 수 있는 동적 셰이더 링키지 11 샘플을 검사.
WARP(Windows Advanced Rasterizer)
Direct3D 11을 통해 이 SDK에서 사용할 수 있으며 결국 Direct3D 10.1을 통해 사용할 수 있는 WARP는 Direct3D 10.1을 완전히 준수하는 빠르고 다중 코어 크기 조정 래스터라이저입니다. 이 기술을 활용하는 것은 디바이스 만들기에서 D3D_DRIVER_TYPE_WARP 플래그를 전달하는 것만큼 간단합니다.
Direct3D 9 하드웨어의 Direct3D 10 및 Direct3D 11(D3D10 수준 9)
Direct3D 11을 통해 이 SDK에서 사용할 수 있고 결국 Direct3D 10.1을 통해 사용할 수 있는 Direct3D API는 Direct3D 9 하드웨어뿐만 아니라 Direct3D 10, Direct3D 10.1 및 Direct3D 11 하드웨어를 대상으로 할 수 있습니다. 이는 기능에 따라 하드웨어를 9_1, 9_2, 9_3, 10_0, 10_1 및 11_0의 6개 범주로 그룹화하는 기능 수준 메커니즘을 제공하여 수행됩니다. 카드 해당 수준을 완전히 준수하는 경우에만 기능 수준을 충족하며 각 수준은 아래에 있는 기능의 엄격한 슈퍼 집합입니다. 예기치 않은 성능 절벽이 발생하지 않도록 기능이 최소로 에뮬레이트됩니다. 따라서 Direct3D 9 수준 대상에는 기하 도형 셰이더와 같은 기능을 사용할 수 없습니다.
런타임 이진 파일
Windows 7 및 Windows Vista SP1에서 사용할 수 있는 Direct3D 11 기술 미리 보기에서 제공되는 모든 런타임 이진 파일은 SDK와 함께 설치되며 "베타" 구성 요소(즉, D3D11_beta.DLL)로 레이블이 지정됩니다. 모든 베타 레이블 구성 요소는 시간 폭탄입니다. 이러한 새 구성 요소를 평가하는 프로젝트를 만들려면 해당 베타 레이블 가져오기 라이브러리(예: D3D11_beta.lib)에 연결해야 합니다. Windows 7의 PDC 복사본이 있는 경우 빌드와 함께 Windows SDK에 제공된 헤더, 라이브러리 및 pdbs는 Windows 7에서 제공하는 Direct3D 11 구성 요소를 사용하여 개발에 적합합니다. 이 SDK의 헤더, 라이브러리 및 pdbs를 여기에 제공된 베타 구성 요소에 예약하세요.
D3DX11
D3DX11은 현재 Direct3D 11 리소스에 대한 텍스처 로드, 셰이더 컴파일, 데이터 로드 및 작업자 스레드 함수를 지원합니다. 나중에 이 구성 요소는 D3DX10에서 사용할 수 있는 더 많은 기술을 제공합니다. 셰이더 컴파일 기능은 다음에 설명된 Direct3D 컴파일러 구성 요소를 통해 직접 제공됩니다.
HLSL 및 Direct3D 컴파일러
HLSL 컴파일러에는 Direct3D 11에서 사용할 수 있는 새로운 기술을 지원하기 위한 몇 가지 새로운 기능이 있습니다. 여기에는 인터페이스 및 클래스를 통한 개체 지향 프로그래밍, 리소스 로드에 대한 직접 인덱싱 구문, 특정 변수로 수행되는 모든 작업이 엄격한 부동 소수점 규칙을 준수하는지 확인하는 '정확한' 키워드(keyword) 포함됩니다. 거의 모든 새로운 언어 기능에는 기존 셰이더 대상에 유효한 기능이 있습니다. HLSL 컴파일러는 모든 Direct3D 9, Direct3D 10, Direct3D 10.1 및 Direct3D 11 셰이더를 지원하는 것 외에도 Direct3D 10 수준 9 대상에 대한 셰이더를 작성하는 데 필요한 특수 대상도 지원합니다. 이제 D3D 컴파일러가 D3DX10 및 D3DX11 외부에서 D3DCompiler.H 및 D3DCompiler.lib를 통해 직접 액세스할 수 있습니다. 이러한 새 파일을 사용하면 애플리케이션이 런타임 컴파일을 수행하기 위해 D3DX에 연결할 필요가 없으며 D3DX 기능만 필요한 경우 애플리케이션이 컴파일러를 포함할 필요가 없습니다.
D3D11 참조 래스터라이저
참조 래스터라이저는 하드웨어에서 아직 사용할 수 없는 Direct3D 11 기능을 평가하기 위한 골드 표준 래스터화 구현을 제공합니다. 참조 래스터라이저는 래스터화 표준에 대한 특정 하드웨어 구현의 정확도를 확인하는 방법으로도 제공됩니다. 참조 래스터라이저는 성능이 아닌 정확성을 위해 설계되었습니다. 참조 디바이스를 만들려면 디바이스를 만들 때 D3D_DRIVER_TYPE_REFERENCE 플래그를 전달하기만 하면됩니다.
D3D11 SDK 계층
Direct3D11 SDK 계층은 개발 중에 Direct3D 11 런타임의 작업을 추적하는 메커니즘을 제공합니다. 현재 이는 부적절한 사용에 대한 오류뿐만 아니라 런타임의 모범 사례 사용을 권장하고 디버깅에 대한 심층적이고 유용한 정보를 제공하는 경고도 포함하는 유용한 디버그 정보를 제공하는 데 사용됩니다. D3D11 SDK 계층의 디버그 출력은 개발 중에 항상 켜져 있고 애플리케이션은 프로파일링을 위해 Windows용 PIX와 함께 릴리스되거나 사용되기 전에 실행 중에 디버그 출력을 생성하지 않는 것이 좋습니다. 디버그 계층을 사용하도록 설정하는 것은 디바이스를 만들 때 D3D11_CREATE_DEVICE_DEBUG 플래그를 전달하는 것만큼 간단합니다. 개발자는 디버그 빌드에서 계층을 사용하는 것이 좋습니다. 계층은 프로필 또는 릴리스 빌드에서 사용하지 않는 것이 좋습니다.
새 샘플
이 릴리스에는 4개의 새로운 샘플이 있습니다.
  • 동적 셰이더 링크 11 샘플은 런타임에 셰이더 인터페이스 메서드를 연결하기 위해 셰이더 모델 5 셰이더 인터페이스 및 Direct3D 11 지원을 사용하는 방법을 보여 줍니다.
  • HDRToneMappingCS11 샘플은 Direct3D 11의 가장 흥미로운 새로운 기능 중 하나인 컴퓨팅 셰이더(잠시 후의 CS)를 설정 및 실행하는 방법을 보여 줍니다. 샘플은 CS만 사용하여 HDR 톤 매핑을 구현하지만 개념은 다른 후처리 알고리즘과 보다 일반적인 계산으로 쉽게 확장되어야 합니다.
  • MultithreadedRendering11 샘플은 오버헤드가 매우 낮은 여러 스레드 간에 렌더링을 분할하는 방법을 보여 줍니다.
  • SubD11 샘플은 DirectX SDK의 SubD10 샘플과 매우 유사합니다. 단, 헐 셰이더, 테셀레이터 및 도메인 셰이더의 세 가지 새로운 Direct3D 11 파이프라인 단계를 활용하도록 개선되었다는 점을 제외하면 매우 유사합니다.

이전 릴리스에서 도입된 기능