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.