効果の状態 (Direct3D 9)
効果の状態は、頂点とピクセルの処理の準備でパイプラインの状態を初期化するために使用されます。
effect state [ [index] ] = expression;
どこ:
- effect state - 従来の固定関数パイプラインの状態に似ています。 状態の完全な一覧を以下に示します。
- [ [index] ] - 省略可能な整数インデックス。 インデックスは、効果の状態の配列内の特定の状態を識別します。 外側の角かっこは、インデックスが省略可能であることを示します。 インデックスを使用する場合は、必ず内部角かっこを使用してください。
- expression - 状態代入式。 式 (Direct3D 9)を参照してください。
各状態にはネイティブ データ型があります。 これは、エフェクトによって値が割り当てられるときに、状態が値を受け入れると想定されるデータ型です。 各状態で想定されるデータ型を次に示します。
エフェクト インターフェイスは、可能な限り早く適切な型に値をキャストしようとします。 リテラル値はコンパイル時にキャストできます。 適切な Set メソッドが呼び出されたときに、非リテラル (つまり通常の変数) をキャストする必要があります。 たとえば、エフェクト インターフェイスは、SetBool、SetValue、および必要に応じて他の同様の関数を使用して設定された値をキャストします。 パフォーマンスを向上させるには、エフェクト インターフェイスに渡される値が既に正しい型であり、キャストする必要がないことを確認します。 ランタイムが値をキャストできない場合は、エラーが返されます。
効果の状態は、次のカテゴリに分類できます。
- 明るい状態の
- 素材の状態
- レンダリング状態 を する
- ピクセル パイプのレンダリング状態
- 頂点パイプのレンダリング状態 を する
- サンプラーの状態の
- サンプラー ステージの状態
- シェーダーの状態 を する
- シェーダー定数状態 を する
- テクスチャ状態 を する
- テクスチャ ステージの状態 を する
- 変換状態
明るい状態
エフェクトの適用に最適なパフォーマンスを実現するには、ライトまたはマテリアルのすべてのコンポーネントをエフェクト ファイルで指定する必要があります。 宣言に失敗した状態は、Direct3D でライトの状態を個別に設定する方法がないため、既定値に設定されます。
ライトステート | 種類 | 価値観 |
---|---|---|
LightAmbient[n] | float4 | D3DLIGHT9のアンビエント メンバーを参照してください。 |
LightAttenuation0[n] | 浮く | D3DLIGHT9の Attenuation0 メンバーを参照してください。 |
LightAttenuation1[n] | 浮く | D3DLIGHT9の Attenuation1 メンバーを参照してください。 |
LightAttenuation2[n] | 浮く | D3DLIGHT9の Attenuation2 メンバーを参照してください。 |
LightDiffuse[n] | float4 | D3DLIGHT9の拡散メンバーを参照してください。 |
LightDirection[n] | float3 | D3DLIGHT9の Direction メンバーを参照してください。 |
LightEnable[n] | bool | TRUE または FALSE をします。 lightEnableの bEnable 引数参照してください。 |
LightFalloff[n] | 浮く | D3DCOLORVALUE. D3DLIGHT9の Falloff メンバーを参照してください。 |
LightPhi[n] | 浮く | D3DLIGHT9の Phi メンバーを参照してください。 |
LightPosition[n] | float3 | D3DLIGHT9の Position メンバーを参照してください。 |
LightRange[n] | 浮く | D3DLIGHT9の Range メンバーを参照してください。 |
LightSpecular[n] | float4 | D3DLIGHT9の反射メンバーを参照してください。 |
LightTheta[n] | 浮く | 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 で素材の状態を個別に設定する方法がないため、何らかの既定値に設定されます。
マテリアルの状態 | 種類 | 価値観 |
---|---|---|
MaterialAmbient | float4 | アンビエントと同じ値 |
MaterialDiffuse | float4 | 拡散と同じ値 |
MaterialEmissive | float4 | Emissive と同じ値 |
MaterialPower | 浮く | 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 種類があります。
- ピクセル パイプのレンダリング状態
- 頂点パイプのレンダリング状態 を する
ピクセル パイプのレンダリング状態
エフェクト ファイルのレンダリング状態には、固定関数パイプラインの状態に似た名前があります。多くの場合、プレフィックスは削除されます。
レンダリング状態 | 種類 | 価値観 |
---|---|---|
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 | 赤、緑、青、アルファのビットごとの組み合わせ。 D3DRS_COLORWRITEENABLEを参照してください。 |
DepthBias | 浮く | 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 | 浮く | 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;
これにより、アルファ ブレンドが有効になり、すべてのジオメトリがワイヤフレームでレンダリングされます。
頂点パイプのレンダリング状態
エフェクト ファイルのレンダリング状態には、固定関数パイプラインの状態に似た名前があります。多くの場合、プレフィックスは削除されます。
レンダリング状態 | 種類 | 価値観 |
---|---|---|
アンビエント | 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 | 浮く | D3DRS_FOGDENSITYと同じ値。 |
FogEnable | bool | True または False。 D3DRS_FOGENABLEと同じ値。 |
FogEnd | 浮く | D3DRS_FOGENDと同じ値。 |
FogStart | 浮く | 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 | 浮く | SetNPatchModeの nSegments と同じ値です。 |
PointScale_A | 浮く | D3DRS_POINTSCALE_Aと同じ値。 |
PointScale_B | 浮く | D3DRS_POINTSCALE_Bと同じ値。 |
PointScale_C | 浮く | D3DRS_POINTSCALE_Cと同じ値。 |
PointScaleEnable | bool | D3DRS_POINTSCALEENABLEと同じ値。 |
PointSize | 浮く | D3DRS_POINTSIZEと同じ値。 |
PointSize_Min | 浮く | D3DRS_POINTSIZE_MINと同じ値。 |
PointSize_Max | 浮く | 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 | 浮く | 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>になり、バックフェイス カリング モードを反時計回りに設定し、霧の色を赤に設定します。
サンプラーの状態
サンプラーの状態は、サンプラー オブジェクトを表します。
状態 | 種類 | 価値観 |
---|---|---|
サンプラー | サンプラー | NULL 、またはサンプラー状態ブロックをします。 |
サンプラー ステージの状態
サンプラー ステージの状態は、テクスチャのサンプリングに使用されます。 サンプラーの状態によって、フィルターの種類とテクスチャのアドレス指定モードが決まります。
サンプラーの状態 | 種類 | 価値観 |
---|---|---|
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] | 浮く | D3DSAMP_ プレフィックスのないD3DSAMP_MIPMAPLODBIASと同じ値。 |
SRGBTexture | bool | D3DSAMP_ プレフィックスのないD3DSAMP_SRGBTEXTUREと同じ値。 |
例:
AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;
これにより、UVW 値が 0 から 1 の間にクランプされます。
シェーダーの状態
エフェクト シェーダーの状態は 2 つだけです。1 つは頂点シェーダー オブジェクトに関連付け、もう 1 つはピクセル シェーダー オブジェクトに関連付けられています。
シェーダーの状態 | 種類 | 価値観 |
---|---|---|
PixelShader | pixelshader | null 、アセンブリ ブロック、コンパイル ターゲット、またはピクセル シェーダー パラメーターをします。 |
VertexShader | vertexshader | null 、アセンブリ ブロック、コンパイル ターゲット、またはピクセル シェーダー パラメーターをします。 |
例:
VertexShader = compile vs_1_1 VSTexture();
PixelShader = NULL;
これにより、.fx ファイルで以前に定義された頂点シェーダーである VSTexture が頂点シェーダー バージョン 1.1 にコンパイルされ、そのコンパイルされたシェーダーが頂点シェーダーとして設定されます。 ピクセル シェーダーは、NULLに割り当てられます。
シェーダー定数の状態
シェーダー定数の状態は、シェーダー定数パラメーターにアクセスするために使用されます。
シェーダー定数の状態 | 種類 | 価値観 |
---|---|---|
PixelShaderConstant | float[m[n]] | 浮動小数点の m x n 配列。m と n は省略可能です。 |
PixelShaderConstant1 | float4 | 1 つの 4D 浮動小数点。 |
PixelShaderConstant2 | float4x2 | 2 つの 4D 浮動小数点。 |
PixelShaderConstant3 | float4x3 | 3 つの 4D 浮動小数点。 |
PixelShaderConstant4 | float4x4 | 4 つの 4D 浮動小数点。 |
PixelShaderConstantB | bool[m[n]] | ブール値の m x n 配列。m と n は省略可能です。 |
PixelShaderConstantI | int[m[n]] | m x n ints の配列。 m と n は省略可能です。 |
PixelShaderConstantF | float[m[n]] | 浮動小数点の m x n 配列。 m と n は省略可能です。 |
VertexShaderConstant | float[m[n]] | 浮動小数点の m x n 配列。 m と n は省略可能です。 |
VertexShaderConstant1 | float4 | 1 つの 4D 浮動小数点。 |
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]] | m x n ints の配列。 m と n は省略可能です。 |
VertexShaderConstantF | float[m[n]] | 浮動小数点の m x n 配列。 m と n は省略可能です。 |
テクスチャの状態
テクスチャの状態は、マルチテクスチャ ブレンダーによって使用されるテクスチャを初期化します。
テクスチャの状態 | 種類 | 価値観 |
---|---|---|
テクスチャ[8] | テクスチャー | NULL またはテクスチャ パラメーターをします。 |
テクスチャ ステージの状態
テクスチャ ステージの状態は、マルチテクスチャ ブレンダーでテクスチャとテクスチャ ステージを設定します。
テクスチャ ステージの状態 | 種類 | 価値観 |
---|---|---|
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] | 浮く | D3DTSS_TCI プレフィックスのないD3DTSS_BUMPENVLSCALEと同じ値。 |
BumpEnvLOffset[8] | 浮く | D3DTSS_TCI プレフィックスのないD3DTSS_BUMPENVLOFFSETと同じ値。 |
BumpEnvMat00[8] | 浮く | D3DTSS_BUMPENVMAT00と同じ値。 |
BumpEnvMat01[8] | 浮く | D3DTSS_BUMPENVMAT01と同じ値。 |
BumpEnvMat10[8] | 浮く | D3DTSS_BUMPENVMAT10と同じ値。 |
BumpEnvMat11[8] | 浮く | D3DTSS_BUMPENVMAT11と同じ値。 |
ResultArg[8] | dword | D3DTA_ プレフィックスのない D3DTA と同じです。 D3DTSS_RESULTARGを参照してください。 |
TexCoordIndex[8] | dword | D3DTSS_TCI プレフィックスのないD3DTSS_TEXCOORDINDEXと同じ値。 |
TextureTransformFlags[8] | dword | D3DTTFF_ プレフィックスのない D3DTEXTURETRANSFORMFLAGS 値と同じ値。 D3DTSS_TEXTURETRANSFORMFLAGSを参照してください。 |
状態の変換
変換の状態を設定して、変換マトリックスを初期化します。 効果は、効率のために入れ替えられた行列を使用します。 効果に入れ替えられた行列を提供することも、効果を使用する前に行列を自動的に入れ替えることができます。
状態の変換 | 種類 | 価値観 |
---|---|---|
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 行列。 |