Condividi tramite


Modelli di shader e profili shader

Il linguaggio di ombreggiatura generale per DirectX implementa una serie di modelli di 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, implementando più funzionalità con un minor numero di restrizioni.

Il modello shader 1 è iniziato con DirectX 8 e includeva 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 si è 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 (entro vincoli hardware della macchina), ha oggetti modellati per rendere il campionamento delle trame più pulito e più efficiente e ha 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 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 la fx_4_1 del profilo del framework effetto.
  • Direct3D 11 ha introdotto la fx_5_0 del profilo effect-framework.

Nota

Questi profili di effetti legacy sono deprecati.

Informazioni di riferimento per HLSL