다음을 통해 공유


Direct3D 10.1 기능

Direct3D 10.1은 다음과 같은 새로운 기능으로 Direct3D 10.0의 기능 집합을 확장합니다.

  • 혼합 모드 - 새로운 혼합 상태 인터페이스를 사용하여 렌더링 대상당 독립적인 혼합 모드(ID3D10BlendState1 인터페이스 참조). 이중 소스 혼합 작업은 대상 슬롯 0 렌더링으로 제한됩니다. 다른 출력에 쓰거나 슬롯 0 이외의 슬롯에 바인딩된 렌더링 대상이 있을 수 없습니다.

  • 컬링 동작 - 영역이 0인 얼굴은 자동으로 컬링됩니다. 와이어프레임 렌더링에만 영향을 줍니다.

  • 부동 소수점 규칙 - 무한정 정확한 결과의 0.5 단위 마지막 위치(0.5 ULP) 내에서 결과를 생성하기 위해 부동 소수점 제외 32비트 부동 소수점 작업에 동일한 IEEE-754 규칙을 사용합니다. 이는 더하기, 빼기 및 곱셈에 적용됩니다. (곱하기의 경우 0.5 ULP에 대한 정확도, 상호의 경우 1.0 ULP).

  • 형식 - float16 혼합의 정밀도가 0.5 ULP로 증가했습니다. UNORM16/SNORM16/SNORM8 형식에도 혼합이 필요합니다.

  • 다중 샘플링 앤티앨리어싱 - 다중 샘플링은 적용 범위 기반 투명도를 일반화하고 다중 패스 렌더링을 통해 다중 샘플링 작업을 보다 효과적으로 수행할 수 있도록 향상되었습니다. 이를 위해 모든 다중 샘플 의미 체계는 픽셀 셰이더가 항상 샘플당 한 번(샘플 빈도)으로 실행되어 샘플당 별도의 색을 계산하는 것처럼 정의됩니다. 픽셀 셰이더가 샘플별 특성을 사용하지 않는 경우 적용된 각 샘플에 대해 동일한 값을 픽셀 단위로 계산합니다. 이 경우 결과를 적용된 모든 샘플에 복제본(replica) 픽셀당 한 번(픽셀 빈도)으로 셰이더를 실행하는 하드웨어와 동일합니다. 당연히 픽셀 주파수에서 실행하면 특성이 픽셀 주파수에서 샘플링될 때 항상 동일한 셰이더를 샘플 주파수로 실행하는 것과 동일한 결과가 생성됩니다. 셰이더가 픽셀 주파수로 실행되지 않는 한 PSInvocations 파이프라인 통계는 샘플 빈도로 증가합니다.

  • 파이프라인 단계 대역폭 - 셰이더 단계 간에 전달할 수 있는 데이터의 양을 증가시켰습니다.

    리소스 제한
    셰이더 단계 간 레지스터 32(32비트 x 4개 구성 요소)
    꼭짓점 셰이더 입력 레지스터 32
    입력 어셈블러 입력 슬롯 32

     

  • 래스터화 규칙 - 줄에 대한 래스터화 규칙이 변경되었으며 새로운 기능이 추가되었습니다.

    • MultisampleEnable은 선 래스터화에만 영향을 줍니다(점 및 삼각형은 영향을 받지 않음). 선 그리기 알고리즘을 선택하는 데 사용됩니다. 즉, Direct3D 10의 일부 다중 샘플 래스터화는 더 이상 지원되지 않습니다.
    • 기본 래스터화를 사용한 새로운 샘플 빈도 픽셀 셰이더 실행
  • 리소스 - CopyResource는 다음 두 가지 새로운 시나리오에서 사용하도록 설정됩니다.

    • 이제 CopyResource에서 색 및 깊이/스텐실 MSAA 표면을 모두 원본 또는 대상으로 사용할 수 있습니다.
    • 특정 32/64/128비트 사전 구조화된 형식의 리소스와 동일한 비트 너비의 압축 표현 간에 복사하는 동안 형식 변환입니다.
  • 텍스처 샘플링 - sample_c 및 sample_c_lz 지침은 Texture2DArrays와 TextureCubeArrays 모두에서 작동하도록 정의되며 위치 멤버(알파 구성 요소)를 사용하여 배열 인덱스를 지정합니다.

  • 보기 - TextureCube 및 새 TextureCubeArray(D3D10_TEXCUBE_ARRAY_SRV1 참조)는 실제 리소스가 아니라 Texture2DArray 리소스에 대한 새 보기입니다. 새 사용 플래그(D3D10_RESOURCE_MISC_TEXTURECUBE)를 사용하여 Texture2DArray 리소스에서 리소스 뷰를 만들고, 새 ID3D10ShaderResourceView1 인터페이스 인터페이스를 사용하여 큐브 텍스처 보기를 파이프라인에 바인딩합니다.

새 기능에는 D3D10CreateDevice1을 호출하여 만들 수 있는 10.1 디바이스 유형(ID3D10Device1 인터페이스 참조)이 필요하거나 D3D10CreateDeviceAndSwapChain1을 호출하여 동시에 디바이스 및 스왑 체인을 만들 수 있습니다.

Windows Vista 서비스 팩 1에서는 Direct3D 10.0 및 Direct3D 10.1 DLL이 시스템에 나란히 존재합니다. 10.1 기능에 액세스하려면 다음 중 하나를 수행합니다.

Vista Gold 및 Vista 서비스 팩 1의 10.1 기능 액세스

Vista Gold와 SP1을 지원하려는 개발자는 Vista Gold의 새로운 10.1 API 확장이 부족하다는 점을 고려해야 합니다. DXUT와 D3DX10은 모두 시스템에서 사용할 수 있는 DLL과 사용 가능한 하드웨어(10.0 또는 10.1)를 기반으로 적절한 디바이스를 만드는 편리한 기능을 제공합니다. 10.1 디바이스는 10.0 디바이스에서 상속되며 QueryInterface()를 사용하여 검색할 수 있습니다. 각 애플리케이션은 디바이스 유형을 추적하고 10.1 기능이 필요한 경우 잦은 QueryInterface 호출을 방지하기 위해 기본10.1 디바이스에 대한 포인터를 포함하는 것이 좋습니다. 마찬가지로 10.1 리소스 뷰 및 상태 개체가 애플리케이션의 사용자 지정 클래스와 연결된 경우 중복 QueryInterface() 호출을 방지하기 위해 애플리케이션에서 개체가 10.0 또는 10.1 형식인지 여부를 추적하는 것이 좋습니다. D3DX10에는 이 프로세스를 간소화하는 유틸리티 함수 집합이 포함되어 있습니다(D3DX10CreateDevice D3DX10CreateDeviceAndSwapChain 참조).

Vista 서비스 팩 1에서 10.1 기능만 액세스

일부 개발자는 최종 사용자에게 광범위하게 배포되고 Direct3D 10.1 이외의 일련의 개선 사항을 포함하는 Vista 서비스 팩 1을 요구할 수 있습니다. 이러한 개발자는 Direct3D 10.1 헤더 및 라이브러리를 단독으로 사용할 수 있으며, 10.0 및 10.1 하드웨어를 모두 지원하는 Direct3D 10.1 DLL에 종속됩니다(일부 호출은 실패할 수 있지만 새 기능이 지원되지 않는 10.0 디바이스에서는 실패할 수 있음).

몇 가지 추가 참고 사항:

  • D3DX10.dll에 노출된 API는 10.0 및 10.1 디바이스를 모두 허용하며, 사용 가능한 경우 10.1 기능을 활용합니다.
  • D3D10SDKLayers.dll은 10.1 디바이스를 지원하며 10.1 기능에 적합한 디버그 스푸를 출력할 수 있습니다.
  • D3D10Ref.dll은 10.0 및 10.1 소프트웨어 디바이스를 구현합니다.
  • D3DX10 및 FXC는 10.1 디바이스에 바인딩할 수 있는 vs_4_1, gs_4_1, ps_4_1 및 fx_4_1 대상으로 업데이트된 10.1 셰이더 모델을 지원합니다. 10.1 디바이스는 셰이더 모델 4.0 및 4.1 셰이더를 지원합니다.
  • Direct3D 10.0 효과 프레임워크는 10.0 및 10.1 디바이스를 지원합니다. 그러나 셰이더 모델 4.1 셰이더 또는 새로운 10.1 기능을 포함하는 모든 기술은 10.1 디바이스를 사용해야 합니다.

Direct3D 10 프로그래밍 가이드