Share via


効果状態 (Direct3D 9)

効果の状態は、頂点とピクセルの処理に備えてパイプラインの状態を初期化するために使用されます。

effect state [ [index] ] = expression;

各値の説明:

  • effect state - 従来の固定関数パイプラインの状態と同様です。 状態の完全な一覧を以下に示します。
  • [ [index] ] - 省略可能な整数インデックス。 インデックスは、効果状態の配列内の特定の状態を識別します。 外側の角かっこは、インデックスが省略可能であることを示します。 インデックスを使用する場合は、必ず内かっこを使用してください。
  • 式 - 状態代入式。 「Expressions (Direct3D 9)」を参照してください。

各状態にはネイティブ データ型があります。 これは、効果によって値が割り当てられるときに状態が想定するデータ型です。 各状態で想定されるデータ型を次に示します。

エフェクト インターフェイスは、可能な限り早く適切な型に値をキャストしようとします。 リテラル値はコンパイル時にキャストできます。 適切な Set メソッドが呼び出されたときに、非リテラル (つまり通常の変数) をキャストする必要があります。 たとえば、エフェクト インターフェイスは、 SetBoolSetValue、およびその他の同様の関数を使用して設定された値を必要に応じてキャストします。 パフォーマンスを向上させるには、エフェクト インターフェイスに渡される値が既に正しい型であり、キャストは必要ありません。 ランタイムが値をキャストできない場合は、エラーが返されます。

効果の状態は、次のカテゴリに分類できます。

明るい状態

エフェクトの適用に最適なパフォーマンスを実現するには、エフェクト ファイルでライトまたはマテリアルのすべてのコンポーネントを指定する必要があります。 宣言に失敗した状態は、Direct3D でライトの状態を個別に設定する方法がないため、既定値に設定されます。

明るい状態 Type
LightAmbient[n] float4 D3DLIGHT9 のアンビエント メンバーを参照してください。
LightAttenuation0[n] float D3DLIGHT9 の減衰 0 メンバーを参照してください。
LightAttenuation1[n] float D3DLIGHT9 の減衰 1 メンバーを参照してください。
LightAttenuation2[n] float D3DLIGHT9 の減衰 2 メンバーを参照してください。
LightDiffuse[n] float4 D3DLIGHT9 の拡散メンバーを参照してください。
LightDirection[n] float3 D3DLIGHT9 の Direction メンバーを参照してください。
LightEnable[n] bool TRUE または FALSELightEnable の bEnable 引数を参照してください。
LightFalloff[n] float D3DCOLORVALUED3DLIGHT9 の Falloff メンバーを参照してください。
LightPhi[n] float D3DLIGHT9 の Phi メンバーを参照してください。
LightPosition[n] float3 D3DLIGHT9 の Position メンバーを参照してください。
LightRange[n] float D3DLIGHT9 の Range メンバーを参照してください。
LightSpecular[n] float4 D3DLIGHT9 の反射メンバーを参照してください。
LightTheta[n] float D3DLIGHT9 の Theta メンバーを参照してください。
LightType[n] dword D3DLIGHT_ プレフィックスのない最大 n 個の D3DLIGHTTYPE 値の配列と同じ値。

 

例:

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

これにより、照明を有効にし、ポイント 照明をタイプにし、ライトの位置を float3<10.0f、1.0f、23.0f> に設定し、アンビエント カラーを float4<0.7f、0.0f、0.0f、1.0f> に設定します。

材料の状態

宣言に失敗した状態は、Direct3D でマテリアルの状態を個別に設定する方法がないため、既定値に設定されます。

マテリアルの状態 Type
MaterialAmbient float4 アンビエントと同じ値
MaterialDiffuse float4 拡散と同じ値
MaterialEmissive float4 Emissive と同じ値
MaterialPower float Power と同じ値
MaterialSpecular float4 反射と同じ値

 

例:

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

これにより、拡散色が float4<0.7f、0.0f、0.0f、1.0f> に設定され、マテリアルの累乗が 3.0f になります。

レンダリングの状態

レンダリング状態には、次の 2 種類があります。

ピクセル パイプのレンダリング状態

効果ファイルのレンダリング状態には、固定関数パイプラインの状態に似た名前があり、多くの場合、プレフィックスは削除されます。

レンダリングの状態 Type
AlphaBlendEnable bool True または False。 D3DRENDERSTATETYPE のD3DRS_ALPHABLENDENABLEと同じ値。
AlphaFunc dword D3DCMP_ プレフィックスのない D3DCMPFUNC と同じ値。 「D3DRS_ALPHAFUNC」を参照してください。
AlphaRef dword D3DRS_ALPHAREFと同じ値。
AlphaTestEnable dword True または False。 「D3DRS_ALPHATESTENABLE」を参照してください。
BlendOp dword D3DBLENDOP_ プレフィックスのない D3DBLENDOP と同じ値。
ColorWriteEnable dword RED、GREEN、BLUE、ALPHA のビットごとの組み合わせ。 「D3DRS_COLORWRITEENABLE」を参照してください。
DepthBias float D3DRS_DEPTHBIASと同じ値。
DestBlend dword D3DBLEND_ プレフィックスのない D3DBLEND と同じ値。
DitherEnable bool True または False。 D3DRS_DITHERENABLEと同じ値。
FillMode dword D3DFILL_ プレフィックスのない D3DFILLMODE と同じ値。
LastPixel dword True または False。 「D3DRS_LASTPIXEL」を参照してください。
ShadeMode dword D3DSHADE_ プレフィックスのない D3DSHADEMODE と同じ値。
SlopeScaleDepthBias float D3DRS_SLOPESCALEDEPTHBIASと同じ値。
SrcBlend dword D3DBLEND_ プレフィックスのない D3DBLEND と同じ値。
SRGBWriteEnable bool True または False。 D3DRS_SRGBWRITEENABLEと同じ値。
StencilEnable bool True または False。 D3DRS_STENCILENABLEと同じ値。
StencilFail dword D3DSTENCILCAP_ プレフィックスのない D3DSTENCILCAPS と同じ値。 「D3DRS_STENCILFAIL」を参照してください。
StencilFunc dword D3DCMP_ プレフィックスのない D3DCMPFUNC と同じ値。 「D3DRS_STENCILFUNC」を参照してください。
StencilMask dword D3DRS_STENCILMASKと同じ値。
StencilPass dword D3DSTENCILCAP_ プレフィックスのない D3DSTENCILCAPS と同じ値。 「D3DRS_STENCILPASS」を参照してください。
StencilRef int D3DRS_STENCILREFと同じ値。
StencilWriteMask dword D3DRS_STENCILWRITEMASKと同じ値。
StencilZFail dword D3DSTENCILCAP_ プレフィックスのない D3DSTENCILCAPS と同じ値。 「D3DRS_STENCILZFAIL」を参照してください。
TextureFactor dword D3DCOLOR と同じ値。 D3DRS_TEXTUREFACTORと同じ値。
Wrap0 - Wrap15 dword 値は、D3DRS_WRAP0で使用される値と同じです。 有効な値は次のとおりです。
  • COORD0 (D3DWRAPCOORD_0に対応)
  • COORD1 (D3DWRAPCOORD_1に対応)
  • COORD2 (D3DWRAPCOORD_2に対応)
  • COORD3 (D3DWRAPCOORD_3に対応)
  • U (D3DWRAP_Uに対応)
  • V (D3DWRAP_Vに対応)
  • W (D3DWRAP_Wに対応)
ZEnable dword D3DZB_ プレフィックスのない D3DZBUFFERTYPE と同じ値。
ZFunc dword D3DCMP_ プレフィックスのない D3DCMPFUNC と同じ値。 「D3DRS_ZFUNC」を参照してください。
ZWriteEnable bool True または False。 「D3DRS_ZWRITEENABLE」を参照してください。

例:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

これにより、アルファ ブレンドが有効になり、すべてのジオメトリがワイヤフレームでレンダリングされます。

頂点パイプのレンダリング状態

効果ファイルのレンダリング状態には、固定関数パイプラインの状態に似た名前があり、多くの場合、プレフィックスは削除されます。

レンダリングの状態 Type
環境光 float4 D3DRS_AMBIENTと同じ値。
AmbientMaterialSource dword D3DMCS_ プレフィックスのない D3DMATERIALCOLORSOURCE と同じ値。 「D3DRS_AMBIENTMATERIALSOURCE」を参照してください。
クリッピング bool True または False。 D3DRS_CLIPPINGと同じ値。
ClipPlaneEnable dword D3DCLIPPLANE0 - D3DCLIPPLANE5 マクロのビットごとの組み合わせ。 「D3DCLIPPLANEn」と「D3DRS_CLIPPLANEENABLE」を参照してください。
ColorVertex bool True または False。 D3DRS_COLORVERTEXと同じ値。
CullMode dword D3DCULL_ プレフィックスのない D3DCULL と同じ値。
DiffuseMaterialSource dword D3DMCS_ プレフィックスのない D3DMATERIALCOLORSOURCE と同じ値。 「D3DRS_DIFFUSEMATERIALSOURCE」を参照してください。
EmissiveMaterialSource dword D3DMCS_ プレフィックスのない D3DMATERIALCOLORSOURCE と同じ値。 「D3DRS_EMISSIVEMATERIALSOURCE」を参照してください。
FogColor dword D3DCOLOR と同じ値。 「D3DRS_FOGCOLOR」を参照してください。
FogDensity float D3DRS_FOGDENSITYと同じ値。
FogEnable bool True または False。 D3DRS_FOGENABLEと同じ値。
FogEnd float D3DRS_FOGENDと同じ値。
FogStart float D3DRS_FOGSTARTと同じ値。
FogTableMode dword D3DFOGMODE と同じ値。 「D3DRENDERSTATETYPE のD3DRS_FOGTABLEMODE」を参照してください。
FogVertexMode dword D3DFOG_ プレフィックスのない D3DFOGMODE と同じ値。
IndexedVertexBlendEnable bool True または False。 D3DRS_INDEXEDVERTEXBLENDENABLEと同じ値。
照明 bool True または False。 D3DRS_LIGHTINGと同じ値。
LocalViewer bool True または False。 D3DRS_LOCALVIEWERと同じ値。
MultiSampleAntialias bool D3DRS_MULTISAMPLEANTIALIASと同じ値。
MultiSampleMask dword D3DRS_MULTISAMPLEMASKと同じ値。
NormalizeNormals bool True または False。 D3DRS_NORMALIZENORMALSと同じ値。
PatchSegments float SetNPatchMode の nSegments と同じ値。
PointScale_A float D3DRS_POINTSCALE_Aと同じ値。
PointScale_B float D3DRS_POINTSCALE_Bと同じ値。
PointScale_C float D3DRS_POINTSCALE_Cと同じ値。
PointScaleEnable bool D3DRS_POINTSCALEENABLEと同じ値。
PointSize float D3DRS_POINTSIZEと同じ値。
PointSize_Min float D3DRS_POINTSIZE_MINと同じ値。
PointSize_Max float D3DRS_ プレフィックスのないD3DRS_POINTSIZE_MAXと同じ値。
PointSpriteEnable bool True または False。 D3DRS_POINTSPRITEENABLEと同じ値。
RangeFogEnable bool True または False。 D3DRS_RANGEFOGENABLEと同じ値。
反射可能 bool True または False。 D3DRS_SPECULARENABLEと同じ値。
SpecularMaterialSource dword D3DMCS_ プレフィックスのない D3DMATERIALCOLORSOURCE と同じ値。 「D3DRS_SPECULARMATERIALSOURCE」を参照してください。
TweenFactor float D3DRS_TWEENFACTORと同じ値。
VertexBlend dword D3DVBF_ プレフィックスのない D3DVERTEXBLENDFLAGS と同じ値。 「D3DRS_VERTEXBLEND」を参照してください。

 

例:

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

これにより、アンビエント カラー float4<0.7f、0.0f、0.0f、1.0f> になり、バックフェイス カリング モードを反時計回りに設定し、霧の色を赤に設定します。

サンプラーの状態

サンプラーの状態は、サンプラー オブジェクトを表します。

State Type
サンプラー サンプラー NULL、またはサンプラー状態ブロック。

 

サンプラー ステージの状態

サンプラー ステージの状態は、テクスチャのサンプリングに使用されます。 サンプラーの状態は、フィルターの種類とテクスチャのアドレス指定モードを決定します。

サンプラーの状態 Type
AddressU[16] dword D3DTADDRESS_ プレフィックスのない D3DTEXTUREADDRESS と同じ値。 「D3DSAMP_ADDRESSU」を参照してください。
AddressV[16] dword D3DTADDRESS_ プレフィックスのない D3DTEXTUREADDRESS と同じ値。 「D3DSAMP_ADDRESSV」を参照してください。
AddressW[16] dword D3DTADDRESS_ プレフィックスのない D3DTEXTUREADDRESS と同じ値。 「D3DSAMP_ADDRESSW」を参照してください。
BorderColor[16] D3DCOLOR D3DTEXF_ プレフィックスのない D3DTEXTUREFILTERTYPE と同じ値。 「D3DSAMP_BORDERCOLOR」を参照してください。
MagFilter[16] dword D3DTEXF_ プレフィックスのない D3DTEXTUREFILTERTYPE と同じ値。 「D3DSAMP_MAGFILTER」を参照してください。
MaxAnisotropy[16] dword D3DSAMP_ プレフィックスのないD3DSAMP_MAXANISOTROPYと同じ値。
MaxMipLevel[16] int D3DSAMP_ プレフィックスのないD3DSAMP_MAXMIPLEVELと同じ値。
MinFilter[16] dword D3DSAMP_ プレフィックスのないD3DSAMP_MINFILTERと同じ値。
MipFilter[16] dword D3DSAMP_ プレフィックスのないD3DSAMP_MIPFILTERと同じ値。
MipMapLodBias[16] float D3DSAMP_ プレフィックスのないD3DSAMP_MIPMAPLODBIASと同じ値。
SRGBTexture bool D3DSAMP_ プレフィックスのないD3DSAMP_SRGBTEXTUREと同じ値。

 

例:

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

これにより、UVW 値が 0 から 1 の間にクランプされます。

シェーダーの状態

効果シェーダーの状態は 2 つだけです。1 つは頂点シェーダー オブジェクトに関連付け、もう 1 つはピクセル シェーダー オブジェクトに関連付けられています。

シェーダーの状態 Type
PixelShader pixelshader NULL、アセンブリ ブロック、コンパイル ターゲット、またはピクセル シェーダー パラメーター。
VertexShader vertexshader NULL、アセンブリ ブロック、コンパイル ターゲット、またはピクセル シェーダー パラメーター。

 

例:

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

これにより、.fx ファイルで以前に定義された頂点シェーダーである VSTexture が頂点シェーダー バージョン 1.1 にコンパイルされ、そのコンパイルされたシェーダーが頂点シェーダーとして設定されます。 ピクセル シェーダーは NULL に割り当てられます。

シェーダー定数の状態

シェーダー定数の状態は、シェーダー定数パラメーターにアクセスするために使用されます。

シェーダー定数の状態 Type
PixelShaderConstant float[m[n]] 浮動小数点の m x n 配列。m と n は省略可能です。
PixelShaderConstant1 float4 1 つの 4D float。
PixelShaderConstant2 float4x2 2つの4Dフロート。
PixelShaderConstant3 float4x3 3つの4Dフロート。
PixelShaderConstant4 float4x4 4 つの 4D フロート。
PixelShaderConstantB bool[m[n]] bools の m x n 配列。m と n は省略可能です。
PixelShaderConstantI int[m[n]] ints の m x n 配列。 m と n は省略可能です。
PixelShaderConstantF float[m[n]] m x n floats の配列。 m と n は省略可能です。
VertexShaderConstant float[m[n]] m x n floats の配列。 m と n は省略可能です。
VertexShaderConstant1 float4 1 つの 4D float。
VertexShaderConstant2 float4x2 2つの4Dフロート。
VertexShaderConstant3 float4x3 3つの4Dフロート。
VertexShaderConstant4 float4x4 4 つの 4D フロート。
VertexShaderConstantB bool[m[n]] ブール値の m x n 配列。 m と n は省略可能です。
VertexShaderConstantI int[m[n]] ints の m x n 配列。 m と n は省略可能です。
VertexShaderConstantF float[m[n]] m x n floats の配列。 m と n は省略可能です。

 

テクスチャの状態

テクスチャの状態は、マルチテクスチャ ブレンダーによって使用されるテクスチャを初期化します。

テクスチャの状態 Type
テクスチャ[8] テクスチャ NULL、またはテクスチャ パラメーター。

 

テクスチャ ステージの状態

テクスチャ ステージの状態は、マルチテクスチャ ブレンダーでテクスチャとテクスチャ ステージを設定します。

テクスチャ ステージの状態 Type
AlphaOp[8] dword D3DTOP_ プレフィックスのない D3DTEXTUREOP と同じです。 「D3DTSS_ALPHAOP」を参照してください。
AlphaArg0[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_ALPHAARG0」を参照してください。
AlphaArg1[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_ALPHAARG1」を参照してください。
AlphaArg2[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_ALPHAARG2」を参照してください。
ColorArg0[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_COLORARG0」を参照してください。
ColorArg1[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_COLORARG1」を参照してください。
ColorArg2[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_COLORARG2」を参照してください。
ColorOp[8] dword D3DTOP_ プレフィックスのない D3DTEXTUREOP と同じです。 「D3DTSS_COLOROP」を参照してください。
BumpEnvLScale[8] float D3DTSS_TCI プレフィックスのないD3DTSS_BUMPENVLSCALEと同じ値。
BumpEnvLOffset[8] float D3DTSS_TCI プレフィックスのないD3DTSS_BUMPENVLOFFSETと同じ値。
BumpEnvMat00[8] float D3DTSS_BUMPENVMAT00と同じ値。
BumpEnvMat01[8] float D3DTSS_BUMPENVMAT01と同じ値。
BumpEnvMat10[8] float D3DTSS_BUMPENVMAT10と同じ値。
BumpEnvMat11[8] float D3DTSS_BUMPENVMAT11と同じ値。
ResultArg[8] dword D3DTA_ プレフィックスのない D3DTA と同じです。 「D3DTSS_RESULTARG」を参照してください。
TexCoordIndex[8] dword D3DTSS_TCI プレフィックスのないD3DTSS_TEXCOORDINDEXと同じ値。
TextureTransformFlags[8] dword D3DTTFF_ プレフィックスのない D3DTEXTURETRANSFORMFLAGS 値と同じ値。 「D3DTSS_TEXTURETRANSFORMFLAGS」を参照してください。

 

変換の状態

変換の状態を設定して変換マトリックスを初期化します。 効果は、効率のために転置行列を使用します。 効果に入れ替えられた行列を指定することも、効果を使用する前に行列を自動的に入れ替えることができます。

変換の状態 Type
ProjectionTransform float4x4 浮動小数点数の 4 x 4 行列。 D3DTS_ プレフィックスのないD3DTS_PROJECTIONと同じ値。
TextureTransform[8] float4x4 浮動小数点数の 4 x 4 行列。 D3DTS_ プレフィックスのない D3DTRANSFORMSTATETYPE と同じ値。
ViewTransform float4x4 浮動小数点数の 4 x 4 行列。 D3DTS_ プレフィックスのないD3DTS_VIEWと同じ値。
WorldTransform float4x4 浮動小数点数の 4 x 4 行列。

 

効果の形式