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:
authorJeroen Bakker <j.bakker@atmind.nl>2018-06-20 13:26:06 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-06-20 13:29:09 +0300
commitc17ba4a9032246cc674cdc03a2f39b91b32fecd9 (patch)
tree09d81d8c0818df35a4b51b2ab603b74dfee1241a /source/blender/draw/engines/workbench/workbench_deferred.c
parent84c2ef0eaf9d9901f6a88c6e095490378ac5d677 (diff)
T55550: Workbench Shadows are incorrect in first draw cycle
Shadows uses the old location for light_direction. Maybe a merge conflict.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_deferred.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_deferred.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index 3bf7c34d5eb..9b1a17a372a 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -49,7 +49,7 @@
/* *********** STATIC *********** */
-// #define DEBUG_SHADOW_VOLUME
+/* #define DEBUG_SHADOW_VOLUME */
#ifdef DEBUG_SHADOW_VOLUME
# include "draw_debug.h"
@@ -76,7 +76,6 @@ static struct {
struct GPUTexture *effect_buffer_tx; /* ref only, not alloced */
SceneDisplay display; /* world light direction for shadows */
- float light_direction_vs[3];
int next_object_id;
float normal_world_matrix[3][3];
@@ -485,8 +484,6 @@ void workbench_deferred_cache_init(WORKBENCH_Data *vedata)
WORKBENCH_PrivateData *wpd = stl->g_data;
DRWShadingGroup *grp;
const DRWContextState *draw_ctx = DRW_context_state_get();
- static float light_multiplier = 1.0f;
-
Scene *scene = draw_ctx->scene;
@@ -494,9 +491,9 @@ void workbench_deferred_cache_init(WORKBENCH_Data *vedata)
/* Deferred Mix Pass */
{
workbench_private_data_get_light_direction(wpd, e_data.display.light_direction);
+ studiolight_update_light(wpd, e_data.display.light_direction);
e_data.display.shadow_shift = scene->display.shadow_shift;
- copy_v3_v3(e_data.light_direction_vs, wpd->world_data.lights[0].light_direction_vs);
if (SHADOW_ENABLED(wpd)) {
psl->composite_pass = DRW_pass_create(
@@ -504,7 +501,7 @@ void workbench_deferred_cache_init(WORKBENCH_Data *vedata)
grp = DRW_shgroup_create(wpd->composite_sh, psl->composite_pass);
workbench_composite_uniforms(wpd, grp);
DRW_shgroup_stencil_mask(grp, 0x00);
- DRW_shgroup_uniform_float(grp, "lightMultiplier", &light_multiplier, 1);
+ DRW_shgroup_uniform_float_copy(grp, "lightMultiplier", 1.0f);
DRW_shgroup_uniform_float(grp, "shadowMultiplier", &wpd->shadow_multiplier, 1);
DRW_shgroup_uniform_float(grp, "shadowShift", &scene->display.shadow_shift, 1);
DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL);
@@ -548,7 +545,6 @@ void workbench_deferred_cache_init(WORKBENCH_Data *vedata)
DRW_shgroup_call_add(grp, DRW_cache_fullscreen_quad_get(), NULL);
#endif
- studiolight_update_light(wpd, e_data.display.light_direction);
}
else {
psl->composite_pass = DRW_pass_create(