diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-15 18:40:18 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-15 18:42:11 +0300 |
commit | 9c629b06bfdf645c009d953902c936b82900053a (patch) | |
tree | a2e30c03b9d98ac0373263b6b927314a5a31ca75 /source/blender/draw/engines/workbench/shaders | |
parent | 3e4bf31327c9264c735b85e565d817016db495fc (diff) |
Workbench OpenGL render: always render alpha on 1.0
Old implementation rendered alpha to 0.0 for background, but only during
deferred rendering. We should attach this to an DNA setting and also let
the forward shading respect this. But for now this is a better default
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl | 3 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl | 6 |
2 files changed, 5 insertions, 4 deletions
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 f67d2ff6745..069cb0f52d8 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl @@ -17,7 +17,8 @@ struct WorldData { LightData lights[3]; int num_lights; int matcap_orientation; - int pad[2]; + float background_alpha; + int pad[1]; }; struct MaterialData { diff --git a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl index 461fb2fb130..4a1d88c29c1 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl @@ -32,7 +32,7 @@ void main() #ifndef V3D_SHADING_OBJECT_OUTLINE if (object_id == NO_OBJECT_ID) { - fragColor = vec4(background_color(world_data, uv_viewport.y), 0.0); + fragColor = vec4(background_color(world_data, uv_viewport.y), world_data.background_alpha); return; } #else /* !V3D_SHADING_OBJECT_OUTLINE */ @@ -41,10 +41,10 @@ void main() if (object_id == NO_OBJECT_ID) { vec3 background = background_color(world_data, uv_viewport.y); if (object_outline == 0.0) { - fragColor = vec4(background, 0.0); + fragColor = vec4(background, world_data.background_alpha); } else { - fragColor = vec4(mix(world_data.object_outline_color.rgb, background, object_outline), 1.0-object_outline); + fragColor = vec4(mix(world_data.object_outline_color.rgb, background, object_outline), clamp(world_data.background_alpha, 1.0, object_outline)); } return; } |