Informazioni di riferimento su Asm Shader
Gli shader guidano la pipeline grafica programmabile.
Informazioni di riferimento sul vertex shader
Le differenze tra vertex shader riepilogano le differenze tra le versioni del vertex shader.
Informazioni di riferimento su Pixel Shader
Le differenze tra pixel shader riepilogano le differenze tra le versioni del pixel shader.
Riferimento al modello shader 4 e 5
Le sezioni Assembly e Assembly model 5 shader model 5 shader descrivono le istruzioni supportate dal modello shader 4 e 5.
Comportamento dei registri costanti negli assembly shader
Esistono due modi per impostare i registri costanti in uno shader di assembly:
- Dichiarare una costante shader nel codice assembly usando una delle istruzioni def*.
- Usare uno dei metodi API Set**ShaderConstant*.
Costanti dello shader Direct3D 9
In Direct3D 9 la durata delle costanti definite in un determinato shader è limitata all'esecuzione solo di tale shader (e non è sottoponibile a override). Le costanti definite in Direct3D 9 non hanno effetti collaterali esterni allo shader.
Ecco un esempio che usa Direct3D 9:
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1:
Call Set***Shader shader1
Call Set***ShaderConstant* to set c4
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 1 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 2:
Call Set***Shader shader2
Call Draw
Result: The shader will see the value last set in c4 by
Set***ShaderConstant* in scenario 1. This is because shader 2
didn't def c4.
In Direct3D 9, la chiamata a Get^ShaderConstant* recupererà solo i valori costanti impostati tramite Set**ShaderConstant*.
Costanti shader Direct3D 8
Questo comportamento è diverso in Direct3D 8.x.
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1 (repeated with Direct3D 8):
Call Set***Shader with shader1
Call Set***ShaderConstant to set c4
Call Draw
Result: The shader will see the value in c4 from Set***ShaderConstant
In Direct3D 8.x Set^ShaderConstant diventa immediatamente effettivo. Si consideri lo scenario indicato di seguito.
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 3:
Call Set***Shader with shader1
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 3 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 4 :
Call Set***Shader with shader2
Call Draw
Result: The shader will see the def'd value in c4 (set by def in shader 1)
Il risultato indesiderato è che l'ordine in cui vengono impostati gli shader potrebbe influire sul comportamento osservato dei singoli shader.
Requisiti del modello di driver shader
Le interfacce Direct3D 9 sono limitate ai driver DDI (Device Driver Interface) di livello 7 e superiore. Per controllare il livello DDI, eseguire lo strumento di diagnostica DirectX ed esaminare il file di testo salvato.
Per riferimento, le interfacce Direct3D 8 funzionano solo su driver DDI di livello DirectX 6 e versioni successive.
Formato binario shader
Il layout bit per bit del flusso di istruzioni dello shader è definito in D3d9types.h. Per progettare un compilatore shader personalizzato o strumenti di costruzione e si vogliono altre informazioni sul flusso di token dello shader, fare riferimento a Direct3D 9 Driver Development Kit (DDK).
Linguaggio shader simile a C
Vedere Riferimenti HLSL per l'esperienza di un linguaggio shader simile a C.
Argomenti correlati