Modelli shader e profili shader

Il linguaggio di ombreggiatura di alto livello per DirectX implementa una serie di modelli shader. Usando HLSL, è possibile creare shader programmabili simili a C per la pipeline Direct3D. Ogni modello di shader si basa sulle funzionalità del modello prima di implementare più funzionalità con un minor numero di restrizioni.

Il modello shader 1 è stato avviato con DirectX 8 e include istruzioni simili a livello di assembly e C. Questo modello presenta molte limitazioni causate dall'hardware programmabile anticipata dello shader. Il modello shader 2 e 3 è notevolmente ampliato sul numero di istruzioni e gli shader costanti possono usare. Sono molto più potenti del modello di shader 1, ma portano comunque alcune delle limitazioni esistenti del primo modello shader.

A partire da Windows Vista, il modello shader 4 è una riprogettazione completa. Consente istruzioni e costanti illimitate (all'interno dei vincoli hardware del computer), ha oggetti modellati per rendere il campionamento delle trame più pulito ed efficiente e presenta le restrizioni più poche di qualsiasi modello di shader. Richiede tuttavia il modello di driver Windows disponibile solo nel sistema operativo Windows Vista (o versione successiva).

Profili shader

Un profilo shader è la destinazione per la compilazione di uno shader; questa tabella elenca i profili shader supportati da ogni modello di shader.

Modello shader Profili shader
Modello shader 1 vs_1_1
Modello shader 2 ps_2_0, ps_2_x, vs_2_0, vs_2_x, ps_4_0_level_9_0, ps_4_0_level_9_1, ps_4_0_level_9_3, vs_4_0_level_9_0, vs_4_0_level_9_1, vs_4_0_level_9_3, lib_4_0_level_9_1, lib_4_0_level_9_3
Modello shader 3 ps_3_0, vs_3_0
Modello shader 4 cs_4_0, gs_4_0, ps_4_0, vs_4_0, cs_4_1, gs_4_1, ps_4_1, vs_4_1, lib_4_0, lib_4_1
Modello shader 5 cs_5_0, ds_5_0, gs_5_0, hs_5_0, ps_5_0, vs_5_0, lib_5_0 (anche se gs_4_0, gs_4_1, ps_4_0, ps_4_1, vs_4_0 e vs_4_1 sono stati introdotti nel modello shader 4.0, il modello shader 5 aggiunge il supporto a questi profili shader per buffer strutturati e buffer di indirizzi byte.
Modello shader 6 cs_6_0, ds_6_0, gs_6_0, hs_6_0, ps_6_0, vs_6_0, lib_6_0

Differenze tra Direct3D 9 e Direct3D 10:

  • Direct3D 9 ha introdotto i modelli di shader 1, 2 e 3.
  • Direct3D 10 ha introdotto il modello di shader 4.
  • Direct3D 10.1 ha introdotto il modello di shader 4.1.

Profili effetto

Un profilo di effetto è la destinazione per la compilazione di un effetto/shader; questa tabella elenca i profili di effetto supportati da ogni versione di Direct3D.

Differenze tra Direct3D 9 e Direct3D 10:

  • Direct3D 9 ha introdotto profili di framework di effetto fx_1_0 e fx_2_0.
  • Direct3D 10 ha introdotto la fx_4_0 del profilo effect-framework.
  • Direct3D 10.1 ha introdotto l'fx_4_1 del profilo effect-framework.
  • Direct3D 11 ha introdotto la fx_5_0 del profilo del framework di effetto.

Nota

Questi profili di effetti legacy sono deprecati.

Riferimento per HLSL