From 4074ab361e13444ae9a5d6b8bdf973fce2302021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 14 Aug 2019 14:28:57 +0200 Subject: Eevee: Fix background alpha regression --- source/blender/gpu/intern/gpu_codegen.c | 5 ++++- source/blender/gpu/shaders/gpu_shader_material.glsl | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index 6d9fda1c695..3e635b3198a 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -929,12 +929,15 @@ static char *code_generate_fragment(GPUMaterial *material, /* XXX This cannot go into gpu_shader_material.glsl because main() * would be parsed and generate error */ /* Old glsl mode compat. */ + /* TODO(fclem) This is only used by world shader now. get rid of it? */ BLI_dynstr_append(ds, "#ifndef NODETREE_EXEC\n"); BLI_dynstr_append(ds, "out vec4 fragColor;\n"); BLI_dynstr_append(ds, "void main()\n"); BLI_dynstr_append(ds, "{\n"); BLI_dynstr_append(ds, "\tClosure cl = nodetree_exec();\n"); - BLI_dynstr_append(ds, "\tfragColor = vec4(cl.radiance, saturate(avg(cl.transmittance)));\n"); + BLI_dynstr_append(ds, + "\tfragColor = vec4(cl.radiance, " + "saturate(1.0 - avg(cl.transmittance)));\n"); BLI_dynstr_append(ds, "}\n"); BLI_dynstr_append(ds, "#endif\n\n"); diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 7cb38503039..f077ae55d8f 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -3515,7 +3515,7 @@ void node_output_world(Closure surface, Closure volume, out Closure result) { #ifndef VOLUMETRICS result.radiance = surface.radiance * backgroundAlpha; - result.transmittance = vec3(0.0); + result.transmittance = vec3(1.0 - backgroundAlpha); #else result = volume; #endif /* VOLUMETRICS */ -- cgit v1.2.3