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

我有同样的问题。尝试将着色器的顶点数据属性部分中的颜色设置为“color:colorSet1”,这为我解决了。

于 2011-09-28T14:33:09.880 回答