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;
}
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;
}