1

問題:cgfxシェーダーでMayaによって提供される頂点カラーを操作したいと思います。ささいな問題になるはずですが、今のところ運がありません。

試行:以下に、生の頂点カラーを表示するだけの非常に単純なシェーダーを作成しました。結果は真っ白です。

詳細:内部的にシェーダーは正常に機能します。vsで頂点の色を赤に設定すると、正常に機能します。したがって、問題はMayaから値を取得することです。また、COLORとCOLOR0の両方で試してみました。

ヘルプやガイダンスをいただければ幸いです。

// string Category = "Effects\\Cg\\BRDF";
// string keywords = "texture";
string description = "Pure vertex color";

//////////////////////////////////////////////////////////
// untweakables //////////////////////////////////////////
//////////////////////////////////////////////////////////

float4x4 WorldViewProjXf : WorldViewProjection < string UIWidget="none";>;

/****************************************************/
/********** SAMPLERS ********************************/
/****************************************************/

texture ColorTex : Diffuse
<
    string ResourceName = "default_color.dds";
    string ResourceType = "2D";
>;

sampler2D ColorSampler = sampler_state
{
    Texture = <ColorTex>;
      MagFilter = Linear;
      MinFilter = LinearMipmapLinear;
};

/****************************************************/
/********** CG SHADER FUNCTIONS *********************/
/****************************************************/

/**************************************/
/***** SHARED STRUCT ******************/
/**** Data from app vertex buffer *****/
/****     for all passes          *****/
/**************************************/

struct appData {
    float3 Position    : POSITION;
    float4 VertColor: COLOR;
};

/****************************************/
/****************************************/

// vertex->fragment registers used for this pass only
struct outVertexData {
    float4 HPosition    : POSITION;
    float4 vertColor     : TEXCOORD1;
};

/****************************************/
/****************************************/

outVertexData textureVS(appData IN)
{
    outVertexData OUT;

    OUT.vertColor = IN.VertColor;
    //OUT.vertColor = float4(1.0f,0.0f,0.0f,0.0f);

    float4 Po = float4(IN.Position.xyz,1.0);    
    OUT.HPosition = mul(WorldViewProjXf, Po);

    return OUT;
}

float4 texturePS(outVertexData IN)    : COLOR
{
    return IN.vertColor;
}

/****************************************************/
/********** TECHNIQUES ******************************/
/****************************************************/

technique main {
    pass p0 {
        VertexProgram = compile arbvp1 textureVS();
        DepthTestEnable = true;
        DepthMask = true;
        CullFaceEnable = false;
        FragmentProgram = compile arbfp1 texturePS();
    }
}

/***************************** eof ***/
4

1 に答える 1

0

私も同じ問題を抱えていました。シェーダの Vertex Data アトリビュート セクションの色を「color:colorSet1」に設定してみてください。これで解決しました。

于 2011-09-28T14:33:09.880 に答える