diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-02-11 17:18:55 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-02-11 17:19:04 +0300 |
commit | 804e90b42d728ecb1073af8d0bae15a91b13a469 (patch) | |
tree | 309de25d99c92286b10c9d27e547fd43a69299c1 /source/blender/draw/engines/workbench/shaders | |
parent | 58cdab8b9759dd59b55895f2f76b9624addbb324 (diff) |
DRW: Color Management improvement
Reviewed By: brecht sergey jbakker
Differential Revision: http://developer.blender.org/D6729
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders')
4 files changed, 5 insertions, 35 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_background_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_background_lib.glsl deleted file mode 100644 index 3ac220aee59..00000000000 --- a/source/blender/draw/engines/workbench/shaders/workbench_background_lib.glsl +++ /dev/null @@ -1,5 +0,0 @@ -vec3 background_color(WorldData world_data, float y) -{ - return mix(world_data.background_color_low, world_data.background_color_high, y).xyz + - (world_data.background_dither_factor * bayer_dither_noise()); -} diff --git a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl index f60eca24821..0c984b094d3 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl @@ -5,17 +5,12 @@ struct LightData { }; struct WorldData { - vec4 background_color_low; - vec4 background_color_high; vec4 object_outline_color; vec4 shadow_direction_vs; LightData lights[4]; vec4 ambient_color; int num_lights; int matcap_orientation; - float background_alpha; float curvature_ridge; float curvature_valley; - float background_dither_factor; - int pad[2]; }; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_deferred_background_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_deferred_background_frag.glsl index 45ebf09d623..22fa2babbbf 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_deferred_background_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_deferred_background_frag.glsl @@ -13,11 +13,10 @@ layout(std140) uniform world_block void main() { vec2 uv_viewport = gl_FragCoord.xy * invertedViewportSize; - vec3 background = background_color(world_data, uv_viewport.y); #ifndef V3D_SHADING_OBJECT_OUTLINE - fragColor = vec4(background, world_data.background_alpha); + fragColor = vec4(0.0); #else /* !V3D_SHADING_OBJECT_OUTLINE */ @@ -25,16 +24,7 @@ void main() uint object_id = texelFetch(objectId, texel, 0).r; float object_outline = calculate_object_outline(objectId, texel, object_id); - if (object_outline == 0.0) { - fragColor = vec4(background, world_data.background_alpha); - } - else { - /* Do correct alpha blending. */ - vec4 background_color = vec4(background, 1.0) * world_data.background_alpha; - vec4 outline_color = vec4(world_data.object_outline_color.rgb, 1.0); - fragColor = mix(outline_color, background_color, object_outline); - fragColor = vec4(fragColor.rgb / max(1e-8, fragColor.a), fragColor.a); - } + fragColor = vec4(world_data.object_outline_color.rgb, 1.0) * (1.0 - object_outline); #endif /* !V3D_SHADING_OBJECT_OUTLINE */ } diff --git a/source/blender/draw/engines/workbench/shaders/workbench_forward_composite_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_forward_composite_frag.glsl index 6915055e356..91e1ebabae4 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_forward_composite_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_forward_composite_frag.glsl @@ -25,21 +25,11 @@ void main() vec3 trans_color = trans_accum.rgb / clamp(trans_accum.a, 1e-4, 5e4); -#ifndef ALPHA_COMPOSITE - vec3 bg_color = background_color(world_data, uv_viewport.y); - - bg_color = (world_data.background_alpha == 0.0) ? trans_color : bg_color; - vec4 color = mix( - vec4(trans_color, 1.0), vec4(bg_color, world_data.background_alpha), trans_revealage); + fragColor = vec4(trans_color, 1.0 - trans_revealage); -# ifdef V3D_SHADING_OBJECT_OUTLINE +#ifdef V3D_SHADING_OBJECT_OUTLINE uint object_id = texelFetch(objectId, texel, 0).r; float outline = calculate_object_outline(objectId, texel, object_id); - color = mix(vec4(world_data.object_outline_color.rgb, 1.0), color, outline); -# endif - - fragColor = color; -#else - fragColor = vec4(trans_color, 1.0 - trans_revealage); + fragColor = mix(vec4(world_data.object_outline_color.rgb, 1.0), fragColor, outline); #endif } |