Megosztás a következőn keresztül:


Hatásállapotok (Direct3D 9)

Az effektusállapotok a folyamatállapotok inicializálására szolgálnak a csúcspontok és képpontok feldolgozásának előkészítésekor.

effect state [ [index] ] = expression;

Hol:

  • effektus állapota – Hasonló a hagyományos rögzített függvényfolyamat-állapotokhoz. Az állapotok teljes listáját alább találja.
  • [ [index] ] – Nem kötelező egész szám index. Az index egy adott állapotot azonosít egy effektusállapot-tömbön belül. A külső zárójelek azt jelzik, hogy az index nem kötelező. Ha indexet használ, mindenképpen használja a belső zárójeleket.
  • kifejezés – Állapot-hozzárendelési kifejezés. Lásd: kifejezések (Direct3D 9).

Minden állapot natív adattípussal rendelkezik. Ez az az adattípus, amelyben az állapot értékekre számít, amikor az effektus hozzárendeli őket. Az egyes állapotok által várt adattípusok alább láthatók.

Vegye figyelembe, hogy az effektus-kezelőfelület a lehető leghamarabb megpróbálja a megfelelő típusra leadni az értékeket. A literális értékek fordításkor is leadhatók. A nem konstansokat (azaz a reguláris változókat) a megfelelő Set metódusok meghívásakor kell leadni. Az effektus-kezelőfelület például SetBool, SetValueés más hasonló függvények használatával állítja be az értékeket, ha szükséges. A jobb teljesítmény érdekében győződjön meg arról, hogy az effektus interfésznek átadott értékek már a megfelelő típust képezik, és nem lesz szükség öntésre. Ha a futtatókörnyezet nem tud értéket adni, a rendszer hibát ad vissza.

Az effektusállapotok a következő kategóriákra bonthatók:

Világos állapotok

Az effektusok alkalmazásának legjobb teljesítménye érdekében egy fény vagy anyag minden összetevőjét meg kell adni az effektusfájlban. A nem deklarált állapotok alapértelmezett értékre vannak állítva, mert a Direct3D nem tudja egyenként beállítani a fényállapotokat.

Világos állapot Típus Értékrend
LightAmbient[n] float4 Lásd a D3DLIGHT9környezeti tagját.
LightAttenuation0[n] lebeg Lásd a D3DLIGHT9Attenuation0 tagját.
LightAttenuation1[n] lebeg Lásd a D3DLIGHT9Attenuation1 tagját.
LightAttenuation2[n] lebeg Lásd a D3DLIGHT9Attenuation2 tagját.
LightDiffuse[n] float4 Lásd a D3DLIGHT9diffúz tagját.
LightDirection[n] float3 Lásd a D3DLIGHT9iránytagját.
Világosítható[n] Bool TRUE vagy HAMIS. Lásd a bEnable argumentumot Egyszerűsített.
LightFalloff[n] lebeg D3DCOLORVALUE. Lásd a D3DLIGHT9Falloff tagját.
LightPhi[n] lebeg Lásd a Phi tagja D3DLIGHT9.
LightPosition[n] float3 Lásd a D3DLIGHT9pozíciótagját.
LightRange[n] lebeg Lásd az D3DLIGHT9tartománytagját.
LightSpecular[n] float4 Lásd a D3DLIGHT9specular tagját.
LightTheta[n] lebeg Lásd az D3DLIGHT9Theta tagját.
LightType[n] dword Ugyanaz az érték, mint a legfeljebb n D3DLIGHTTYPE értékek tömbje a D3DLIGHT_ előtag nélkül.

 

Példa:

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>;

Ez lehetővé teszi a világítást, a pont megvilágítását a típust, a fény pozícióját lebegőpontosra állítja<10,0f, 1,0f, 23,0f>, és a környezeti színt a float4<0,7f, 0,0f, 0,0f, 1,0f>értékre állítja.

Anyagállapotok

A nem deklarálandó állapotok alapértelmezett értékre vannak állítva, mert a Direct3D nem tudja egyenként beállítani az anyagállapotokat.

Anyagállapot Típus Értékrend
MaterialAmbient float4 Ugyanaz az érték, mint Környezeti
MaterialDiffuse float4 Ugyanaz az érték, mint diffúz
MaterialEmissive float4 Ugyanaz az érték, mint Emissive
MaterialPower lebeg Ugyanaz az érték, mint Power
MaterialSpecular float4 Ugyanaz az érték, mint Specular

 

Példa:

MaterialDiffuse = float4<0.7f, 0.0f, 0.0f, 1.0f>;
MaterialPower = 3.0f;

Ez meg a diffúz színt float4<0,7f, 0.0f, 0.0f, 1.0f>, és hogy a hatalom az anyag 3.0f.

Renderelési állapotok

Kétféle renderelési állapot létezik:

Képpontcső renderelési állapotai

Az effektusfájl-renderelési állapotok neve hasonló a rögzített függvényfolyamat-állapotokhoz, gyakran az előtag el lett távolítva.

Renderelési állapot Típus Értékrend
AlphaBlendEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint a D3DRENDERSTATETYPED3DRS_ALPHABLENDENABLE.
AlphaFunc dword Ugyanazok az értékek, mint D3DCMPFUNC a D3DCMP_ előtag nélkül. Lásd: D3DRS_ALPHAFUNC.
AlphaRef dword Ugyanazok az értékek, mint D3DRS_ALPHAREF.
AlphaTestEnable dword Igaz vagy Hamis. Lásd: D3DRS_ALPHATESTENABLE.
BlendOp dword Ugyanazok az értékek, mint D3DBLENDOP a D3DBLENDOP_ előtag nélkül.
ColorWriteEnable dword A PIROS, a ZÖLD, a KÉK és az ALFA bitenkénti kombinációja. Lásd: D3DRS_COLORWRITEENABLE.
DepthBias lebeg Ugyanazok az értékek, mint D3DRS_DEPTHBIAS.
DestBlend dword Ugyanazok az értékek, mint D3DBLEND a D3DBLEND_ előtag nélkül.
DitherEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_DITHERENABLE.
FillMode dword Ugyanazok az értékek, mint D3DFILLMODE a D3DFILL_ előtag nélkül.
LastPixel dword Igaz vagy Hamis. Lásd: D3DRS_LASTPIXEL.
ShadeMode dword Ugyanazok az értékek, mint D3DSHADEMODE a D3DSHADE_ előtag nélkül.
SlopeScaleDepthBias lebeg Ugyanazok az értékek, mint D3DRS_SLOPESCALEDEPTHBIAS.
SrcBlend dword Ugyanazok az értékek, mint D3DBLEND a D3DBLEND_ előtag nélkül.
SRGBWriteEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_SRGBWRITEENABLE.
StencilEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_STENCILENABLE.
Rajzsablonfail dword Ugyanazok az értékek, mint D3DSTENCILCAPS a D3DSTENCILCAP_ előtag nélkül. Lásd: D3DRS_STENCILFAIL.
StencilFunc dword Ugyanazok az értékek, mint D3DCMPFUNC a D3DCMP_ előtag nélkül. Lásd: D3DRS_STENCILFUNC.
StencilMask dword Ugyanazok az értékek, mint D3DRS_STENCILMASK.
StencilPass dword Ugyanazok az értékek, mint D3DSTENCILCAPS a D3DSTENCILCAP_ előtag nélkül. Lásd: D3DRS_STENCILPASS.
StencilRef Int Ugyanazok az értékek, mint D3DRS_STENCILREF.
StencilWriteMask dword Ugyanazok az értékek, mint D3DRS_STENCILWRITEMASK.
RajzsablonZFail dword Ugyanazok az értékek, mint D3DSTENCILCAPS a D3DSTENCILCAP_ előtag nélkül. Lásd: D3DRS_STENCILZFAIL.
TextureFactor dword Ugyanazok az értékek, mint D3DCOLOR. Ugyanazok az értékek, mint D3DRS_TEXTUREFACTOR.
Wrap0 - Wrap15 dword Az értékek megegyeznek a D3DRS_WRAP0 által használt értékekkel. Az érvényes értékek a következők:
  • COORD0 (amely megfelel D3DWRAPCOORD_0)
  • COORD1 (amely megfelel D3DWRAPCOORD_1)
  • COORD2 (amely megfelel D3DWRAPCOORD_2)
  • COORD3 (amely megfelel D3DWRAPCOORD_3)
  • U (amely megfelel D3DWRAP_U)
  • V (amely megfelel D3DWRAP_V)
  • W (amely megfelel D3DWRAP_W)
ZEnable dword Ugyanazok az értékek, mint D3DZBUFFERTYPE a D3DZB_ előtag nélkül.
ZFunc dword Ugyanazok az értékek, mint D3DCMPFUNC a D3DCMP_ előtag nélkül. Lásd: D3DRS_ZFUNC.
ZWriteEnable Bool Igaz vagy Hamis. Lásd: D3DRS_ZWRITEENABLE.

Példa:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Ez lehetővé teszi az alfa-keverést, és az összes geometriát drótvázban rendereli.

Csúcscső renderelési állapotai

Az effektusfájl-renderelési állapotok neve hasonló a rögzített függvényfolyamat-állapotokhoz, gyakran az előtag el lett távolítva.

Renderelési állapot Típus Értékrend
Környező float4 Ugyanazok az értékek, mint D3DRS_AMBIENT.
AmbientMaterialSource dword Ugyanazok az értékek, mint D3DMATERIALCOLORSOURCE a D3DMCS_ előtag nélkül. Lásd: D3DRS_AMBIENTMATERIALSOURCE.
Nyírás Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_CLIPPING.
ClipPlaneEnable dword A D3DCLIPPLANE0 bitenkénti kombinációja – D3DCLIPPLANE5 makrók. Lásd: D3DCLIPPLANEn és D3DRS_CLIPPLANEENABLE.
ColorVertex Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_COLORVERTEX.
CullMode dword Ugyanazok az értékek, mint D3DCULL a D3DCULL_ előtag nélkül.
DiffuseMaterialSource dword Ugyanazok az értékek, mint D3DMATERIALCOLORSOURCE a D3DMCS_ előtag nélkül. Lásd: D3DRS_DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource dword Ugyanazok az értékek, mint D3DMATERIALCOLORSOURCE a D3DMCS_ előtag nélkül. Lásd: D3DRS_EMISSIVEMATERIALSOURCE.
FogColor dword Ugyanazok az értékek, mint D3DCOLOR. Lásd: D3DRS_FOGCOLOR.
FogDensity lebeg Ugyanazok az értékek, mint D3DRS_FOGDENSITY.
FogEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_FOGENABLE.
FogEnd lebeg Ugyanazok az értékek, mint D3DRS_FOGEND.
FogStart lebeg Ugyanazok az értékek, mint D3DRS_FOGSTART.
FogTableMode dword Ugyanazok az értékek, mint D3DFOGMODE. Lásd: D3DRS_FOGTABLEMODE a D3DRENDERSTATETYPE.
FogVertexMode dword Ugyanazok az értékek, mint D3DFOGMODE a D3DFOG_ előtag nélkül.
IndexedVertexBlendEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_INDEXEDVERTEXBLENDENABLE.
Világítás Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_LIGHTING.
LocalViewer Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_LOCALVIEWER.
MultiSampleAntialias Bool Ugyanazok az értékek, mint D3DRS_MULTISAMPLEANTIALIAS.
MultiSampleMask dword Ugyanazok az értékek, mint D3DRS_MULTISAMPLEMASK.
NormalizeNormals Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_NORMALIZENORMALS.
PatchSegments lebeg A SetNPatchModenSegments értékeivel megegyező értékek.
PointScale_A lebeg Ugyanazok az értékek, mint D3DRS_POINTSCALE_A.
PointScale_B lebeg Ugyanazok az értékek, mint D3DRS_POINTSCALE_B.
PointScale_C lebeg Ugyanazok az értékek, mint D3DRS_POINTSCALE_C.
PointScaleEnable Bool Ugyanazok az értékek, mint D3DRS_POINTSCALEENABLE.
Pontméret lebeg Ugyanazok az értékek, mint D3DRS_POINTSIZE.
PointSize_Min lebeg Ugyanazok az értékek, mint D3DRS_POINTSIZE_MIN.
PointSize_Max lebeg Ugyanazok az értékek, mint D3DRS_POINTSIZE_MAX a D3DRS_ előtag nélkül.
PointSpriteEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_POINTSPRITEENABLE.
RangeFogEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_RANGEFOGENABLE.
SpecularEnable Bool Igaz vagy Hamis. Ugyanazok az értékek, mint D3DRS_SPECULARENABLE.
SpecularMaterialSource dword Ugyanazok az értékek, mint D3DMATERIALCOLORSOURCE a D3DMCS_ előtag nélkül. Lásd: D3DRS_SPECULARMATERIALSOURCE.
TweenFactor lebeg Ugyanazok az értékek, mint D3DRS_TWEENFACTOR.
Csúcspont dword Ugyanazok az értékek, mint D3DVERTEXBLENDFLAGS a D3DVBF_ előtag nélkül. Lásd: D3DRS_VERTEXBLEND.

 

Példa:

Ambient = float4<0.7f, 0.0f, 0.0f, 1.0f>;
CullMode = CCW;
FogColor = 0xff0000;

Ez teszi a környezeti szín float4<0.7f, 0.0f, 0.0f, 1.0f>, állítsa a backface culling módot az óramutató járásával ellentétes irányba, és állítsa a köd színét pirosra.

Mintavevő állapotai

A mintavevő állapota egy mintavevő objektumot jelöl.

Állam Típus Értékrend
Sampler Sampler NULLvagy mintavevő állapotblokkot.

 

Mintavevő fázisállapotai

A mintavevő fázisállapotai a mintául szolgáló textúrákra szolgálnak. A sampler állapot határozza meg a szűrési típusokat és a textúracímzési módokat.

Mintavevő állapota Típus Értékrend
Cím[16] dword Ugyanazok az értékek, mint D3DTEXTUREADDRESS a D3DTADDRESS_ előtag nélkül. Lásd: D3DSAMP_ADDRESSU.
AddressV[16] dword Ugyanazok az értékek, mint D3DTEXTUREADDRESS a D3DTADDRESS_ előtag nélkül. Lásd: D3DSAMP_ADDRESSV.
AddressW[16] dword Ugyanazok az értékek, mint D3DTEXTUREADDRESS a D3DTADDRESS_ előtag nélkül. Lásd: D3DSAMP_ADDRESSW.
BorderColor[16] D3DCOLOR Ugyanazok az értékek, mint D3DTEXTUREFILTERTYPE a D3DTEXF_ előtag nélkül. Lásd: D3DSAMP_BORDERCOLOR.
MagFilter[16] dword Ugyanazok az értékek, mint D3DTEXTUREFILTERTYPE a D3DTEXF_ előtag nélkül. Lásd: D3DSAMP_MAGFILTER.
MaxAnisotropy[16] dword Ugyanazok az értékek, mint D3DSAMP_MAXANISOTROPY a D3DSAMP_ előtag nélkül.
MaxMipLevel[16] Int Ugyanazok az értékek, mint D3DSAMP_MAXMIPLEVEL a D3DSAMP_ előtag nélkül.
MinFilter[16] dword Ugyanazok az értékek, mint D3DSAMP_MINFILTER a D3DSAMP_ előtag nélkül.
MipFilter[16] dword Ugyanazok az értékek, mint D3DSAMP_MIPFILTER a D3DSAMP_ előtag nélkül.
MipMapLodBias[16] lebeg Ugyanazok az értékek, mint D3DSAMP_MIPMAPLODBIAS a D3DSAMP_ előtag nélkül.
SRGBTexture Bool Ugyanaz az érték, mint D3DSAMP_SRGBTEXTURE a D3DSAMP_ előtag nélkül.

 

Példa:

AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;

Ez 0 és 1 közötti UVW-értékeket rögzít.

Shader-állapotok

Csak két effektusárnyékoló állapot létezik: az egyik egy csúcsárnyékoló objektumhoz, a másik pedig egy képpontárnyékoló objektumhoz van társítva.

Árnyékoló állapota Típus Értékrend
PixelShader pixelshader NULL, szerelvényblokk, fordítási cél vagy képpontárnyékoló paraméter.
Csúcstengely csúcstengely NULL, szerelvényblokk, fordítási cél vagy képpontárnyékoló paraméter.

 

Példa:

VertexShader = compile vs_1_1 VSTexture();
PixelShader  = NULL;

Ez lefordítja a VSTexture-t, a .fx fájlban korábban definiált csúcsárnyékolót az 1.1-es csúcsárnyékolóra, majd a lefordított árnyékolót állítja be csúcsárnyékolóként. A képpontárnyékoló hozzá van rendelve NULL.

Shader Constant States

A shader-állandó állapotok a shader állandó paramétereinek elérésére szolgálnak.

Shader Constant State Típus Értékrend
PixelShaderConstant float[m[n]] m x n lebegőpontos tömb; m és n nem kötelező.
PixelShaderConstant1 float4 Egy 4D úszó.
PixelShaderConstant2 float4x2 Két 4D úszó.
PixelShaderConstant3 float4x3 Három 4D úszó.
PixelShaderConstant4 float4x4 Négy 4D úszó.
PixelShaderConstantB bool[m[n]] m x n logikai tömb; m és n nem kötelező.
PixelShaderConstantI int[m[n]] m x n tömb ints. m és n nem kötelező.
PixelShaderConstantF float[m[n]] m x n lebegőpontos tömb. m és n nem kötelező.
VertexShaderConstant float[m[n]] m x n lebegőpontos tömb. m és n nem kötelező.
VertexShaderConstant1 float4 Egy 4D úszó.
VertexShaderConstant2 float4x2 Két 4D úszó.
VertexShaderConstant3 float4x3 Három 4D úszó.
VertexShaderConstant4 float4x4 Négy 4D úszó.
VertexShaderConstantB bool[m[n]] m x n logikai tömb. m és n nem kötelező.
VertexShaderConstantI int[m[n]] m x n tömb ints. m és n nem kötelező.
VertexShaderConstantF float[m[n]] m x n lebegőpontos tömb. m és n nem kötelező.

 

Textúraállapotok

A textúraállapotok inicializálják a multitexture keverő által használt textúrákat.

Textúra állapota Típus Értékrend
Textúra[8] szövet NULLvagy textúraparamétert.

 

Textúraszakasz állapotai

A textúraállapotok a többszöveges turmixgép anyagmintáit és anyagmintáit állítják be.

Textúraszakasz állapota Típus Értékrend
AlphaOp[8] dword Ugyanaz, mint D3DTEXTUREOP a D3DTOP_ előtag nélkül. Lásd: D3DTSS_ALPHAOP.
AlphaArg0[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_ALPHAARG0.
AlphaArg1[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_ALPHAARG1.
AlphaArg2[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_ALPHAARG2.
ColorArg0[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_COLORARG0.
ColorArg1[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_COLORARG1.
ColorArg2[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_COLORARG2.
ColorOp[8] dword Ugyanaz, mint D3DTEXTUREOP a D3DTOP_ előtag nélkül. Lásd: D3DTSS_COLOROP.
BumpEnvLScale[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVLSCALE a D3DTSS_TCI előtag nélkül.
BumpEnvLOffset[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVLOFFSET a D3DTSS_TCI előtag nélkül.
BumpEnvMat00[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVMAT00.
BumpEnvMat01[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVMAT01.
BumpEnvMat10[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVMAT10.
BumpEnvMat11[8] lebeg Ugyanazok az értékek, mint D3DTSS_BUMPENVMAT11.
ResultArg[8] dword Ugyanaz, mint D3DTA D3DTA_ előtag nélkül. Lásd: D3DTSS_RESULTARG.
TexCoordIndex[8] dword Ugyanazok az értékek, mint D3DTSS_TEXCOORDINDEX a D3DTSS_TCI előtag nélkül.
TextureTransformFlags[8] dword Ugyanazok az értékek, mint D3DTEXTURETRANSFORMFLAGS D3DTTFF_ előtag nélkül. Lásd: D3DTSS_TEXTURETRANSFORMFLAGS.

 

Állapotok átalakítása

Átalakítási állapotok beállítása transzformációs mátrixok inicializálásához. Az effektusok transzponált mátrixokat használnak a hatékonyság érdekében. Transzponált mátrixokat adhat egy effektushoz, vagy egy effektus automatikusan transzponálta a mátrixokat használat előtt.

Állapot átalakítása Típus Értékrend
ProjectionTransform float4x4 Úszók 4x4 mátrixa. Ugyanazok az értékek, mint D3DTS_PROJECTION a D3DTS_ előtag nélkül.
TextureTransform[8] float4x4 Úszók 4x4 mátrixa. Ugyanazok az értékek, mint D3DTRANSFORMSTATETYPE a D3DTS_ előtag nélkül.
ViewTransform float4x4 Úszók 4x4 mátrixa. Ugyanazok az értékek, mint D3DTS_VIEW a D3DTS_ előtag nélkül.
WorldTransform float4x4 Úszók 4x4 mátrixa.

 

Effektusformátum