効果状態 (Direct3D 9)
効果の状態は、頂点とピクセルの処理に備えてパイプラインの状態を初期化するために使用されます。
effect state [ [index] ] = expression;
各値の説明:
- effect state - 従来の固定関数パイプラインの状態と同様です。 状態の完全な一覧を以下に示します。
- [ [index] ] - 省略可能な整数インデックス。 インデックスは、効果状態の配列内の特定の状態を識別します。 外側の角かっこは、インデックスが省略可能であることを示します。 インデックスを使用する場合は、必ず内かっこを使用してください。
- 式 - 状態代入式。 「Expressions (Direct3D 9)」を参照してください。
各状態にはネイティブ データ型があります。 これは、効果によって値が割り当てられるときに状態が想定するデータ型です。 各状態で想定されるデータ型を次に示します。
エフェクト インターフェイスは、可能な限り早く適切な型に値をキャストしようとします。 リテラル値はコンパイル時にキャストできます。 適切な Set メソッドが呼び出されたときに、非リテラル (つまり通常の変数) をキャストする必要があります。 たとえば、エフェクト インターフェイスは、 SetBool、 SetValue、およびその他の同様の関数を使用して設定された値を必要に応じてキャストします。 パフォーマンスを向上させるには、エフェクト インターフェイスに渡される値が既に正しい型であり、キャストは必要ありません。 ランタイムが値をキャストできない場合は、エラーが返されます。
効果の状態は、次のカテゴリに分類できます。
明るい状態
エフェクトの適用に最適なパフォーマンスを実現するには、エフェクト ファイルでライトまたはマテリアルのすべてのコンポーネントを指定する必要があります。 宣言に失敗した状態は、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 または FALSE。 LightEnable の bEnable 引数を参照してください。 |
LightFalloff[n] | float | D3DCOLORVALUE。 D3DLIGHT9 の 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で使用される値と同じです。 有効な値は次のとおりです。
|
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 行列。 |