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:
authorClément Foucault <foucault.clem@gmail.com>2017-06-24 06:24:59 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-24 06:24:59 +0300
commit28ff238c45a211a5b4d81f968860e71701080e2a (patch)
tree1292a8e392140e7bc5578de8fbc04493dde8b3cf /source/blender/draw/engines/eevee
parentbff98ce3f72e9ddad35c4753ed7dd2177336be4e (diff)
Eevee: Planar reflection: Fix normal deformation for background pixels.
Now it matches world cubemap perfectly.
Diffstat (limited to 'source/blender/draw/engines/eevee')
-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
5 files changed, 8 insertions, 1 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);
}