É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 légers
- États matériels
- États de rendu
- États de l’échantillonneur
- des états d’étape de l’échantillonneur
- états du nuanceur
- États de constante nuanceur
- états de texture
- états d’étape de texture
- États de transformation
É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 :
|
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. |