Freigeben über


Effektzustände (Direct3D 9)

Effektzustände werden verwendet, um Pipelinezustände in Vorbereitung auf Vertex- und Pixelverarbeitung zu initialisieren.

effect state [ [index] ] = expression;

Wo:

  • Effektzustand – Ähnlich wie bei herkömmlichen Pipelinezuständen mit festen Funktionen. Unten finden Sie eine vollständige Liste der Zustände.
  • [ [Index] ] - Optionaler ganzzahliger Index. Der Index identifiziert einen bestimmten Zustand innerhalb eines Arrays von Effektzuständen. Die äußeren Klammern geben an, dass ein Index optional ist. Wenn ein Index verwendet wird, müssen Sie unbedingt die inneren Klammern verwenden.
  • Ausdruck – Statuszuweisungsausdruck. Siehe Ausdrücke (Direct3D 9).

Jeder Zustand weist einen systemeigenen Datentyp auf. Dies ist der Datentyp, in dem der Zustand erwartet, dass Sich die Werte befinden, wenn der Effekt sie zuweist. Die Datentypen, die von den einzelnen Zugängen erwartet werden, sind unten aufgeführt.

Beachten Sie, dass die Effektschnittstelle versucht, Werte so früh wie möglich in den entsprechenden Typ zu umwandeln. Literalwerte können zur Kompilierungszeit casten. Nicht-Literale (d. h. reguläre Variablen) müssen bei Aufruf der entsprechenden Set-Methoden castet werden. Beispielsweise wandelt die Effektschnittstelle Werte, die mit SetBool, SetValue-und anderen ähnlichen Funktionen festgelegt werden. Stellen Sie für eine bessere Leistung sicher, dass die an die Effektschnittstelle übergebenen Werte bereits den richtigen Typ aufweisen und keine Umwandlung benötigen. Wenn die Laufzeit keinen Wert umwandeln kann, wird ein Fehler zurückgegeben.

Effektzustände können in die folgenden Kategorien unterteilt werden:

Lichtzustände

Um die beste Leistung für die Anwendung eines Effekts zu ermöglichen, sollten alle Komponenten eines Lichts oder Materials in der Effektdatei angegeben werden. Zustände, die Sie nicht deklarieren, werden auf einen Standardwert festgelegt, da Direct3D keine Möglichkeit gibt, lichtzustände einzeln festzulegen.

Lichtzustand Art Werte
LightAmbient[n] float4 Siehe das Ambient-Mitglied von D3DLIGHT9.
LightAttenuation0[n] schweben Siehe das Mitglied "Attenuation0" von D3DLIGHT9.
LightAttenuation1[n] schweben Siehe das Mitglied "Attenuation1" von D3DLIGHT9.
LightAttenuation2[n] schweben Siehe das Mitglied "Attenuation2" von D3DLIGHT9.
LightDiffuse[n] float4 Siehe das diffuse Element von D3DLIGHT9.
LightDirection[n] float3 Siehe das Element "Direction" von D3DLIGHT9.
LightEnable[n] Bool TRUE oder FALSE. Siehe das bEnable-Argument in LightEnable.
LightFalloff[n] schweben D3DCOLORVALUE. Siehe das Falloff-Mitglied von D3DLIGHT9.
LightPhi[n] schweben Siehe das Phi-Mitglied von D3DLIGHT9.
LightPosition[n] float3 Siehe das Position-Element von D3DLIGHT9.
LightRange[n] schweben Siehe bereichselement von D3DLIGHT9.
LightSpecular[n] float4 Siehe das Glanzelement von D3DLIGHT9.
LightTheta[n] schweben Siehe Theta-Mitglied von D3DLIGHT9.
LightType[n] dword Derselbe Wert wie das Array von bis zu n D3DLIGHTTYPE Werten ohne das Präfix D3DLIGHT_.

 

Beispiel:

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

Dadurch wird Beleuchtung, Punktbeleuchtung der Typ, die Lichtposition auf float3<10,0f, 1,0f, 23,0f>festgelegt und die Umgebungsfarbe auf float4<0,7f, 0,0f, 0,0f, 1,0f>festgelegt.

Materialzustände

Zustände, die Sie nicht deklarieren, werden auf einen Standardwert festgelegt, da Direct3D keinen einzelnen Materialstatus festlegen kann.

Materialzustand Art Werte
MaterialAmbient float4 Derselbe Wert wie Ambient-
MaterialDiffuse float4 Derselbe Wert wie Diffuse
MaterialEmissive float4 Derselbe Wert wie Emissive
MaterialPower schweben Derselbe Wert wie Power
MaterialSpecular float4 Derselbe Wert wie Glanz-

 

Beispiel:

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

Dadurch wird die diffuse Farbe auf float4<0,7f, 0,0f, 0,0f, 1,0f> festgelegt und die Leistung des Materials 3,0f.

Renderzustände

Es gibt zwei Arten von Renderzuständen:

Pixel Pipe Render States

Effektdateirenderstatus weisen Namen auf, die den Pipelinezuständen der festen Funktion ähneln, häufig mit dem Präfix entfernt.

Renderzustand Art Werte
AlphaBlendEnable Bool True oder False. Dieselben Werte wie D3DRS_ALPHABLENDENABLE in D3DRENDERSTATETYPE.
AlphaFunc dword Dieselben Werte wie D3DCMPFUNC ohne das Präfix D3DCMP_. Siehe D3DRS_ALPHAFUNC.
AlphaRef dword Dieselben Werte wie D3DRS_ALPHAREF.
AlphaTestEnable dword True oder False. Siehe D3DRS_ALPHATESTENABLE.
BlendOp dword Dieselben Werte wie D3DBLENDOP ohne das Präfix D3DBLENDOP_.
ColorWriteEnable dword Bitweise Kombination aus ROT, GRÜN, BLAU und ALPHA. Siehe D3DRS_COLORWRITEENABLE.
DepthBias schweben Dieselben Werte wie D3DRS_DEPTHBIAS.
DestBlend dword Dieselben Werte wie D3DBLEND ohne das Präfix D3DBLEND_.
DitherEnable Bool True oder False. Dieselben Werte wie D3DRS_DITHERENABLE.
FillMode dword Dieselben Werte wie D3DFILLMODE ohne das Präfix D3DFILL_.
LastPixel dword True oder False. Siehe D3DRS_LASTPIXEL.
ShadeMode dword Dieselben Werte wie D3DSHADEMODE ohne das Präfix D3DSHADE_.
SlopeScaleDepthBias schweben Dieselben Werte wie D3DRS_SLOPESCALEDEPTHBIAS.
SrcBlend dword Dieselben Werte wie D3DBLEND ohne das Präfix D3DBLEND_.
SRGBWriteEnable Bool True oder False. Dieselben Werte wie D3DRS_SRGBWRITEENABLE.
SchabloneEnable Bool True oder False. Dieselben Werte wie D3DRS_STENCILENABLE.
SchablonenFail dword Dieselben Werte wie D3DSTENCILCAPS ohne das Präfix D3DSTENCILCAP_. Siehe D3DRS_STENCILFAIL.
Schablonenfunc dword Dieselben Werte wie D3DCMPFUNC ohne das Präfix D3DCMP_. Siehe D3DRS_STENCILFUNC.
Schablonenmaske dword Dieselben Werte wie D3DRS_STENCILMASK.
Schablonenpass dword Dieselben Werte wie D3DSTENCILCAPS ohne das Präfix D3DSTENCILCAP_. Siehe D3DRS_STENCILPASS.
SchabloneRef Int Dieselben Werte wie D3DRS_STENCILREF.
SchabloneWriteMask dword Dieselben Werte wie D3DRS_STENCILWRITEMASK.
SchablonenZFail dword Dieselben Werte wie D3DSTENCILCAPS ohne das Präfix D3DSTENCILCAP_. Siehe D3DRS_STENCILZFAIL.
TextureFactor dword Dieselben Werte wie D3DCOLOR. Dieselben Werte wie D3DRS_TEXTUREFACTOR.
Wrap0 - Wrap15 dword Werte sind identisch mit den von D3DRS_WRAP0 verwendeten Werten. Gültige Werte sind:
  • COORD0 (entspricht D3DWRAPCOORD_0)
  • COORD1 (entspricht D3DWRAPCOORD_1)
  • COORD2 (entspricht D3DWRAPCOORD_2)
  • COORD3 (entspricht D3DWRAPCOORD_3)
  • U (entspricht D3DWRAP_U)
  • V (entspricht D3DWRAP_V)
  • W (entspricht D3DWRAP_W)
ZEnable dword Dieselben Werte wie D3DZBUFFERTYPE ohne das Präfix D3DZB_.
ZFunc dword Dieselben Werte wie D3DCMPFUNC ohne das Präfix D3DCMP_. Siehe D3DRS_ZFUNC.
ZWriteEnable Bool True oder False. Siehe D3DRS_ZWRITEENABLE.

Beispiel:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Dadurch wird die Alphamischung aktiviert und alle Geometrien im Drahtmodell gerendert.

Vertexpipeline-Renderzustände

Effektdateirenderstatus weisen Namen auf, die den Pipelinezuständen der festen Funktion ähneln, häufig mit dem Präfix entfernt.

Renderzustand Art Werte
Ambient float4 Dieselben Werte wie D3DRS_AMBIENT.
AmbientMaterialSource dword Dieselben Werte wie D3DMATERIALCOLORSOURCE ohne das Präfix D3DMCS_. Siehe D3DRS_AMBIENTMATERIALSOURCE.
Ausschnitt Bool True oder False. Dieselben Werte wie D3DRS_CLIPPING.
ClipPlaneEnable dword Bitweise Kombination aus D3DCLIPPLANE0 - D3DCLIPPLANE5 Makros. Siehe D3DCLIPPLANEn und D3DRS_CLIPPLANEENABLE.
ColorVertex Bool True oder False. Dieselben Werte wie D3DRS_COLORVERTEX.
CullMode dword Dieselben Werte wie D3DCULL ohne das Präfix D3DCULL_.
DiffuseMaterialSource dword Dieselben Werte wie D3DMATERIALCOLORSOURCE ohne das Präfix D3DMCS_. Siehe D3DRS_DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource dword Dieselben Werte wie D3DMATERIALCOLORSOURCE ohne das Präfix D3DMCS_. Siehe D3DRS_EMISSIVEMATERIALSOURCE.
FogColor dword Dieselben Werte wie D3DCOLOR. Siehe D3DRS_FOGCOLOR.
FogDensity schweben Dieselben Werte wie D3DRS_FOGDENSITY.
FogEnable Bool True oder False. Dieselben Werte wie D3DRS_FOGENABLE.
FogEnd schweben Dieselben Werte wie D3DRS_FOGEND.
FogStart schweben Dieselben Werte wie D3DRS_FOGSTART.
FogTableMode dword Dieselben Werte wie D3DFOGMODE. Siehe D3DRS_FOGTABLEMODE in D3DRENDERSTATETYPE.
FogVertexMode dword Dieselben Werte wie D3DFOGMODE ohne das Präfix D3DFOG_.
IndexedVertexBlendEnable Bool True oder False. Dieselben Werte wie D3DRS_INDEXEDVERTEXBLENDENABLE.
Beleuchtung Bool True oder False. Dieselben Werte wie D3DRS_LIGHTING.
LocalViewer Bool True oder False. Dieselben Werte wie D3DRS_LOCALVIEWER.
MultiSampleAntialias Bool Dieselben Werte wie D3DRS_MULTISAMPLEANTIALIAS.
MultiSampleMask dword Dieselben Werte wie D3DRS_MULTISAMPLEMASK.
NormalizeNormals Bool True oder False. Dieselben Werte wie D3DRS_NORMALIZENORMALS.
PatchSegments schweben Dieselben Werte wie nSegments in SetNPatchMode.
PointScale_A schweben Dieselben Werte wie D3DRS_POINTSCALE_A.
PointScale_B schweben Dieselben Werte wie D3DRS_POINTSCALE_B.
PointScale_C schweben Dieselben Werte wie D3DRS_POINTSCALE_C.
PointScaleEnable Bool Dieselben Werte wie D3DRS_POINTSCALEENABLE.
PointSize schweben Dieselben Werte wie D3DRS_POINTSIZE.
PointSize_Min schweben Dieselben Werte wie D3DRS_POINTSIZE_MIN.
PointSize_Max schweben Dieselben Werte wie D3DRS_POINTSIZE_MAX ohne das Präfix D3DRS_.
PointSpriteEnable Bool True oder False. Dieselben Werte wie D3DRS_POINTSPRITEENABLE.
RangeFogEnable Bool True oder False. Dieselben Werte wie D3DRS_RANGEFOGENABLE.
SpekulärEnable Bool True oder False. Dieselben Werte wie D3DRS_SPECULARENABLE.
SpecularMaterialSource dword Dieselben Werte wie D3DMATERIALCOLORSOURCE ohne das Präfix D3DMCS_. Siehe D3DRS_SPECULARMATERIALSOURCE.
TweenFactor schweben Dieselben Werte wie D3DRS_TWEENFACTOR.
VertexBlend dword Dieselben Werte wie D3DVERTEXBLENDFLAGS ohne das Präfix D3DVBF_. Siehe D3DRS_VERTEXBLEND.

 

Beispiel:

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

Dadurch wird die Umgebungsfarbe float4<0,7f, 0,0f, 0,0f, 1,0f>, den Hintergrundkullingmodus auf den Uhrzeigersinn festgelegt und die Nebelfarbe auf Rot festgelegt.

Samplerzustände

Ein Samplerstatus stellt ein Samplerobjekt dar.

Zustand Art Werte
Probierer Probierer NULL-oder einen Samplerstatusblock.

 

Samplerstufenstatus

Samplerstufenzustände werden verwendet, um Texturen zu beispielen. Der Samplerstatus bestimmt Filtertypen und Texturadressierungsmodi.

Samplerstatus Art Werte
AddressU[16] dword Dieselben Werte wie D3DTEXTUREADDRESS ohne das Präfix D3DTADDRESS_. Siehe D3DSAMP_ADDRESSU.
AddressV[16] dword Dieselben Werte wie D3DTEXTUREADDRESS ohne das Präfix D3DTADDRESS_. Siehe D3DSAMP_ADDRESSV.
AddressW[16] dword Dieselben Werte wie D3DTEXTUREADDRESS ohne das Präfix D3DTADDRESS_. Siehe D3DSAMP_ADDRESSW.
BorderColor[16] D3DCOLOR Dieselben Werte wie D3DTEXTUREFILTERTYPE ohne das Präfix D3DTEXF_. Siehe D3DSAMP_BORDERCOLOR.
MagFilter[16] dword Dieselben Werte wie D3DTEXTUREFILTERTYPE ohne das Präfix D3DTEXF_. Siehe D3DSAMP_MAGFILTER.
MaxAnisotropy[16] dword Dieselben Werte wie D3DSAMP_MAXANISOTROPY ohne das Präfix D3DSAMP_.
MaxMipLevel[16] Int Dieselben Werte wie D3DSAMP_MAXMIPLEVEL ohne das Präfix D3DSAMP_.
MinFilter[16] dword Dieselben Werte wie D3DSAMP_MINFILTER ohne das Präfix D3DSAMP_.
MipFilter[16] dword Dieselben Werte wie D3DSAMP_MIPFILTER ohne das Präfix D3DSAMP_.
MipMapLodBias[16] schweben Dieselben Werte wie D3DSAMP_MIPMAPLODBIAS ohne das Präfix D3DSAMP_.
SRGBTexture Bool Derselbe Wert wie D3DSAMP_SRGBTEXTURE ohne das Präfix D3DSAMP_.

 

Beispiel:

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

Dadurch werden UVW-Werte zwischen 0 und 1 eingeklemmt.

Shaderzustände

Es gibt nur zwei Effekt-Shaderzustände: eines, das einem Vertex-Shaderobjekt und dem anderen zugeordnet ist, das einem Pixelshaderobjekt zugeordnet ist.

Shaderstatus Art Werte
PixelShader Pixelshader NULL-, einen Assemblyblock, ein Kompilierungsziel oder einen Pixelshaderparameter.
VertexShader Vertexshader NULL-, einen Assemblyblock, ein Kompilierungsziel oder einen Pixelshaderparameter.

 

Beispiel:

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

Dadurch wird VSTexture, ein zuvor in der FX-Datei definierter Vertex-Shader, in die Vertex-Shaderversion 1.1 kompiliert und dann diesen kompilierten Shader als Vertex-Shader festgelegt. Der Pixelshader wird NULL-zugewiesen.

Shaderkonstantenzustände

Shaderkonstantenzustände werden für den Zugriff auf Shaderkonstantenparameter verwendet.

Shaderkonstantenstatus Art Werte
PixelShaderConstant float[m[n]] m x n Array von Floats; m und n sind optional.
PixelShaderConstant1 float4 Ein 4D-Gleitkomma.
PixelShaderConstant2 float4x2 Zwei 4D-Floats.
PixelShaderConstant3 float4x3 Drei 4D-Floats.
PixelShaderConstant4 float4x4 Vier 4D-Floats.
PixelShaderConstantB bool[m[n]] m x n Array von Booleschen Elementen; m und n sind optional.
PixelShaderConstantI int[m[n]] m x n Array von Ints. m und n sind optional.
PixelShaderConstantF float[m[n]] m x n Array von Floats. m und n sind optional.
VertexShaderConstant float[m[n]] m x n Array von Floats. m und n sind optional.
VertexShaderConstant1 float4 Ein 4D-Gleitkomma.
VertexShaderConstant2 float4x2 Zwei 4D-Floats.
VertexShaderConstant3 float4x3 Drei 4D-Floats.
VertexShaderConstant4 float4x4 Vier 4D-Floats.
VertexShaderConstantB bool[m[n]] m x n Array von Bools. m und n sind optional.
VertexShaderConstantI int[m[n]] m x n Array von Ints. m und n sind optional.
VertexShaderConstantF float[m[n]] m x n Array von Floats. m und n sind optional.

 

Texturzustände

Texturzustände initialisieren Texturen, die vom Multitexture-Blender verwendet werden.

Texturzustand Art Werte
Textur[8] Textur NULL-oder einen Texturparameter.

 

Texturstufenzustände

Texturstufenzustände richten Texturen und die Texturphasen im Multitexture-Blender ein.

Texturstufenzustand Art Werte
AlphaOp[8] dword Identisch mit D3DTEXTUREOP ohne das Präfix D3DTOP_. Siehe D3DTSS_ALPHAOP.
AlphaArg0[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_ALPHAARG0.
AlphaArg1[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_ALPHAARG1.
AlphaArg2[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_ALPHAARG2.
ColorArg0[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_COLORARG0.
ColorArg1[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_COLORARG1.
ColorArg2[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_COLORARG2.
ColorOp[8] dword Identisch mit D3DTEXTUREOP ohne das Präfix D3DTOP_. Siehe D3DTSS_COLOROP.
BumpEnvLScale[8] schweben Dieselben Werte wie D3DTSS_BUMPENVLSCALE ohne das Präfix D3DTSS_TCI.
BumpEnvLOffset[8] schweben Dieselben Werte wie D3DTSS_BUMPENVLOFFSET ohne das Präfix D3DTSS_TCI.
BumpEnvMat00[8] schweben Dieselben Werte wie D3DTSS_BUMPENVMAT00.
BumpEnvMat01[8] schweben Dieselben Werte wie D3DTSS_BUMPENVMAT01.
BumpEnvMat10[8] schweben Dieselben Werte wie D3DTSS_BUMPENVMAT10.
BumpEnvMat11[8] schweben Dieselben Werte wie D3DTSS_BUMPENVMAT11.
ResultArg[8] dword Identisch mit D3DTA- ohne das Präfix D3DTA_. Siehe D3DTSS_RESULTARG.
TexCoordIndex[8] dword Dieselben Werte wie D3DTSS_TEXCOORDINDEX ohne das Präfix D3DTSS_TCI.
TextureTransformFlags[8] dword Dieselben Werte wie D3DTEXTURETRANSFORMFLAGS Werte ohne das Präfix D3DTTFF_. Siehe D3DTSS_TEXTURETRANSFORMFLAGS.

 

Transformieren von Zuständen

Legen Sie Transformationszustände fest, um Transformationsmatrizen zu initialisieren. Effekte verwenden transponierte Matrizen zur Effizienz. Sie können transponierte Matrizen für einen Effekt bereitstellen, oder ein Effekt transponiert die Matrizen automatisch, bevor Sie sie verwenden.

Transformieren des Zustands Art Werte
ProjectionTransform float4x4 Eine 4x4-Matrix von Floats. Dieselben Werte wie D3DTS_PROJECTION ohne das Präfix D3DTS_.
TextureTransform[8] float4x4 Eine 4x4-Matrix von Floats. Dieselben Werte wie D3DTRANSFORMSTATETYPE ohne das Präfix D3DTS_.
ViewTransform float4x4 Eine 4x4-Matrix von Floats. Dieselben Werte wie D3DTS_VIEW ohne das Präfix D3DTS_.
WorldTransform float4x4 Eine 4x4-Matrix von Floats.

 

Effektformat