Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
- Materialzustände
- Renderzustände
- Sampler states
- Sampler-Phasenstatus
- Shaderzustände
- Konstantenstatus des Shaders
- Texturzustände
- Texturstufenzustände
- Transformationszustände
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:
|
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. |