Проблема с получением вершинных цветов из приложения в CGFX - PullRequest
1 голос
/ 10 июля 2011

Проблема: я бы хотел работать с цветами вершин, предоставленными Maya, в моем шейдере cgfx.Это должно быть тривиальной проблемой, но мне пока не везет.

Попытка: ниже я написал супер простой шейдер, который должен просто отображать необработанные цвета вершин.Результат чисто белый.

Детали: Внутренне шейдер работает нормально, если я установлю цвет vert на красный в сравнении с тем, что он проходит просто отлично.Таким образом, проблема заключается в получении значения от майя.Также пробовал с 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 ***/

1 Ответ

0 голосов
/ 28 сентября 2011

У меня была такая же проблема.Попробуйте установить цвет в разделе атрибутов данных Vertex шейдера 'color: colorSet1', это решило его для меня.

...