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 come C per la pipeline Direct3D. Ogni modello shader si basa sulle funzionalità del modello prima di farlo, implementando più funzionalità con meno restrizioni.

Il modello shader 1 ha iniziato con DirectX 8 e include istruzioni simili a livello di assembly e C. Questo modello presenta molte limitazioni causate dall'hardware dello shader programmabile. Il modello shader 2 e 3 è notevolmente espanso sul numero di istruzioni e i costanti shader possono usare. Sono molto più potenti rispetto al modello shader 1, ma portano ancora 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 modelli per rendere il campionamento della trama più pulito e più efficiente e ha le restrizioni più poche di qualsiasi modello 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 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 modelli shader 1, 2 e 3.
  • Direct3D 10 ha introdotto il modello shader 4.
  • Direct3D 10.1 ha introdotto il modello 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 effetto fx_1_0 e fx_2_0.
  • Direct3D 10 ha introdotto il profilo del framework effetto fx_4_0.
  • Direct3D 10.1 ha introdotto fx_4_1 profilo del framework effetto.
  • Direct3D 11 ha introdotto il profilo del framework effetto fx_5_0.

Nota

Questi profili di effetti legacy sono deprecati.

Riferimento per HLSL