0

頂点シェーダーからピクセル シェーダーに何かを複数回出力するにはどうすればよいですか。たとえば、頂点シェーダーで頂点の色に対していくつかの異なる数学演算を実行した後、頂点の色を float 4 としてピクセル シェーダーに 4 回出力する必要がありますか?

私はこれを行うことができますか?空のfloat4 color2を作成し、In.colorからIn.vertcolorを読み取って出力しようとしました...エラーは発生しませんが、テクスチャは白です。空の float 4 を読み取るだけです...

これがこのセクションの私のコードです。ありがとう!

//////////////////////////////////////////////////////////////
// Structs section 
// input from application
struct a2v {
float4 position  : POSITION;
float4 normal    : NORMAL;
float2 texCoord : TEXCOORD0;
float2 secondUV : TEXCOORD1;
float4 color: COLOR;
float4 color2;

};

// output to fragment program
struct v2f {
    float4 position        : POSITION;
    float2 texCoord : TEXCOORD0;

    float2 secondUV : TEXCOORD1;
    float3 worldNormal     : TEXCOORD2;
    float4 color: COLOR;
    float4 color2;

};



//////////////////////////////////////////////////////////////
// Vertex Shader 

v2f vShader(a2v In)
{
v2f Out;
Out.texCoord = In.texCoord;
Out.secondUV = In.secondUV;

float4 Mask1 = floor ((fmod((In.color  * 100f ), 10f))) *.111f;
float4 Mask2 = floor ((fmod((In.color2  * 100f ), 10f))) *.111f;
Out.color = Mask1;
Out.color2 = Mask2;


Out.position = mul(WorldViewProjection, In.position);
Out.worldNormal = mul(WorldInverseTranspose, In.normal).xyz;

return Out;
}
4

1 に答える 1

0

a2v および v2f 構造体の「color2」フィールドに割り当てることができる COLOR1 バインディング属性があります。

アプリケーションの属性ストリームとしてセカンダリ カラー (COLOR1) を必ず割り当ててください。

于 2012-06-27T07:48:25.620 に答える