Partager via


États d’effet (Direct3D 9)

Les états d’effet sont utilisés pour initialiser les états de pipeline en préparation du traitement de vertex et de 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 internes.
  • expression : expression d’affectation d’état. 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 s’attend à ce que les valeurs se situent lorsque l’effet les affecte. Les types de données attendus par chaque état sont répertoriés ci-dessous.

Notez que l’interface d’effet tente de convertir les valeurs en type approprié dès que possible. Les valeurs littérales peuvent être castées au moment de la compilation. Les non-littéraux (c’est-à-dire les variables régulières) doivent être castés lorsque les méthodes Set appropriées sont appelées. Par exemple, l’interface d’effet caste les 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 d’effet sont déjà le type correct et n’auront pas besoin de cast. Si le runtime ne parvient pas à convertir une valeur, une erreur est retournée.

Les états d’effet peuvent être divisés en catégories suivantes :

États lumineux

Pour optimiser les performances d’application d’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 parvenez 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 légers individuellement.

État clair Type Valeurs
LightAmbient[n] float4 Consultez le membre Ambient de D3DLIGHT9.
LightAttenuation0[n] flotter Consultez le membre attenuation0 de D3DLIGHT9.
LightAttenuation1[n] flotter Consultez le membre attenuation1 de D3DLIGHT9.
LightAttenuation2[n] flotter Consultez le membre Attenuation2 de D3DLIGHT9.
LightDiffuse[n] float4 Consultez le membre Diffuse de D3DLIGHT9.
LightDirection[n] float3 Consultez le membre Direction de D3DLIGHT9.
LightEnable[n] Bool TRUE ou FALSE. Consultez l’argument bEnable dans LightEnable.
LightFalloff[n] flotter D3DCOLORVALUE. Voir le membre Falloff de D3DLIGHT9.
LightPhi[n] flotter Voir le membre Phi de D3DLIGHT9.
LightPosition[n] float3 Consultez le membre Position de D3DLIGHT9.
LightRange[n] flotter Consultez le membre range de D3DLIGHT9.
LightSpecular[n] float4 Consultez le membre spéculaire de D3DLIGHT9.
LightTheta[n] flotter Consultez le membre Theta de D3DLIGHT9.
LightType[n] dword Même valeur que le tableau de valeurs jusqu’à n D3DLIGHTTYPE sans 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 permettra l’éclairage, d’éclairer le type, de définir la position de lumière sur float3<10.0f, 1.0f, 23.0f>, et définir la couleur ambiante sur float4<0.7f, 0.0f, 0.0f, 1.0f>.

États matériels

Les états que vous ne parvenez 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 matériels individuellement.

État matériel Type Valeurs
MaterialAmbient float4 Même valeur que ambiante
MaterialDiffuse float4 Même valeur que diffuse
MaterialEmissive float4 Même valeur que Emissive
MaterialPower flotter Même valeur que Power
MaterialSpecular float4 Même valeur que Specular

 

Exemple:

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

Cela définit la couleur diffuse sur float4<0.7f, 0.0f, 0.0f, 1.0f> et rendre la puissance du matériau 3.0f.

États de rendu

Il existe deux types d’états de rendu :

États de rendu du canal de pixels

Les états de rendu des fichiers d’effet ont des noms similaires aux états de pipeline de fonction fixe, souvent avec le préfixe supprimé.

État de rendu Type Valeurs
AlphaBlendEnable Bool True ou False. Mêmes valeurs que D3DRS_ALPHABLENDENABLE dans D3DRENDERSTATETYPE.
AlphaFunc dword Mêmes valeurs que D3DCMPFUNC sans préfixe D3DCMP_. Voir D3DRS_ALPHAFUNC.
AlphaRef dword Mêmes valeurs que D3DRS_ALPHAREF.
AlphaTestEnable dword True ou False. Voir D3DRS_ALPHATESTENABLE.
BlendOp dword Mêmes valeurs que D3DBLENDOP sans préfixe D3DBLENDOP_.
ColorWriteEnable dword Combinaison au niveau du bit rouge, vert, BLEU et ALPHA. Voir D3DRS_COLORWRITEENABLE.
DepthBias flotter Mêmes valeurs que D3DRS_DEPTHBIAS.
DestBlend dword Mêmes valeurs que D3DBLEND sans préfixe D3DBLEND_.
DitherEnable Bool True ou False. Mêmes valeurs que D3DRS_DITHERENABLE.
FillMode dword Mêmes valeurs que D3DFILLMODE sans préfixe D3DFILL_.
LastPixel dword True ou False. Voir D3DRS_LASTPIXEL.
ShadeMode dword Mêmes valeurs que D3DSHADEMODE sans préfixe D3DSHADE_.
SlopeScaleDepthBias flotter Mêmes valeurs que D3DRS_SLOPESCALEDEPTHBIAS.
SrcBlend dword Mêmes valeurs que D3DBLEND sans préfixe D3DBLEND_.
SRGBWriteEnable Bool True ou False. Mêmes valeurs que D3DRS_SRGBWRITEENABLE.
GabaritEnable Bool True ou False. Mêmes valeurs que D3DRS_STENCILENABLE.
GabaritFail dword Mêmes valeurs que D3DSTENCILCAPS sans préfixe D3DSTENCILCAP_. Voir D3DRS_STENCILFAIL.
GabaritFunc dword Mêmes valeurs que D3DCMPFUNC sans préfixe D3DCMP_. Voir D3DRS_STENCILFUNC.
StencilMask dword Mêmes valeurs que D3DRS_STENCILMASK.
StencilPass dword Mêmes valeurs que D3DSTENCILCAPS sans préfixe D3DSTENCILCAP_. Voir D3DRS_STENCILPASS.
GabaritRef Int Mêmes valeurs que D3DRS_STENCILREF.
StencilWriteMask dword Mêmes valeurs que D3DRS_STENCILWRITEMASK.
StencilZFail dword Mêmes valeurs que D3DSTENCILCAPS sans préfixe D3DSTENCILCAP_. Voir D3DRS_STENCILZFAIL.
TextureFactor dword Mêmes valeurs que D3DCOLOR. Mêmes valeurs que D3DRS_TEXTUREFACTOR.
Wrap0 - Wrap15 dword Les valeurs sont identiques aux valeurs utilisées par D3DRS_WRAP0. Les valeurs valides sont les suivantes :
  • 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 préfixe D3DZB_.
ZFunc dword Mêmes valeurs que D3DCMPFUNC sans préfixe D3DCMP_. Voir D3DRS_ZFUNC.
ZWriteEnable Bool True ou False. Voir D3DRS_ZWRITEENABLE.

Exemple:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Cela permet de fusionner alpha et de rendre tous les rendu de géométries dans le fil.

États de rendu du canal de vertex

Les états de rendu des fichiers d’effet ont des noms similaires aux états de pipeline de fonction fixe, souvent avec le préfixe supprimé.

État de rendu Type Valeurs
Ambiant float4 Mêmes valeurs que D3DRS_AMBIENT.
AmbientMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans préfixe D3DMCS_. Voir D3DRS_AMBIENTMATERIALSOURCE.
Écrêtage Bool True ou False. Mêmes valeurs que D3DRS_CLIPPING.
ClipPlaneEnable dword Combinaison au niveau du bit de D3DCLIPPLANE0 - macros D3DCLIPPLANE5. Consultez D3DCLIPPLANEn et D3DRS_CLIPPLANEENABLE.
ColorVertex Bool True ou False. Mêmes valeurs que D3DRS_COLORVERTEX.
CullMode dword Mêmes valeurs que D3DCULL sans préfixe D3DCULL_.
DiffuseMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans préfixe D3DMCS_. Voir D3DRS_DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans préfixe D3DMCS_. Voir D3DRS_EMISSIVEMATERIALSOURCE.
FogColor dword Mêmes valeurs que D3DCOLOR. Voir D3DRS_FOGCOLOR.
FogDensity flotter Mêmes valeurs que D3DRS_FOGDENSITY.
FogEnable Bool True ou False. Mêmes valeurs que D3DRS_FOGENABLE.
FogEnd flotter Mêmes valeurs que D3DRS_FOGEND.
FogStart flotter Mêmes valeurs que D3DRS_FOGSTART.
FogTableMode dword Mêmes valeurs que D3DFOGMODE. Voir D3DRS_FOGTABLEMODE dans D3DRENDERSTATETYPE.
FogVertexMode dword Mêmes valeurs que D3DFOGMODE sans préfixe D3DFOG_.
IndexedVertexBlendEnable Bool True ou False. Mêmes valeurs que D3DRS_INDEXEDVERTEXBLENDENABLE.
Éclairage Bool True ou False. Mêmes valeurs que D3DRS_LIGHTING.
LocalViewer Bool True ou False. Mêmes valeurs que D3DRS_LOCALVIEWER.
MultiSampleAntialias Bool Mêmes valeurs que D3DRS_MULTISAMPLEANTIALIAS.
MultiSampleMask dword Mêmes valeurs que D3DRS_MULTISAMPLEMASK.
NormalizeNormals Bool True ou False. Mêmes valeurs que D3DRS_NORMALIZENORMALS.
PatchSegments flotter Mêmes valeurs que les nSegments dans SetNPatchMode.
PointScale_A flotter Mêmes valeurs que D3DRS_POINTSCALE_A.
PointScale_B flotter Mêmes valeurs que D3DRS_POINTSCALE_B.
PointScale_C flotter Mêmes valeurs que D3DRS_POINTSCALE_C.
PointScaleEnable Bool Mêmes valeurs que D3DRS_POINTSCALEENABLE.
PointSize flotter Mêmes valeurs que D3DRS_POINTSIZE.
PointSize_Min flotter Mêmes valeurs que D3DRS_POINTSIZE_MIN.
PointSize_Max flotter Mêmes valeurs que D3DRS_POINTSIZE_MAX sans préfixe de D3DRS_.
PointSpriteEnable Bool True ou False. Mêmes valeurs que D3DRS_POINTSPRITEENABLE.
RangeFogEnable Bool True ou False. Mêmes valeurs que D3DRS_RANGEFOGENABLE.
SpecularEnable Bool True ou False. Mêmes valeurs que D3DRS_SPECULARENABLE.
SpecularMaterialSource dword Mêmes valeurs que D3DMATERIALCOLORSOURCE sans préfixe D3DMCS_. Voir D3DRS_SPECULARMATERIALSOURCE.
TweenFactor flotter Mêmes valeurs que D3DRS_TWEENFACTOR.
VertexBlend dword Mêmes valeurs que D3DVERTEXBLENDFLAGS sans préfixe de D3DVBF_. Voir D3DRS_VERTEXBLEND.

 

Exemple:

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

Cela rend la couleur ambiante float4<0.7f, 0.0f, 0.0f, 1.0f>, définissez le mode de culage backface sur contre-horloge et définissez la couleur de brouillard sur rouge.

États de l’échantillonneur

Un état sampler représente un objet sampler.

État Type Valeurs
Échantillonneur échantillonneur NULL ou un bloc d’état sampler.

 

États d’étape de l’échantillonneur

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

État de l’échantillonneur Type Valeurs
AddressU[16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans préfixe D3DTADDRESS_. Voir D3DSAMP_ADDRESSU.
AddressV[16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans préfixe D3DTADDRESS_. Voir D3DSAMP_ADDRESSV.
AddressW[16] dword Mêmes valeurs que D3DTEXTUREADDRESS sans préfixe D3DTADDRESS_. Voir D3DSAMP_ADDRESSW.
BorderColor[16] D3DCOLOR Mêmes valeurs que D3DTEXTUREFILTERTYPE sans préfixe de D3DTEXF_. Voir D3DSAMP_BORDERCOLOR.
MagFilter[16] dword Mêmes valeurs que D3DTEXTUREFILTERTYPE sans préfixe de D3DTEXF_. Voir D3DSAMP_MAGFILTER.
MaxAnisotropy[16] dword Mêmes valeurs que D3DSAMP_MAXANISOTROPY sans préfixe D3DSAMP_.
MaxMipLevel[16] Int Mêmes valeurs que D3DSAMP_MAXMIPLEVEL sans préfixe D3DSAMP_.
MinFilter[16] dword Mêmes valeurs que D3DSAMP_MINFILTER sans préfixe D3DSAMP_.
MipFilter[16] dword Mêmes valeurs que D3DSAMP_MIPFILTER sans préfixe D3DSAMP_.
MipMapLodBias[16] flotter Mêmes valeurs que D3DSAMP_MIPMAPLODBIAS sans préfixe D3DSAMP_.
SRGBTexture Bool Même valeur que D3DSAMP_SRGBTEXTURE sans préfixe D3DSAMP_.

 

Exemple:

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

Cela bloque les valeurs UVW entre 0 et 1.

États du nuanceur

Il n’existe que deux états de nuanceur d’effet : un associé à un objet nuanceur de vertex et l’autre associé à 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 compile VSTexture, un nuanceur de vertex défini précédemment dans le fichier .fx, vers le nuanceur de vertex version 1.1, puis définit ce nuanceur compilé comme nuanceur de vertex. Le nuanceur de pixels est affecté à NULL .

États des constantes du nuanceur

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

État de la constante du nuanceur Type Valeurs
PixelShaderConstant float[m[n]] m x n tableau de floats ; m et n sont facultatifs.
PixelShaderConstant1 float4 Un float 4D.
PixelShaderConstant2 float4x2 Deux flotteurs 4D.
PixelShaderConstant3 float4x3 Trois flotteurs 4D.
PixelShaderConstant4 float4x4 Quatre flotteurs 4D.
PixelShaderConstantB bool[m[n]] m x n tableau de bools ; m et n sont facultatifs.
PixelShaderConstantI int[m[n]] m x n tableau d’ints. m et n sont facultatifs.
PixelShaderConstantF float[m[n]] m x n tableau de floats. m et n sont facultatifs.
VertexShaderConstant float[m[n]] m x n tableau de floats. m et n sont facultatifs.
VertexShaderConstant1 float4 Un float 4D.
VertexShaderConstant2 float4x2 Deux flotteurs 4D.
VertexShaderConstant3 float4x3 Trois flotteurs 4D.
VertexShaderConstant4 float4x4 Quatre flotteurs 4D.
VertexShaderConstantB bool[m[n]] m x n tableau de bools. m et n sont facultatifs.
VertexShaderConstantI int[m[n]] m x n tableau d’ints. m et n sont facultatifs.
VertexShaderConstantF float[m[n]] m x n tableau de floats. m et n sont facultatifs.

 

États de texture

Les états de texture initialisent les textures utilisées par le blender multitexture.

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

 

États de l’étape de texture

Les états d’étape de texture configurent les textures et les étapes de texture dans le mélangeur multitexteur.

État de l’étape de texture Type Valeurs
AlphaOp[8] dword Identique à D3DTEXTUREOP sans préfixe de D3DTOP_. Voir D3DTSS_ALPHAOP.
AlphaArg0[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_ALPHAARG0.
AlphaArg1[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_ALPHAARG1.
AlphaArg2[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_ALPHAARG2.
ColorArg0[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_COLORARG0.
ColorArg1[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_COLORARG1.
ColorArg2[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_COLORARG2.
ColorOp[8] dword Identique à D3DTEXTUREOP sans préfixe de D3DTOP_. Voir D3DTSS_COLOROP.
BumpEnvLScale[8] flotter Mêmes valeurs que D3DTSS_BUMPENVLSCALE sans préfixe D3DTSS_TCI.
BumpEnvLOffset[8] flotter Mêmes valeurs que D3DTSS_BUMPENVLOFFSET sans préfixe D3DTSS_TCI.
BumpEnvMat00[8] flotter Mêmes valeurs que D3DTSS_BUMPENVMAT00.
BumpEnvMat01[8] flotter Mêmes valeurs que D3DTSS_BUMPENVMAT01.
BumpEnvMat10[8] flotter Mêmes valeurs que D3DTSS_BUMPENVMAT10.
BumpEnvMat11[8] flotter Mêmes valeurs que D3DTSS_BUMPENVMAT11.
ResultArg[8] dword Identique à D3DTA sans préfixe de D3DTA_. Voir D3DTSS_RESULTARG.
TexCoordIndex[8] dword Mêmes valeurs que D3DTSS_TEXCOORDINDEX sans préfixe D3DTSS_TCI.
TextureTransformFlags[8] dword Mêmes valeurs que les valeurs D3DTEXTURETRANSFORMFLAGS sans préfixe D3DTTFF_. Voir D3DTSS_TEXTURETRANSFORMFLAGS.

 

États de transformation

Définissez les états de transformation pour initialiser les matrices de transformation. Les effets utilisent des matrices transposees pour l’efficacité. Vous pouvez fournir des matrices transposees à un effet, ou un effet transpose automatiquement les matrices avant de les utiliser.

État de transformation Type Valeurs
ProjectionTransform float4x4 Matrice 4x4 de floats. Mêmes valeurs que D3DTS_PROJECTION sans préfixe D3DTS_.
TextureTransform[8] float4x4 Matrice 4x4 de floats. Mêmes valeurs que D3DTRANSFORMSTATETYPE sans préfixe D3DTS_.
ViewTransform float4x4 Matrice 4x4 de floats. Mêmes valeurs que D3DTS_VIEW sans préfixe D3DTS_.
WorldTransform float4x4 Matrice 4x4 de floats.

 

format d’effet