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>2018-07-03 13:29:48 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-07-03 14:36:04 +0300
commit967b84534a746ea2f5b37ad0c80ad680362b571a (patch)
tree230a97a3c1ff5cc79455ae3b42cc697f0015000f /source/blender/draw/engines/workbench/workbench_data.c
parente30f25ba22efae0c749c3dcecf6fb4ecf60e853e (diff)
Workbench: Fix wrong shading shadoow direction.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_data.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_data.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
index 0f0d879aae8..4c68e41d010 100644
--- a/source/blender/draw/engines/workbench/workbench_data.c
+++ b/source/blender/draw/engines/workbench/workbench_data.c
@@ -121,7 +121,7 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
}
}
-void workbench_private_data_get_light_direction(WORKBENCH_PrivateData *wpd, float light_direction[3])
+void workbench_private_data_get_light_direction(WORKBENCH_PrivateData *wpd, float r_light_direction[3])
{
const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene;
@@ -129,13 +129,16 @@ void workbench_private_data_get_light_direction(WORKBENCH_PrivateData *wpd, floa
float view_matrix[4][4];
DRW_viewport_matrix_get(view_matrix, DRW_MAT_VIEW);
+ copy_v3_v3(r_light_direction, scene->display.light_direction);
+ negate_v3(r_light_direction);
+
{
WORKBENCH_UBO_Light *light = &wd->lights[0];
- mul_v3_mat3_m4v3(light->light_direction_vs, view_matrix, light_direction);
+ mul_v3_mat3_m4v3(light->light_direction_vs, view_matrix, r_light_direction);
light->light_direction_vs[3] = 0.0f;
copy_v3_fl(light->specular_color, 1.0f);
light->energy = 1.0f;
- copy_v4_v4(wd->light_direction_vs, light->light_direction_vs);
+ copy_v4_v4(wd->shadow_direction_vs, light->light_direction_vs);
wd->num_lights = 1;
}
@@ -154,8 +157,6 @@ void workbench_private_data_get_light_direction(WORKBENCH_PrivateData *wpd, floa
wd->num_lights = light_index;
}
- copy_v3_v3(light_direction, scene->display.light_direction);
- negate_v3(light_direction);
DRW_uniformbuffer_update(wpd->world_ubo, wd);
}