Revision: 36444 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36444 Author: blendix Date: 2011-05-02 14:01:45 +0000 (Mon, 02 May 2011) Log Message: ----------- Fix #26807: glsl diffuse/specular was not clamping negative values, giving some inconsistent results with the renderer.
Modified Paths: -------------- trunk/blender/source/blender/gpu/intern/gpu_material.c trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl Modified: trunk/blender/source/blender/gpu/intern/gpu_material.c =================================================================== --- trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-05-02 13:52:41 UTC (rev 36443) +++ trunk/blender/source/blender/gpu/intern/gpu_material.c 2011-05-02 14:01:45 UTC (rev 36444) @@ -557,7 +557,7 @@ addcol = shi->rgb; /* output to */ - GPU_link(mat, "shade_madd", *diff, rgb, addcol, diff); + GPU_link(mat, "shade_madd_clamped", *diff, rgb, addcol, diff); } static void ramp_spec_result(GPUShadeInput *shi, GPUNodeLink **spec) @@ -730,7 +730,7 @@ if(lamp->type == LA_HEMI) { GPU_link(mat, "shade_hemi_spec", vn, lv, view, GPU_uniform(&ma->spec), shi->har, visifac, &t); GPU_link(mat, "shade_add_spec", t, GPU_dynamic_uniform(lamp->dyncol), shi->specrgb, &outcol); - GPU_link(mat, "shade_add", shr->spec, outcol, &shr->spec); + GPU_link(mat, "shade_add_clamped", shr->spec, outcol, &shr->spec); } else { if(ma->spec_shader==MA_SPEC_PHONG) @@ -753,11 +753,11 @@ GPUNodeLink *spec; do_specular_ramp(shi, specfac, t, &spec); GPU_link(mat, "shade_add_spec", t, GPU_dynamic_uniform(lamp->dyncol), spec, &outcol); - GPU_link(mat, "shade_add", shr->spec, outcol, &shr->spec); + GPU_link(mat, "shade_add_clamped", shr->spec, outcol, &shr->spec); } else { GPU_link(mat, "shade_add_spec", t, GPU_dynamic_uniform(lamp->dyncol), shi->specrgb, &outcol); - GPU_link(mat, "shade_add", shr->spec, outcol, &shr->spec); + GPU_link(mat, "shade_add_clamped", shr->spec, outcol, &shr->spec); } } } Modified: trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl =================================================================== --- trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl 2011-05-02 13:52:41 UTC (rev 36443) +++ trunk/blender/source/blender/gpu/intern/gpu_shader_material.glsl 2011-05-02 14:01:45 UTC (rev 36444) @@ -1686,6 +1686,16 @@ outcol = col + col1*col2; } +void shade_add_clamped(vec4 col1, vec4 col2, out vec4 outcol) +{ + outcol = col1 + max(col2, vec4(0.0, 0.0, 0.0, 0.0)); +} + +void shade_madd_clamped(vec4 col, vec4 col1, vec4 col2, out vec4 outcol) +{ + outcol = col + max(col1*col2, vec4(0.0, 0.0, 0.0, 0.0)); +} + void shade_maddf(vec4 col, float f, vec4 col1, out vec4 outcol) { outcol = col + f*col1; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs