Different resolt (Shader using) on ATI and NVIDIA
The Same shader gives different results on ATI and NVIDIA GPUs.
float4x4 view_proj_matrix : ViewProjection;
float4 view_position : ViewPosition;
struct VS_OUTPUT {
float4 Pos: POSITION;
float3 normal: TEXCOORD0;
float3 viewVec: TEXCOORD1;
};
VS_OUTPUT Glass_Effect_Group_ComplexGlass_Object_Vertex_Shader_main(float4 Pos: POSITION, float3 normal: NORMAL)
{
VS_OUTPUT Out;
Out.Pos = mul(view_proj_matrix, Pos);
Out.normal = normal;
Out.viewVec = view_position - Pos;
return Out;
}
float refractionScale = float( 1.0 );
float4 baseColor = float4( 0.72, 0.70, 0.76, 1.00 );
float ambient = float( 0.20 );
float indexOfRefractionRatio = float( 0.14 );
float reflectionScale = float( 1.0 );
texture Snow_Environment_Tex;
sampler Environment = sampler_state
{
Texture = (Snow_Environment_Tex);
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
sampler Rainbow;
float4 Glass_Effect_Group_ComplexGlass_Object_Pixel_Shader_main(float3 normal: TEXCOORD0, float3 viewVec: TEXCOORD1) : COLOR
{
normal = normalize(normal);
viewVec = normalize(viewVec);
float3 reflVec = reflect(-viewVec, normal);
float4 reflection = texCUBE(Environment, reflVec.xyz);
float cosine = dot(viewVec, normal);
float sine = sqrt(1 - cosine * cosine);
float sine2 = saturate(indexOfRefractionRatio * sine);
float cosine2 = sqrt(1 - sine2 * sine2);
float3 x = -normal;
float3 y = normalize(cross(cross(viewVec, normal), normal));
float3 refrVec = x * cosine2 + y * sine2;
float4 refraction = texCUBE( Environment,refrVec.xyz);
float4 refl = reflectionScale * reflection;
float4 refr = refractionScale * refraction * baseColor;
return sine * refl + (1 - sine2) * refr + sine2 * ambient;
}
//--------------------------------------------------------------//
// Technique Section for Glass Effect Group
//--------------------------------------------------------------//
technique ComplexGlass
{
pass Object
{
ZENABLE = TRUE;
CULLMODE = CCW;
VertexShader = compile vs_2_0 Glass_Effect_Group_ComplexGlass_Object_Vertex_Shader_main();
PixelShader = compile ps_2_0 Glass_Effect_Group_ComplexGlass_Object_Pixel_Shader_main();
}
}
Nvidia result:
http://www.gamedev.ru/images/?id=30781
ATI result:
http://www.gamedev.ru/images/?id=30782
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement