Ich versuche mithilfe eines cg shaders die vertex colours eines meshes zu verarbeiten, um dann später einen texture blend shader zu schreiben aber irgendwie funktioniert schon das auslesen der vertex colours aus dem mesh nicht ganz.

Das hier ist der Shader:
Code:
//------------------------------------
struct vertexInput {
    float3 position				: POSITION;
    float3 normal				: NORMAL;
    float4 texCoord				: TEXCOORD0;
    float4 vColor				: COLOR0;
};

struct vertexOutput {
    float4 position			: POSITION;
    float4 texCoord			: TEXCOORD0;
    float4 vColor			: COLOR;
};


//------------------------------------
vertexOutput VS_TransformAndTexture(vertexInput IN) 
{
    vertexOutput OUT;
    OUT.position = mul( float4(IN.position••••• , 1.0) , worldViewProj);
    OUT.texCoord = IN.texCoord;

    OUT.vColor = IN.vColor +0.4;
    
    return OUT;
}


//-----------------------------------
float4 PS_Textured( vertexOutput IN): COLOR
{
  return IN.vColor;
}
Mit "float4 vColor : COLOR0;" als parameter des vertex shaders wollte ich die Farbe des Punktes bekommen, der shader erhält aber nur ein Schwarz. Im Endeffekt wird das Mesh komplett grau angezeigt, da noch 0.4 zur Farbe dazuaddiert wird.

So sollte das Mesh mit dem shader aussehen(allerdings flat shaded):


Und so sieht es in Nvidias fx composer aus:

Das Mesh wurde als .x exportiert um es in fx composer importieren zu können. Innerhalb der .x Datei gibt es einen eigenen Abschnitt für Vertex Colours mit genug Einträgen und unterschiedlichen rgb Werten also daran sollts eigentlich nicht scheitern.

Hoffentlich gibt es hier ein paar shader programmierer. ^^