Condividi tramite


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

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:

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:
  • COORD0 (che corrisponde a D3DWRAPCOORD_0)
  • COORD1 (che corrisponde a D3DWRAPCOORD_1)
  • COORD2 (che corrisponde a D3DWRAPCOORD_2)
  • COORD3 (che corrisponde a D3DWRAPCOORD_3)
  • U (che corrisponde a D3DWRAP_U)
  • V (che corrisponde a D3DWRAP_V)
  • W (che corrisponde a D3DWRAP_W)
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.

 

formato effetto