2011-07-09 10 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

私は同じ問題を抱えていました。シェーダのVertex Data属性セクションの色を 'color:colorSet1'に設定してみてください。これで解決しました。

関連する問題