Jump to content
  • Advertisement
Sign in to follow this  
Burz666

Different resolt (Shader using) on ATI and NVIDIA

This topic is 3716 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
Advertisement
Do the debug runtimes tell you anything? Have you debugged your shaders in PIX?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!