2011-07-09 29 views
1

问题:我想在我的cgfx着色器中使用由Maya提供的顶点颜色。这应该是一个微不足道的问题,但目前我还没有运气。从应用程序获取顶点颜色到CGFX的问题

尝试:下面我写了一个超级简单着色器,它应该只显示原始顶点颜色。结果虽然是纯白色的。

详细信息:内部着色器工作正常,如果我将垂直颜色设置为红色在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 ***/ 

回答

0

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