diff options
Diffstat (limited to 'source/blender/render/intern/source/envmap.c')
-rw-r--r-- | source/blender/render/intern/source/envmap.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index c5872c52e0f..6423bfa9486 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -246,10 +246,26 @@ static void envmap_transmatrix(float mat[4][4], int part) NULL, NULL, NULL, NULL, NULL, NULL); } +/* ------------------------------------------------------------------------- */ + +static void env_set_imats(Render *re) +{ + Base *base; + float mat[4][4]; + + base = re->scene->base.first; + while (base) { + mult_m4_m4m4(mat, re->viewmat, base->object->obmat); + invert_m4_m4(base->object->imat, mat); + + base = base->next; + } + +} /* ------------------------------------------------------------------------- */ -static void env_rotate_scene(Render *re, float mat[4][4], int mode) +void env_rotate_scene(Render *re, float mat[4][4], int mode) { GroupObject *go; ObjectRen *obr; @@ -328,6 +344,10 @@ static void env_rotate_scene(Render *re, float mat[4][4], int mode) } } + if (mode) { + init_render_world(re); + env_set_imats(re); + } } /* ------------------------------------------------------------------------- */ @@ -395,23 +415,6 @@ static void env_showobjects(Render *re) /* ------------------------------------------------------------------------- */ -static void env_set_imats(Render *re) -{ - Base *base; - float mat[4][4]; - - base = re->scene->base.first; - while (base) { - mult_m4_m4m4(mat, re->viewmat, base->object->obmat); - invert_m4_m4(base->object->imat, mat); - - base = base->next; - } - -} - -/* ------------------------------------------------------------------------- */ - static void render_envmap(Render *re, EnvMap *env) { /* only the cubemap and planar map is implemented */ @@ -454,11 +457,9 @@ static void render_envmap(Render *re, EnvMap *env) invert_m4_m4(env->imat, tmat); env_rotate_scene(envre, tmat, 1); - init_render_world(envre); project_renderdata(envre, projectverto, 0, 0, 1); env_layerflags(envre, env->notlay); env_hideobject(envre, env->object); - env_set_imats(envre); if (re->test_break(re->tbh) == 0) { RE_TileProcessor(envre); |