Udostępnij za pośrednictwem


Określanie obiektów docelowych kompilatora

Należy określić cel cieniowania — zestaw funkcji cieniowania — do skompilowania podczas wywoływania funkcji D3DCompile, D3DCompile2lub D3DCompileFromFile. W tym miejscu wymieniamy cele dla różnych profili, które są obsługiwane przez funkcje D3DCompile* oraz kompilator HLSL.

Poziomy funkcji Direct3D 11.0 i 11.1

Poniżej przedstawiono cele cieniowania, które obsługują poziomy funkcji Direct3D 11.0 i 11.1.

Cel Opis
cs_5_0 DirectCompute 5.0 (shader obliczeniowy)
ds_5_0 cieniowania domeny
gs_5_0 cieniowania geometrii
hs_5_0 cieniowanie korpusu
ps_5_0 cieniowania pikseli
vs_5_0 cieniowania wierzchołków

 

Poziom funkcji Direct3D 10.1

Poniżej przedstawiono cele shaderów, które obsługuje poziom funkcji Direct3D 10.1 .

Cel Opis
cs_4_1 DirectCompute 4.1 (shader obliczeniowy
gs_4_1 cieniowania geometrii
ps_4_1 cieniowania pikseli
vs_4_1 Vertex shader

 

Poziom funkcji Direct3D 10.0

Poniżej przedstawiono cele cieniowania obsługiwane przez poziomu funkcji Direct3D 10.0.

Cel Opis
cs_4_0 DirectCompute 4.0 (shader obliczeniowy
gs_4_0 cieniowania geometrii
ps_4_0 cieniowania pikseli
vs_4_0 cieniowania wierzchołków

 

Poziomy funkcji Direct3D 9.1, 9.2 i 9.3

Oto cele shaderów, które według poziomów funkcji obsługują Direct3D 9.1, 9.2 i 9.3.

Nota

Jeśli używasz profilów cieniowania *_4_0_level_9_x HLSL, to automatycznie korzystasz z profilów Shader Model 2.x, aby obsługiwać sprzęt zgodny z Direct3D 9. Profile Shader Model 2.x mają bardziej ograniczone zachowanie sterowania przepływem w porównaniu do profilów Shader Model 4.x i nowszych.

 

Cel Opis
ps_4_0_level_9_1 cieniowanie pikseli dla wersji 9.1 i 9.2 (podobne limity do ps_2_0)
  • 64 instrukcji arytmetycznych i 32 instrukcje dotyczące tekstur
  • 12 rejestrów tymczasowych
  • 4 poziomy odczytów zależnych
ps_4_0_level_9_3 cieniowanie pikseli dla wersji 9.3 (podobne limity do ps_2_x² z dodatkowymi funkcjami cieniowania)
  • 512 instrukcji
  • 32 rejestry tymczasowe
  • Sterowanie przepływem statycznym (maksymalna głębokość 4)
  • Dynamiczne sterowanie przepływem (maksymalna głębokość 24)
  • D3DPS20CAPS_ARBITRARYSWIZZLE
  • D3DPS20CAPS_GRADIENTINSTRUCTIONS
  • D3DPS20CAPS_PREDICATION
  • D3DPS20CAPS_NODEPENDENTREADLIMIT
  • D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT
vs_4_0_level_9_1 cieniowania wierzchołków dla wersji 9.1 i 9.2 (podobnie jak vs_2_0)
  • 256 instrukcji
  • 12 rejestrów tymczasowych
  • Sterowanie przepływem statycznym (maksymalna głębokość 1)
vs_4_0_level_9_3 cieniowania wierzchołków dla wersji 9.3 (podobnie jak vs_2_a² z dodatkowymi funkcjami cieniowania i instancingiem)
  • 256 instrukcji
  • 32 rejestry tymczasowe
  • Sterowanie przepływem statycznym (maksymalna głębokość 4)
  • D3DVS20CAPS_PREDICATION

 

Starszy model cieniowania Direct3D 9 3.0

Poniżej przedstawiono cele cieniowania dla starszego modelu cieniowania Direct3D 9 3.0³.

Cel Opis
ps_3_0 cieniowanie pikseli 3.0
ps_3_sw cieniowanie Pixel 3.0 (oprogramowanie)
vs_3_0 cieniowania wierzchołków 3.0
vs_3_sw cieniowania wierzchołków 3.0 (oprogramowanie)

 

Starszy model cieniowania Direct3D 9 2.0

Oto cele cieniowania dla starszego modelu cieniowania Direct3D 9 2.0³.

Cel Opis
ps_2_0 cieniowanie pikseli 2.0
ps_2_a cieniowanie pikseli 2a
ps_2_b cieniowanie pikseli 2b
ps_2_sw Oprogramowanie do cieniowania pikseli Pixel 2.0
vs_2_0 cieniowania wierzchołków 2.0
vs_2_a Shader wierzchołków 2a
vs_2_sw oprogramowanie do cieniowania wierzchołków 2.0

 

Starszy model cieniowania Direct3D 9 1.x

Poniżej przedstawiono cele cieniowania dla starszego modelu cieniowania Direct3D 9 1.x⁴.

Cel Opis
tx_1_0 Profil cieniowania tekstury, który jest używany przez starsze funkcje D3DX9⁵ D3DXCreateTextureShader i D3DXFillTextureTX
vs_1_1 cieniowania wierzchołków 1.1

 

Efekty dziedziczone

Tutaj są cele dla starszych efektów.

Cel Opis
fx_2_0 Efekty (FX) dla Direct3D 9 w D3DX9⁵
fx_4_0 Efekty (FX) dla Direct3D 10.0 w D3DX10⁵
fx_4_1 Efekty (FX) dla Direct3D 10.1 w D3DX10⁵
fx_5_0 Efekty (FX) dla Direct3D 11⁵

 

Notatki

Poniżej przedstawiono kilka uwag, które odnoszą się do powyższych sekcji:

  1. poziom funkcji urządzeniach 10.0 i 10.1 mogą opcjonalnie obsługiwać funkcję DirectCompute. Aby zweryfikować obsługę, użyj ID3D11Device::CheckFeatureSupport z D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS.
  2. poziom funkcji 9.3 skutecznie wymaga sprzętu zgodnego z wymaganiami dotyczącymi starszego modelu cieniowania Direct3D 9 3.0, ale ten poziom funkcji nie korzysta z vs_3_0 lub ps_3_0 celów.
  3. Używaj tylko starszych modeli cieniowania Direct3D 9 z interfejsem API Direct3D 9. Zamiast tego należy używać profilów 9.x z interfejsem API Direct3D 10.x i 11.x.
  4. Bieżące funkcje cieniowania HLSL D3DCompile* nie obsługują starszych cieniowania pikseli 1.x. Ostatnia wersja biblioteki HLSL do obsługi tych celów to D3DX9 w wersji zestawu SDK DirectX z października 2006 r.
  5. Wszystkie wersje D3DX i zestawu DirectX SDK są przestarzałe. Aby uzyskać więcej informacji, zobacz Gdzie jest zestaw SDK DirectX?.

HLSL - przewodnik programowania