次の方法で共有


ps_2_0 以降の修飾子

命令修飾子は、宛先レジスタに書き込まれる前の命令の結果に影響します。

このセクションには、ピクセル シェーダー バージョン 2_0 以降で実装された命令修飾子の参照情報が含まれています。

名前 構文 2_0 2_x 2_sw 3_0 3_sw
重心 _重心 x x x x x
Partial_Precision _頁 x x x x x
Saturate _土 x x x x x

 

重心

重心修飾子は、マルチサンプル ピクセルの中心がプリミティブでカバーされていない場合に、プリミティブの範囲内で属性補間をクランプする省略可能な修飾子です。 これは 、重心サンプリングで確認できます。

次に示すように、重心修飾子をアセンブリ命令に適用できます。

dcl_texcoord0_centroid v0

次に示すように、重心修飾子をセマンティックに適用することもできます。

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

さらに、色セマンティックで宣言された 入力カラー レジスタ (v#) には、自動的に重心が適用されます。 重心サンプリングされる属性から計算されたグラデーションは、正確であるとは限りません。

部分精度

部分精度命令修飾子 (_pp) は、基になる実装でサポートされている場合に、部分精度が許容される領域を示します。 実装は常に修飾子を無視し、影響を受ける操作を完全な精度で実行できます。

_pp修飾子は、次の 2 つのコンテキストで発生する可能性があります。

  • テクスチャ座標宣言で、部分的な精度の形式でピクセル シェーダーにテクスチャ座標を渡せるようにします。 これにより、たとえば、テクスチャ座標を使用してカラー データをピクセル シェーダーに中継できます。これは、一部の実装では完全な精度よりも部分的な精度で高速になる可能性があります。 この修飾子がない場合は、テクスチャ座標を完全な精度で渡す必要があります。
  • テクスチャ読み込み命令を含む任意の命令。 これは、実装が部分有効桁数で命令を実行し、部分精度の結果を格納することが許可されていることを示します。 明示的な修飾子がない場合は、(入力精度に関係なく) 命令を完全な有効桁数で実行する必要があります。

例 :

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

彩度

飽和命令修飾子 (_sat) は、宛先レジスタに書き込む前に、命令結果を範囲 [0, 1] に飽和 (またはクランプ) します。

_sat命令修飾子は、 frc - pssincos - ps、および任意の tex* 命令を除く任意の命令で使用できます。

ps_2_0、ps_2_x、およびps_2_swの場合、_sat命令修飾子は、出力レジスタ (出力カラー レジスタ または 出力深度レジスタ) への命令書き込みでは使用できません。 この制限は、ps_3_0 以降には適用されません。

例:

dp3_sat r0, v0, c1

ピクセル シェーダーの手順