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>2019-05-08 18:14:54 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-08 18:52:48 +0300
commite053f6b1d8169d54bc3cae058a3caaf72e479d63 (patch)
tree5ff79193998dc4a9d030b74290bdad406922a981 /source/blender/draw/intern/draw_manager_data.c
parent8c5c02932f20dac55675448dae4dbccbbc34aaf8 (diff)
DRW: Copy matrix in case of ModelMatrixInverse being used
ob->imat is garanteed to be valid by the depsgraph.
Diffstat (limited to 'source/blender/draw/intern/draw_manager_data.c')
-rw-r--r--source/blender/draw/intern/draw_manager_data.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c
index 06b9dedd428..d613203c74d 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.c
@@ -371,12 +371,21 @@ static void drw_call_state_update_matflag(DRWCallState *state,
* This is the opposite of what draw_matrices_model_prepare() does. */
state->matflag |= shgroup->matflag;
+ if (new_flags & DRW_CALL_MODELINVERSE) {
+ if (ob) {
+ copy_m4_m4(state->modelinverse, ob->imat);
+ }
+ else {
+ invert_m4_m4(state->modelinverse, state->model);
+ }
+ }
+
/* Orco factors: We compute this at creation to not have to save the *ob_data */
- if ((new_flags & DRW_CALL_ORCOTEXFAC) != 0) {
+ if (new_flags & DRW_CALL_ORCOTEXFAC) {
drw_call_calc_orco(ob, state->orcotexfac);
}
- if ((new_flags & DRW_CALL_OBJECTINFO) != 0) {
+ if (new_flags & DRW_CALL_OBJECTINFO) {
state->objectinfo[0] = ob ? ob->index : 0;
uint random;
if (DST.dupli_source) {