États d’effet (Direct3D 9)

Les États d’effet sont utilisés pour initialiser les États de pipeline en préparation du traitement des vertex et des pixels.

effect state [ [index] ] = expression;

Où :

  • État d’effet : similaire aux États de pipeline de fonction fixe traditionnels. La liste complète des États est fournie ci-dessous.
  • [[ ] index ] -Index entier facultatif. L’index identifie un état particulier dans un tableau d’États d’effet. Les crochets externes indiquent qu’un index est facultatif. Si un index est utilisé, veillez à utiliser les crochets intérieurs.
  • expression d’assignation d’état d’expression. Consultez expressions (Direct3D 9).

Chaque État a un type de données natif. Il s’agit du type de données dans lequel l’État attend des valeurs lorsque l’effet les affecte. Les types de données attendus par chaque État sont répertoriés ci-dessous.

Notez que l’interface Effect tentera d’effectuer un cast des valeurs vers le type approprié le plus tôt possible. Les valeurs littérales peuvent être converties au moment de la compilation. Les non-littéraux (c’est-à-dire les variables régulières) doivent être convertis lorsque les méthodes Set appropriées sont appelées. Par exemple, l’interface Effect effectue un cast des valeurs définies à l’aide de SetBool, SetValueet d’autres fonctions similaires, si nécessaire. Pour de meilleures performances, assurez-vous que les valeurs passées à l’interface Effect sont déjà du type correct et n’auront pas besoin d’être castées. Si le runtime ne parvient pas à effectuer un cast d’une valeur, une erreur est retournée.

Les États d’effet peuvent être répartis dans les catégories suivantes :

États légers

Pour activer les meilleures performances pour appliquer un effet, tous les composants d’une lumière ou d’un matériau doivent être spécifiés dans le fichier d’effet. Les États que vous ne pouvez pas déclarer sont définis sur une valeur par défaut, car il n’existe aucun moyen pour Direct3D de définir les États légers individuellement.

État clair Type Valeurs
LightAmbient [ n] float4 Consultez le membre ambiant de D3DLIGHT9.
LightAttenuation0 [ n] float Consultez le membre Attenuation0 de D3DLIGHT9.
LightAttenuation1 [ n] float Consultez le membre Attenuation1 de D3DLIGHT9.
LightAttenuation2 [ n] float Consultez le membre Attenuation2 de D3DLIGHT9.
LightDiffuse [ n] float4 Consultez le membre diffus de D3DLIGHT9.
LightDirection [ n] float3 Consultez le membre direction de D3DLIGHT9.
[N] bool True ou false. Consultez l’argument bEnable dans Eclaircir.
LightFalloff [ n] float D3DCOLORVALUE. Consultez le membre de retrait de D3DLIGHT9.
LightPhi [ n] float Consultez le membre Phi de D3DLIGHT9.
LightPosition [ n] float3 Consultez le membre position de D3DLIGHT9.
LightRange [ n] float Consultez le membre de plage de D3DLIGHT9.
LightSpecular [ n] float4 Consultez le membre spéculaire de D3DLIGHT9.
LightTheta [ n] float Consultez le membre thêta de D3DLIGHT9.
LightType [ n] dword Même valeur que le tableau de n valeurs jusqu’à n D3DLIGHTTYPE sans le _ préfixe D3DLIGHT.

Exemple :

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

Cela permet d’activer l’éclairage, d’éclairer le type, de définir la position de la lumière sur float3<10.0 f, 1.0 f, 23.0 f> et de définir la couleur ambiante sur float4<0,7 f, 0.0 f, 0.0 f, 1.0 f>.

États du matériau

Les États que vous ne pouvez pas déclarer sont définis sur une valeur par défaut, car il n’existe aucun moyen pour Direct3D de définir des États de matériau individuellement.

État du matériau Type Valeurs
Propriétés matériau float4 Même valeur que l' ambiant
MaterialDiffuse float4 Valeur identique à la diffusion
Matériau émissif float4 Même valeur que émissif
MaterialPower float Même valeur que l' alimentation
MaterialSpecular float4 Même valeur que spéculaire

Exemple :

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

Cela permet de définir la couleur diffuse sur float4<0,7 f, 0.0 f, 0.0 f, 1.0 f> et de rendre la puissance de la documentation 3.0 f.

États de rendu

Il existe deux types d’États de rendu :

États de rendu de canal de pixels

Les États de rendu des fichiers Effects ont des noms semblables aux États de pipeline de fonction fixe, souvent avec le préfixe supprimé.

| | | État du rendu | Tapez | Valeurs | | AlphaBlendEnable | bool | True ou false. Mêmes valeurs que D3DRS_ALPHABLENDENABLE dans D3DRENDERSTATETYPE. | | AlphaFunc | DWORD | Mêmes valeurs que D3DCMPFUNC sans le préfixe D3DCMP_. Consultez D3DRS_ALPHAFUNC. | | AlphaRef | DWORD | Mêmes valeurs que D3DRS_ALPHAREF. | | AlphaTestEnable | DWORD | True ou false. Consultez D3DRS_ALPHATESTENABLE. | | BlendOp | DWORD | Mêmes valeurs que D3DBLENDOP sans le préfixe D3DBLENDOP_. | | ColorWriteEnable | DWORD | Combinaison d’opérations de bits de RED | VERT | BLEU | Lettres. Consultez D3DRS_COLORWRITEENABLE. | | DepthBias | float | Mêmes valeurs que D3DRS_DEPTHBIAS. | | DestBlend | DWORD | Mêmes valeurs que D3DBLEND sans le préfixe D3DBLEND_. | | DitherEnable | bool | True ou false. Mêmes valeurs que D3DRS_DITHERENABLE. | | FillMode | DWORD | Mêmes valeurs que D3DFILLMODE sans le préfixe D3DFILL_. | | LastPixel | DWORD | True ou false. Consultez D3DRS_LASTPIXEL. | | ShadeMode | DWORD | Mêmes valeurs que D3DSHADEMODE sans le préfixe D3DSHADE_. | | SlopeScaleDepthBias | float | Mêmes valeurs que D3DRS_SLOPESCALEDEPTHBIAS. | | SrcBlend | DWORD | Mêmes valeurs que D3DBLEND sans le préfixe D3DBLEND_. | | SRGBWriteEnable | bool | True ou false. Mêmes valeurs que D3DRS_SRGBWRITEENABLE. | | StencilEnable | bool | True ou false. Mêmes valeurs que D3DRS_STENCILENABLE. | | StencilFail | DWORD | Mêmes valeurs que D3DSTENCILCAPS sans le préfixe D3DSTENCILCAP_. Consultez D3DRS_STENCILFAIL. | | StencilFunc | DWORD | Mêmes valeurs que D3DCMPFUNC sans le préfixe D3DCMP_. Consultez D3DRS_STENCILFUNC. | | StencilMask | DWORD | Mêmes valeurs que D3DRS_STENCILMASK. | | StencilPass | DWORD | Mêmes valeurs que D3DSTENCILCAPS sans le préfixe D3DSTENCILCAP_. Consultez D3DRS_STENCILPASS. | | StencilRef | entier | Mêmes valeurs que D3DRS_STENCILREF. | | StencilWriteMask | DWORD | Mêmes valeurs que D3DRS_STENCILWRITEMASK. | | StencilZFail | DWORD | Mêmes valeurs que D3DSTENCILCAPS sans le préfixe D3DSTENCILCAP_. Consultez D3DRS_STENCILZFAIL. | | TextureFactor | DWORD | Mêmes valeurs que D3DCOLOR. Mêmes valeurs que D3DRS_TEXTUREFACTOR. | | Wrap0-Wrap15 | DWORD | Les valeurs sont les mêmes que les valeurs utilisées par D3DRS_WRAP0. Les valeurs autorisées sont :

  • COORD0 (qui correspond à D3DWRAPCOORD_0)
  • COORD1 (qui correspond à D3DWRAPCOORD_1)
  • COORD2 (qui correspond à D3DWRAPCOORD_2)
  • COORD3 (qui correspond à D3DWRAPCOORD_3)
  • U (qui correspond à D3DWRAP_U)
  • V (qui correspond à D3DWRAP_V)
  • W (qui correspond à D3DWRAP_W)
| | ZEnable | DWORD | Mêmes valeurs que D3DZBUFFERTYPE sans le préfixe D3DZB_. | | ZFunc | DWORD | Mêmes valeurs que D3DCMPFUNC sans le préfixe D3DCMP_. Consultez D3DRS_ZFUNC. | | ZWriteEnable | bool | True ou false. Consultez D3DRS_ZWRITEENABLE. |

Exemple :

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Cela active la fusion alpha et rend toutes les géométries affichées en filaire.

États de rendu du canal de vertex

Les États de rendu des fichiers Effects ont des noms semblables aux États de pipeline de fonction fixe, souvent avec le préfixe supprimé.

État du rendu Type Valeurs
Ambiant float4 Mêmes valeurs que D3DRS _ ambiant.
AmbientMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans le _ préfixe D3DMCS. Consultez D3DRS _ AMBIENTMATERIALSOURCE.
Découpage bool Vrai ou faux. Mêmes valeurs que le _ découpage D3DRS.
ClipPlaneEnable dword Combinaison d’opérations de bits de macros D3DCLIPPLANE0-D3DCLIPPLANE5. Consultez D3DCLIPPLANEn et D3DRS _ CLIPPLANEENABLE.
ColorVertex bool Vrai ou faux. Mêmes valeurs que D3DRS _ COLORVERTEX.
CullMode dword Mêmes valeurs que D3DCULL sans le _ préfixe D3DCULL.
DiffuseMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans le _ préfixe D3DMCS. Consultez D3DRS _ DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans le _ préfixe D3DMCS. Consultez D3DRS _ EMISSIVEMATERIALSOURCE.
FogColor dword Mêmes valeurs que D3DCOLOR. Consultez D3DRS _ FOGCOLOR.
FogDensity float Mêmes valeurs que D3DRS _ FOGDENSITY.
FogEnable bool Vrai ou faux. Mêmes valeurs que D3DRS _ FOGENABLE.
FogEnd float Mêmes valeurs que D3DRS _ FOGEND.
FogStart float Mêmes valeurs que D3DRS _ FOGSTART.
FogTableMode dword Mêmes valeurs que D3DFOGMODE. Consultez D3DRS _ FOGTABLEMODE dans D3DRENDERSTATETYPE.
FogVertexMode dword Mêmes valeurs que D3DFOGMODE sans le _ préfixe D3DFOG.
IndexedVertexBlendEnable bool Vrai ou faux. Mêmes valeurs que D3DRS _ INDEXEDVERTEXBLENDENABLE.
Éclairage bool Vrai ou faux. Mêmes valeurs que l' _ éclairage D3DRS.
LocalViewer bool Vrai ou faux. Mêmes valeurs que D3DRS _ LOCALVIEWER.
MultiSampleAntialias bool Mêmes valeurs que D3DRS _ MULTISAMPLEANTIALIAS.
MultiSampleMask dword Mêmes valeurs que D3DRS _ MULTISAMPLEMASK.
NormalizeNormals bool Vrai ou faux. Mêmes valeurs que D3DRS _ NORMALIZENORMALS.
PatchSegments float Mêmes valeurs que nSegments dans SetNPatchMode.
PointScale _ A float Mêmes valeurs que D3DRS _ POINTSCALE _ A.
PointScale _ B float Mêmes valeurs que D3DRS _ POINTSCALE _ B.
PointScale _ C float Mêmes valeurs que D3DRS _ POINTSCALE _ C.
PointScaleEnable bool Mêmes valeurs que D3DRS _ POINTSCALEENABLE.
PointSize float Les mêmes valeurs que D3DRS sont _ désignables.
Repointer _ min. float Les mêmes valeurs que D3DRS _ redirigent _ min.
Délimiter _ Max. float Les mêmes valeurs que D3DRS _ redirigent _ Max sans le _ préfixe D3DRS.
PointSpriteEnable bool Vrai ou faux. Mêmes valeurs que D3DRS _ POINTSPRITEENABLE.
RangeFogEnable bool Vrai ou faux. Mêmes valeurs que D3DRS _ RANGEFOGENABLE.
SpecularEnable bool Vrai ou faux. Mêmes valeurs que D3DRS _ SpecularEnable.
SpecularMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans le _ préfixe D3DMCS. Consultez D3DRS _ SPECULARMATERIALSOURCE.
TweenFactor float Mêmes valeurs que D3DRS _ TWEENFACTOR.
VertexBlend dword Mêmes valeurs que D3DVERTEXBLENDFLAGS sans le _ préfixe D3DVBF. Consultez D3DRS _ VERTEXBLEND.

Exemple :

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

Cela rend la couleur ambiante float4<0,7 f, 0.0 f, 0.0 f, 1.0 f>, définir le mode d’élimination des faces arrière pour qu’il s’affiche dans le sens inverse des aiguilles d’une montre et définir la couleur de brouillard sur rouge.

États de l’échantillonneur

Un état de l’échantillonneur représente un objet d’échantillonnage.

State Type Valeurs
Échantillonneur échantillonneur Null, ou un bloc d’état de l’échantillonneur.

États des étapes de l’échantillonneur

Les États des étapes de l’échantillonneur sont utilisés pour échantillonner les textures. L’état de l’échantillonneur détermine les types de filtrage et les modes d’adressage des textures.

État de l’échantillonneur Type Valeurs
Adressed [ 16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans le _ préfixe D3DTADDRESS. Consultez D3DSAMP _ .
AddressV [ 16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans le _ préfixe D3DTADDRESS. Consultez D3DSAMP _ ADDRESSV.
AddressW [ 16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans le _ préfixe D3DTADDRESS. Consultez D3DSAMP _ ADDRESSW.
BorderColor [ 16] D3DCOLOR Mêmes valeurs que D3DTEXTUREFILTERTYPE sans le _ préfixe D3DTEXF. Consultez D3DSAMP _ BORDERCOLOR.
MagFilter [ 16] dword Mêmes valeurs que D3DTEXTUREFILTERTYPE sans le _ préfixe D3DTEXF. Consultez D3DSAMP _ MAGFILTER.
MaxAnisotropy [ 16] dword Mêmes valeurs que D3DSAMP _ MAXANISOTROPY sans le _ préfixe D3DSAMP.
MaxMipLevel [ 16] int Mêmes valeurs que D3DSAMP _ MAXMIPLEVEL sans le _ préfixe D3DSAMP.
MinFilter [ 16] dword Mêmes valeurs que D3DSAMP _ MINFILTER sans le _ préfixe D3DSAMP.
MipFilter [ 16] dword Mêmes valeurs que D3DSAMP _ MIPFILTER sans le _ préfixe D3DSAMP.
MipMapLodBias [ 16] float Mêmes valeurs que D3DSAMP _ MIPMAPLODBIAS sans le _ préfixe D3DSAMP.
SRGBTexture bool Même valeur que D3DSAMP _ SRGBTEXTURE sans le _ préfixe D3DSAMP.

Exemple :

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

Les valeurs UVW doivent être comprises entre 0 et 1.

États du nuanceur

Il n’y a que deux États de nuanceur d’effet : l’un associé à un objet nuanceur vertex et l’autre à un objet nuanceur de pixels.

État du nuanceur Type Valeurs
PixelShader PixelShader Null, un bloc d’assembly, une cible de compilation ou un paramètre de nuanceur de pixels.
VertexShader VertexShader Null, un bloc d’assembly, une cible de compilation ou un paramètre de nuanceur de pixels.

Exemple :

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

Cela compilera VSTexture, un nuanceur de sommets défini plus tôt dans le fichier. FX, à la version 1,1 du nuanceur de sommets, puis définira ce nuanceur compilé comme nuanceur de sommets. Le nuanceur de pixels est assigné à la valeur null.

États constants du nuanceur

Les États de constante de nuanceur sont utilisés pour accéder aux paramètres de constante de nuanceur.

État constant du nuanceur Type Valeurs
PixelShaderConstant float [ m [ n]] Tableau de valeurs float de m x n ; m et n sont facultatifs.
PixelShaderConstant1 float4 Un flottant 4D.
PixelShaderConstant2 float4x2 Deux valeurs en virgule flottante 4D.
PixelShaderConstant3 float4x3 Trois valeurs en virgule flottante 4D.
PixelShaderConstant4 float4x4 Quatre valeurs en virgule flottante 4D.
PixelShaderConstantB bool [ m [ n]] Tableau de bool m x n ; m et n sont facultatifs.
PixelShaderConstantI int [ m [ n]] Tableau d’entiers m x n. m et n sont facultatifs.
PixelShaderConstantF float [ m [ n]] Tableau de valeurs à virgule flottante m x n. m et n sont facultatifs.
VertexShaderConstant float [ m [ n]] Tableau de valeurs à virgule flottante m x n. m et n sont facultatifs.
VertexShaderConstant1 float4 Un flottant 4D.
VertexShaderConstant2 float4x2 Deux valeurs en virgule flottante 4D.
VertexShaderConstant3 float4x3 Trois valeurs en virgule flottante 4D.
VertexShaderConstant4 float4x4 Quatre valeurs en virgule flottante 4D.
VertexShaderConstantB bool [ m [ n]] Tableau de bool m x n. m et n sont facultatifs.
VertexShaderConstantI int [ m [ n]] Tableau d’entiers m x n. m et n sont facultatifs.
VertexShaderConstantF float [ m [ n]] Tableau de valeurs à virgule flottante m x n. m et n sont facultatifs.

États de la texture

Les États de texture initialisent les textures utilisées par le mélangeur de multitexture.

État de la texture Type Valeurs
Texture [ 8] texture Null, ou un paramètre de texture.

États des étapes de texture

Les États de l’étape de texture définissent les textures et les étapes de texture dans le mélangeur de textures multiples.

État de l’étape de texture Type Valeurs
AlphaOp [ 8] dword Identique à D3DTEXTUREOP sans le _ préfixe D3DTOP. Consultez D3DTSS _ ALPHAOP.
AlphaArg0 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ ALPHAARG0.
AlphaArg1 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ ALPHAARG1.
AlphaArg2 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ ALPHAARG2.
ColorArg0 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ COLORARG0.
ColorArg1 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ COLORARG1.
ColorArg2 [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ COLORARG2.
ColorOp [ 8] dword Identique à D3DTEXTUREOP sans le _ préfixe D3DTOP. Consultez D3DTSS _ COLOROP.
BumpEnvLScale [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVLSCALE sans le _ préfixe D3DTSS TCI.
BumpEnvLOffset [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVLOFFSET sans le _ préfixe D3DTSS TCI.
BumpEnvMat00 [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVMAT00.
BumpEnvMat01 [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVMAT01.
BumpEnvMat10 [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVMAT10.
BumpEnvMat11 [ 8] float Mêmes valeurs que D3DTSS _ BUMPENVMAT11.
ResultArg [ 8] dword Identique à D3DTA sans le _ préfixe D3DTA. Consultez D3DTSS _ RESULTARG.
TexCoordIndex [ 8] dword Mêmes valeurs que D3DTSS _ TEXCOORDINDEX sans le _ préfixe D3DTSS TCI.
TextureTransformFlags [ 8] dword Mêmes valeurs que les valeurs D3DTEXTURETRANSFORMFLAGS sans le _ préfixe D3DTTFF. Consultez D3DTSS _ TEXTURETRANSFORMFLAGS.

États de la transformation

Définissez les États de transformation pour initialiser les matrices de transformation. Les effets utilisent des matrices transposées pour des performances optimales. Vous pouvez fournir des matrices transposées à un effet, ou un effet transposera automatiquement les matrices avant de les utiliser.

Transformer l’État Type Valeurs
ProjectionTransform float4x4 Matrice 4x4 de nombres à virgule flottante. Mêmes valeurs que _ la projection D3DTS sans le _ préfixe D3DTS.
TextureTransform [ 8] float4x4 Matrice 4x4 de nombres à virgule flottante. Mêmes valeurs que D3DTRANSFORMSTATETYPE sans le _ préfixe D3DTS.
ViewTransform float4x4 Matrice 4x4 de nombres à virgule flottante. Mêmes valeurs que _ la vue D3DTS sans le _ préfixe D3DTS.
WorldTransform float4x4 Matrice 4x4 de nombres à virgule flottante.

Format d’effet