Stati effetto (Direct3D 9)
Gli stati di effetto vengono usati per inizializzare gli stati della pipeline in preparazione per l'elaborazione dei vertici e dei pixel.
effect state [ [index] ] = expression;
Dove:
- stato dell'effetto: simile agli stati tradizionali della pipeline di funzioni fisse. Di seguito è riportato un elenco completo degli stati.
- [ [index] ] - Indice intero facoltativo. L'indice identifica uno stato specifico all'interno di una matrice di stati di effetto. Le parentesi quadre esterne indicano che un indice è facoltativo. Se viene usato un indice, assicurarsi di usare le parentesi quadre interne.
- expression : espressione di assegnazione dello stato. Vedere Expressions (Direct3D 9).
Ogni stato ha un tipo di dati nativo. Si tratta del tipo di dati previsto dallo stato quando l'effetto le assegna. Di seguito sono elencati i tipi di dati previsti da ogni stato.
Si noti che l'interfaccia dell'effetto tenterà di eseguire il cast dei valori al tipo appropriato il prima possibile. È possibile eseguire il cast dei valori letterali in fase di compilazione. Quando vengono chiamati i metodi Set appropriati, è necessario eseguire il cast di valori non letterali (ad esempio variabili regolari). Ad esempio, l'interfaccia dell'effetto eseguirà il cast dei valori impostati usando SetBool, SetValuee altre funzioni simili, se necessario. Per prestazioni migliori, assicurarsi che i valori passati all'interfaccia dell'effetto siano già il tipo corretto e che non sia necessario eseguire il cast. Se il runtime non è in grado di eseguire il cast di un valore, viene restituito un errore.
Gli stati di effetto possono essere suddivisi nelle categorie seguenti:
- stati luce
- stati materiali
-
stati di rendering
- di rendering pixel pipe
- stati di rendering della pipe dei vertici
- Gli stati di sampler
- stati di fase sampler
- stati dello shader
- stati costanti shader
- stati trama
- stati della fase trama
- stati di trasformazione
Stati luce
Per garantire prestazioni ottimali per l'applicazione di un effetto, tutti i componenti di una luce o di un materiale devono essere specificati nel file di effetto. Gli stati che non si dichiarano sono impostati su un valore predefinito perché non esiste alcun modo per Direct3D di impostare gli stati di luce singolarmente.
Stato luce | Digitare | Valori |
---|---|---|
LightAmbient[n] | float4 | Vedere il membro Ambient di D3DLIGHT9. |
LightAttenuation0[n] | galleggiare | Vedere il membro Attenuation0 di D3DLIGHT9. |
LightAttenuation1[n] | galleggiare | Vedere il membro Attenuation1 di D3DLIGHT9. |
LightAttenuation2[n] | galleggiare | Vedere il membro Attenuation2 di D3DLIGHT9. |
LightDiffuse[n] | float4 | Vedere il membro Diffuso di D3DLIGHT9. |
LightDirection[n] | float3 | Vedere il membro Direction di D3DLIGHT9. |
LightEnable[n] | Bool | TRUE o FALSE. Vedere l'argomento bEnable in LightEnable. |
LightFalloff[n] | galleggiare | D3DCOLORVALUE. Vedere il membro Falloff di D3DLIGHT9. |
LightPhi[n] | galleggiare | Vedere il membro Phi di D3DLIGHT9. |
LightPosition[n] | float3 | Vedere il membro Position di D3DLIGHT9. |
LightRange[n] | galleggiare | Vedere il membro Range di D3DLIGHT9. |
LightSpecular[n] | float4 | Vedere il membro speculare di D3DLIGHT9. |
LightTheta[n] | galleggiare | Vedere il membro Theta di D3DLIGHT9. |
LightType[n] | dword | Stesso valore della matrice di valori fino a n D3DLIGHTTYPE senza il prefisso D3DLIGHT_. |
Esempio:
LightEnable[0] = TRUE;
LightType[0] = POINT;
LightPosition[0] = float3<10.0f, 1.0f, 23.0f>;
LightAmbient[0] = float4<0.7f, 0.0f, 0.0f, 1.0f>;
In questo modo si abiliterà l'illuminazione, imposta la posizione della luce su float3<10.0f, 1.0f, 23.0f>e imposta il colore ambientale su float4<0.7f, 0.0f, 0.0f, 1.0f>.
Stati materiali
Gli stati che non si dichiarano sono impostati su un valore predefinito perché non esiste alcun modo per Direct3D di impostare singolarmente gli stati del materiale.
Stato materiale | Digitare | Valori |
---|---|---|
MaterialAmbient | float4 | Stesso valore di Ambient |
MaterialDiffuse | float4 | Stesso valore di diffuse |
MaterialEmissive | float4 | Stesso valore di Emissive |
MaterialPower | galleggiare | Stesso valore di Power |
MaterialSpecular | float4 | Stesso valore di speculare |
Esempio:
MaterialDiffuse = float4<0.7f, 0.0f, 0.0f, 1.0f>;
MaterialPower = 3.0f;
Il colore diffuso verrà impostato su float4<0,7f, 0,0f, 0,0f, 1,0f> e renderà la potenza del materiale 3,0f.
Stati di rendering
Esistono due tipi di stati di rendering:
- di rendering pixel pipe
- stati di rendering della pipe dei vertici
Stati di rendering della pipe pixel
Gli stati di rendering dei file di effetto hanno nomi simili agli stati della pipeline di funzioni fisse, spesso con il prefisso rimosso.
Stato di rendering | Digitare | Valori |
---|---|---|
AlphaBlendEnable | Bool | True o False. Stessi valori di D3DRS_ALPHABLENDENABLE in D3DRENDERSTATETYPE. |
AlphaFunc | dword | Stessi valori di D3DCMPFUNC senza il prefisso D3DCMP_. Vedere D3DRS_ALPHAFUNC. |
AlphaRef | dword | Stessi valori di D3DRS_ALPHAREF. |
AlphaTestEnable | dword | True o False. Vedere D3DRS_ALPHATESTENABLE. |
BlendOp | dword | Stessi valori di D3DBLENDOP senza il prefisso D3DBLENDOP_. |
ColorWriteEnable | dword | Combinazione bit per bit di RED, GREEN, BLUE e ALPHA. Vedere D3DRS_COLORWRITEENABLE. |
DepthBias | galleggiare | Stessi valori di D3DRS_DEPTHBIAS. |
DestBlend | dword | Stessi valori di D3DBLEND senza il prefisso D3DBLEND_. |
DitherEnable | Bool | True o False. Stessi valori di D3DRS_DITHERENABLE. |
FillMode | dword | Stessi valori di D3DFILLMODE senza il prefisso D3DFILL_. |
LastPixel | dword | True o False. Vedere D3DRS_LASTPIXEL. |
ShadeMode | dword | Stessi valori di D3DSHADEMODE senza il prefisso D3DSHADE_. |
SlopeScaleDepthBias | galleggiare | Stessi valori di D3DRS_SLOPESCALEDEPTHBIAS. |
SrcBlend | dword | Stessi valori di D3DBLEND senza il prefisso D3DBLEND_. |
SRGBWriteEnable | Bool | True o False. Stessi valori di D3DRS_SRGBWRITEENABLE. |
StencilEnable | Bool | True o False. Stessi valori di D3DRS_STENCILENABLE. |
StencilFail | dword | Stessi valori di D3DSTENCILCAPS senza il prefisso D3DSTENCILCAP_. Vedere D3DRS_STENCILFAIL. |
StencilFunc | dword | Stessi valori di D3DCMPFUNC senza il prefisso D3DCMP_. Vedere D3DRS_STENCILFUNC. |
StencilMask | dword | Stessi valori di D3DRS_STENCILMASK. |
StencilPass | dword | Stessi valori di D3DSTENCILCAPS senza il prefisso D3DSTENCILCAP_. Vedere D3DRS_STENCILPASS. |
StencilRef | Int | Stessi valori di D3DRS_STENCILREF. |
StencilWriteMask | dword | Stessi valori di D3DRS_STENCILWRITEMASK. |
StencilZFail | dword | Stessi valori di D3DSTENCILCAPS senza il prefisso D3DSTENCILCAP_. Vedere D3DRS_STENCILZFAIL. |
TextureFactor | dword | Stessi valori di D3DCOLOR. Stessi valori di D3DRS_TEXTUREFACTOR. |
Wrap0 - Wrap15 | dword | I valori sono uguali ai valori usati da D3DRS_WRAP0. I valori validi sono:
|
ZEnable | dword | Stessi valori di D3DZBUFFERTYPE senza il prefisso D3DZB_. |
ZFunc | dword | Stessi valori di D3DCMPFUNC senza il prefisso D3DCMP_. Vedere D3DRS_ZFUNC. |
ZWriteEnable | Bool | True o False. Vedere D3DRS_ZWRITEENABLE. |
Esempio:
AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;
Ciò consentirà la fusione alfa e il rendering di tutte le geometrie in wireframe.
Stati di rendering della pipe dei vertici
Gli stati di rendering dei file di effetto hanno nomi simili agli stati della pipeline di funzioni fisse, spesso con il prefisso rimosso.
Stato di rendering | Digitare | Valori |
---|---|---|
Ambientale | float4 | Stessi valori di D3DRS_AMBIENT. |
AmbientMaterialSource | dword | Stessi valori di D3DMATERIALCOLORSOURCE senza il prefisso D3DMCS_. Vedere D3DRS_AMBIENTMATERIALSOURCE. |
Ritaglio | Bool | True o False. Stessi valori di D3DRS_CLIPPING. |
ClipPlaneEnable | dword | Combinazione bit per bit di D3DCLIPPLANE0 : macro D3DCLIPPLANE5. Vedere D3DCLIPPLANEn e D3DRS_CLIPPLANEENABLE. |
ColorVertex | Bool | True o False. Stessi valori di D3DRS_COLORVERTEX. |
CullMode | dword | Stessi valori di D3DCULL senza il prefisso D3DCULL_. |
DiffuseMaterialSource | dword | Stessi valori di D3DMATERIALCOLORSOURCE senza il prefisso D3DMCS_. Vedere D3DRS_DIFFUSEMATERIALSOURCE. |
EmissiveMaterialSource | dword | Stessi valori di D3DMATERIALCOLORSOURCE senza il prefisso D3DMCS_. Vedere D3DRS_EMISSIVEMATERIALSOURCE. |
FogColor | dword | Stessi valori di D3DCOLOR. Vedere D3DRS_FOGCOLOR. |
FogDensity | galleggiare | Stessi valori di D3DRS_FOGDENSITY. |
FogEnable | Bool | True o False. Stessi valori di D3DRS_FOGENABLE. |
FogEnd | galleggiare | Stessi valori di D3DRS_FOGEND. |
FogStart | galleggiare | Stessi valori di D3DRS_FOGSTART. |
FogTableMode | dword | Stessi valori di D3DFOGMODE. Vedere D3DRS_FOGTABLEMODE in D3DRENDERSTATETYPE. |
FogVertexMode | dword | Stessi valori di D3DFOGMODE senza il prefisso D3DFOG_. |
IndexedVertexBlendEnable | Bool | True o False. Stessi valori di D3DRS_INDEXEDVERTEXBLENDENABLE. |
Illuminazione | Bool | True o False. Stessi valori di D3DRS_LIGHTING. |
LocalViewer | Bool | True o False. Stessi valori di D3DRS_LOCALVIEWER. |
MultiSampleAntialias | Bool | Stessi valori di D3DRS_MULTISAMPLEANTIALIAS. |
MultiSampleMask | dword | Stessi valori di D3DRS_MULTISAMPLEMASK. |
NormalizeNormals | Bool | True o False. Stessi valori di D3DRS_NORMALIZENORMALS. |
PatchSegments | galleggiare | Stessi valori di nSegments in SetNPatchMode. |
PointScale_A | galleggiare | Stessi valori di D3DRS_POINTSCALE_A. |
PointScale_B | galleggiare | Stessi valori di D3DRS_POINTSCALE_B. |
PointScale_C | galleggiare | Stessi valori di D3DRS_POINTSCALE_C. |
PointScaleEnable | Bool | Stessi valori di D3DRS_POINTSCALEENABLE. |
PointSize | galleggiare | Stessi valori di D3DRS_POINTSIZE. |
PointSize_Min | galleggiare | Stessi valori di D3DRS_POINTSIZE_MIN. |
PointSize_Max | galleggiare | Stessi valori di D3DRS_POINTSIZE_MAX senza il prefisso D3DRS_. |
PointSpriteEnable | Bool | True o False. Stessi valori di D3DRS_POINTSPRITEENABLE. |
RangeFogEnable | Bool | True o False. Stessi valori di D3DRS_RANGEFOGENABLE. |
SpecularEnable | Bool | True o False. Stessi valori di D3DRS_SPECULARENABLE. |
SpecularMaterialSource | dword | Stessi valori di D3DMATERIALCOLORSOURCE senza il prefisso D3DMCS_. Vedere D3DRS_SPECULARMATERIALSOURCE. |
TweenFactor | galleggiare | Stessi valori di D3DRS_TWEENFACTOR. |
VertexBlend | dword | Stessi valori di D3DVERTEXBLENDFLAGS senza il prefisso D3DVBF_. Vedere D3DRS_VERTEXBLEND. |
Esempio:
Ambient = float4<0.7f, 0.0f, 0.0f, 1.0f>;
CullMode = CCW;
FogColor = 0xff0000;
In questo modo, il colore ambientale float4<0,7f, 0,0f, 0,0f, 1,0f>, imposta la modalità di culling backface su antiorario e imposta il colore nebbia su rosso.
Stati del campionatore
Uno stato sampler rappresenta un oggetto sampler.
Stato | Digitare | Valori |
---|---|---|
Campionatore | campionatore | nullo un blocco di stato del campionatore. |
Stati fase sampler
Gli stati di fase del campionatore vengono usati per campionare le trame. Lo stato del campionatore determina i tipi di filtro e le modalità di indirizzamento delle trame.
Stato sampler | Digitare | Valori |
---|---|---|
AddressU[16] | dword | Stessi valori di D3DTEXTUREADDRESS senza il prefisso D3DTADDRESS_. Vedere D3DSAMP_ADDRESSU. |
AddressV[16] | dword | Stessi valori di D3DTEXTUREADDRESS senza il prefisso D3DTADDRESS_. Vedere D3DSAMP_ADDRESSV. |
AddressW[16] | dword | Stessi valori di D3DTEXTUREADDRESS senza il prefisso D3DTADDRESS_. Vedere D3DSAMP_ADDRESSW. |
BorderColor[16] | D3DCOLOR | Stessi valori di D3DTEXTUREFILTERTYPE senza il prefisso D3DTEXF_. Vedere D3DSAMP_BORDERCOLOR. |
MagFilter[16] | dword | Stessi valori di D3DTEXTUREFILTERTYPE senza il prefisso D3DTEXF_. Vedere D3DSAMP_MAGFILTER. |
MaxAnisotropy[16] | dword | Stessi valori di D3DSAMP_MAXANISOTROPY senza il prefisso D3DSAMP_. |
MaxMipLevel[16] | Int | Stessi valori di D3DSAMP_MAXMIPLEVEL senza il prefisso D3DSAMP_. |
MinFilter[16] | dword | Stessi valori di D3DSAMP_MINFILTER senza il prefisso D3DSAMP_. |
MipFilter[16] | dword | Stessi valori di D3DSAMP_MIPFILTER senza il prefisso D3DSAMP_. |
MipMapLodBias[16] | galleggiare | Stessi valori di D3DSAMP_MIPMAPLODBIAS senza il prefisso D3DSAMP_. |
SRGBTexture | Bool | Stesso valore di D3DSAMP_SRGBTEXTURE senza il prefisso D3DSAMP_. |
Esempio:
AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;
Questo blocca i valori UVW in modo che siano compresi tra 0 e 1.
Stati shader
Esistono solo due stati di effetto shader: uno associato a un oggetto vertex shader e l'altro associato a un oggetto pixel shader.
Stato shader | Digitare | Valori |
---|---|---|
PixelShader | pixelhader | NULL, un blocco di assembly, una destinazione di compilazione o un parametro pixel shader. |
VertexShader | vertexshader | NULL, un blocco di assembly, una destinazione di compilazione o un parametro pixel shader. |
Esempio:
VertexShader = compile vs_1_1 VSTexture();
PixelShader = NULL;
Verrà compilato VSTexture, un vertex shader definito in precedenza nel file fx, nel vertex shader versione 1.1 e quindi impostarlo come vertex shader. Il pixel shader viene assegnato a NULL.
Stati costanti shader
Gli stati costanti shader vengono usati per accedere ai parametri costanti dello shader.
Stato costante shader | Digitare | Valori |
---|---|---|
PixelShaderConstant | float[m[n]] | m x n matrice di float; m e n sono facoltativi. |
PixelShaderConstant1 | float4 | Un float 4D. |
PixelShaderConstant2 | float4x2 | Due float 4D. |
PixelShaderConstant3 | float4x3 | Tre float 4D. |
PixelShaderConstant4 | float4x4 | Quattro float 4D. |
PixelShaderConstantB | bool[m[n]] | m x n matrice di bool; m e n sono facoltativi. |
PixelShaderConstantI | int[m[n]] | m x n matrice di ints. m e n sono facoltativi. |
PixelShaderConstantF | float[m[n]] | m x n matrice di float. m e n sono facoltativi. |
VertexShaderConstant | float[m[n]] | m x n matrice di float. m e n sono facoltativi. |
VertexShaderConstant1 | float4 | Un float 4D. |
VertexShaderConstant2 | float4x2 | Due float 4D. |
VertexShaderConstant3 | float4x3 | Tre float 4D. |
VertexShaderConstant4 | float4x4 | Quattro float 4D. |
VertexShaderConstantB | bool[m[n]] | m x n matrice di valori bool. m e n sono facoltativi. |
VertexShaderConstantI | int[m[n]] | m x n matrice di ints. m e n sono facoltativi. |
VertexShaderConstantF | float[m[n]] | m x n matrice di float. m e n sono facoltativi. |
Stati trama
Gli stati delle trame inizializzano le trame usate dal frullatore multitexture.
Stato trama | Digitare | Valori |
---|---|---|
Trama[8] | trama | nullo un parametro trama. |
Stati fase trama
Gli stati della fase trama configurano trame e le fasi della trama nel frullatore multitexture.
Stato fase trama | Digitare | Valori |
---|---|---|
AlphaOp[8] | dword | Uguale a D3DTEXTUREOP senza il prefisso D3DTOP_. Vedere D3DTSS_ALPHAOP. |
AlphaArg0[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_ALPHAARG0. |
AlphaArg1[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_ALPHAARG1. |
AlphaArg2[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_ALPHAARG2. |
ColorArg0[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_COLORARG0. |
ColorArg1[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_COLORARG1. |
ColorArg2[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_COLORARG2. |
ColorOp[8] | dword | Uguale a D3DTEXTUREOP senza il prefisso D3DTOP_. Vedere D3DTSS_COLOROP. |
BumpEnvLScale[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVLSCALE senza il prefisso D3DTSS_TCI. |
BumpEnvLOffset[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVLOFFSET senza il prefisso D3DTSS_TCI. |
BumpEnvMat00[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVMAT00. |
BumpEnvMat01[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVMAT01. |
BumpEnvMat10[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVMAT10. |
BumpEnvMat11[8] | galleggiare | Stessi valori di D3DTSS_BUMPENVMAT11. |
ResultArg[8] | dword | Uguale a D3DTA senza il prefisso D3DTA_. Vedere D3DTSS_RESULTARG. |
TexCoordIndex[8] | dword | Stessi valori di D3DTSS_TEXCOORDINDEX senza il prefisso D3DTSS_TCI. |
TextureTransformFlags[8] | dword | Stessi valori di D3DTEXTURETRANSFORMFLAGS valori senza il prefisso D3DTTFF_. Vedere D3DTSS_TEXTURETRANSFORMFLAGS. |
Trasforma stati
Impostare gli stati di trasformazione per inizializzare le matrici di trasformazione. Gli effetti usano matrici trasposte per l'efficienza. È possibile fornire matrici trasposte a un effetto oppure un effetto trasporrà automaticamente le matrici prima di usarle.
Trasforma stato | Digitare | Valori |
---|---|---|
ProjectionTransform | float4x4 | Matrice 4x4 di float. Stessi valori di D3DTS_PROJECTION senza il prefisso D3DTS_. |
TextureTransform[8] | float4x4 | Matrice 4x4 di float. Stessi valori di D3DTRANSFORMSTATETYPE senza il prefisso D3DTS_. |
ViewTransform | float4x4 | Matrice 4x4 di float. Stessi valori di D3DTS_VIEW senza il prefisso D3DTS_. |
WorldTransform | float4x4 | Matrice 4x4 di float. |