- Код: Выделить всё
// Shader output, position and diffuse color
struct VS_OUTPUT
{
float4 pos : POSITION;
float4 diff : COLOR0;
};
// The world view and projection matrices
float4x4 WorldViewProj : WORLDVIEWPROJECTION;
float Time = 1.0f;
// Transform our coordinates into world space
VS_OUTPUT Transform(float4 Pos : POSITION)
{
// Declare our return variable
VS_OUTPUT Out = (VS_OUTPUT)0;
// Transform our position
Out.pos = mul(Pos, WorldViewProj);
// Set our color
Out.diff.r = 1 - Time;
Out.diff.b = Time * WorldViewProj[2].yz;
Out.diff.ga = Time * WorldViewProj[0].xy;
return Out;
}
technique TransformDiffuse
{
pass P0
{
CullMode = None;
// shaders
VertexShader = compile vs_1_1 Transform();
PixelShader = NULL;
}
}
пытаясь разобратьшейдер.... наткнулся на Out.diff.b = Time * WorldViewProj[2].yz;
т.е. по моим соображениям он присваивает diff.b 2х мерную матрицу, что впринципе невозможно т.к. diff.b - байт синего цвета
или я не правильно понял как работает..... Но зараза шейдер отрабатывает своё...
помогите разобраться!
P.S. Никто ненает как посмотреть промежуточные значения шейдера или чем дебажить можно?