问题:我想在我的 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 ***/