I need help

adg

19-07-2006 16:12:08

This in "Render Monkey" work correctly, but in oFusion not. Why?

float4x4 view_proj_matrix: register(c0);
float4x4 view_matrix: register(c4);
float noiseRate: register(c8);
struct VS_OUTPUT {
float4 Pos: POSITION;
float3 normal: TEXCOORD0;
float3 tangent: TEXCOORD1;
float3 binormal: TEXCOORD2;
float3 viewVec: TEXCOORD3;
float3 pos: TEXCOORD4;
};

struct VS_INPUT {
float4 Pos: POSITION;
float4 normal: NORMAL;
float4 tangent: TEXCOORD0;
};

VS_OUTPUT main(VS_INPUT In){
VS_OUTPUT Out;

Out.Pos = mul(view_proj_matrix, In.Pos);
// Transform our tangent-space into eye-space
Out.normal = mul(view_matrix, In.normal).xyz;

//**----------------------------------------------
//** Calculate the Binormal vector
//**----------------------------------------------
float3 binormal = cross(In.tangent.xyz, In.normal.xyz);

//-------THIS LINE IS THE PROBLEM-------------
Out.binormal = mul(view_matrix, binormal);
//----------------------------------------------------

Out.tangent = mul(view_matrix, In.tangent).xyz;
// The view-vector in eye-space is -eyePos
Out.viewVec = -mul(view_matrix, In.Pos);
// Texture coords for the noise
Out.pos = In.Pos.xyz * noiseRate;

return Out;
}

BlasterN

19-07-2006 19:28:43

post everything!

-material
-program
-source (vp & fp)
-and exceptions in Ogre.log

Lioric

19-07-2006 19:52:31

replace that line with:


Out.binormal = mul(view_matrix, float4(binormal, 0));

adg

19-07-2006 20:37:19

Ok, thanks Lioric, that's what I wanted to do but I didn't know how