Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c1
-rw-r--r--source/blender/draw/engines/eevee/eevee_lightprobes.c2
-rw-r--r--source/blender/draw/engines/eevee/eevee_materials.c2
-rw-r--r--source/blender/draw/engines/eevee/eevee_private.h1
-rw-r--r--source/blender/draw/engines/eevee/shaders/default_world_frag.glsl3
-rw-r--r--source/blender/gpu/shaders/gpu_shader_material.glsl4
6 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 394e284c63b..c024eb609b3 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -60,6 +60,7 @@ static void EEVEE_engine_init(void *ved)
/* Alloc transient pointers */
stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
}
+ stl->g_data->background_alpha = 1.0f;
EEVEE_materials_init();
EEVEE_lights_init(sldata);
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index 37f28140f91..8ec603030c5 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -1024,6 +1024,7 @@ static void render_scene_to_planar(
GPUTexture *tmp_minmaxz = stl->g_data->minmaxz;
txl->planar_pool = e_data.planar_pool_placeholder;
stl->g_data->minmaxz = e_data.planar_minmaxz;
+ stl->g_data->background_alpha = FLT_MAX; /* Alpha is distance for planar reflections. */
DRW_viewport_matrix_override_set(persmat, DRW_MAT_PERS);
DRW_viewport_matrix_override_set(persinv, DRW_MAT_PERSINV);
@@ -1057,6 +1058,7 @@ static void render_scene_to_planar(
/* Restore */
txl->planar_pool = tmp_planar_pool;
stl->g_data->minmaxz = tmp_minmaxz;
+ stl->g_data->background_alpha = 1.0;
DRW_viewport_matrix_override_unset(DRW_MAT_PERS);
DRW_viewport_matrix_override_unset(DRW_MAT_PERSINV);
DRW_viewport_matrix_override_unset(DRW_MAT_VIEW);
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 035766de911..6126aab1014 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -480,6 +480,7 @@ void EEVEE_materials_cache_init(EEVEE_Data *vedata)
grp = DRW_shgroup_material_create(gpumat, psl->background_pass);
if (grp) {
+ DRW_shgroup_uniform_float(grp, "backgroundAlpha", &stl->g_data->background_alpha, 1);
DRW_shgroup_call_add(grp, geom, NULL);
}
else {
@@ -494,6 +495,7 @@ void EEVEE_materials_cache_init(EEVEE_Data *vedata)
if (grp == NULL) {
grp = DRW_shgroup_create(e_data.default_background, psl->background_pass);
DRW_shgroup_uniform_vec3(grp, "color", col, 1);
+ DRW_shgroup_uniform_float(grp, "backgroundAlpha", &stl->g_data->background_alpha, 1);
DRW_shgroup_call_add(grp, geom, NULL);
}
}
diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h
index 0d620fcf8fb..a1abb6c71e2 100644
--- a/source/blender/draw/engines/eevee/eevee_private.h
+++ b/source/blender/draw/engines/eevee/eevee_private.h
@@ -397,6 +397,7 @@ typedef struct EEVEE_PrivateData {
struct GHash *material_hash;
struct GHash *hair_material_hash;
struct GPUTexture *minmaxz;
+ float background_alpha; /* TODO find a better place for this. */
} EEVEE_PrivateData; /* Transient data */
/* eevee_data.c */
diff --git a/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl b/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
index 075ee22dc6f..90af87756f0 100644
--- a/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
@@ -1,8 +1,9 @@
+uniform float backgroundAlpha;
uniform vec3 color;
out vec4 FragColor;
void main() {
- FragColor = vec4(color, 1.0);
+ FragColor = vec4(color, backgroundAlpha);
}
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index bc4bfc6f281..28a94f8d78d 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -3855,9 +3855,11 @@ void node_output_material(vec4 surface, vec4 volume, float displacement, out vec
result = surface;
}
+uniform float backgroundAlpha;
+
void node_output_world(vec4 surface, vec4 volume, out vec4 result)
{
- result = vec4(surface.rgb, 1.0);
+ result = vec4(surface.rgb, backgroundAlpha);
}
void convert_metallic_to_specular(vec4 basecol, float metallic, float specular_fac, out vec4 diffuse, out vec4 f0)