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
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-08-26 15:51:13 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-08-26 15:52:28 +0300
commit76df0ec93a217693c75ee2890ce498e2ab244e9e (patch)
tree6abc99c8db2e826a92305abbc551473638690fbe /source
parentd33557c52e1ac221078c66d1b480fb3aaa3f6cd4 (diff)
Fix T45631: Ambient update rendered bug
The issue was in fact caused by both preview and viewport renderers affecting on the default material, conflicting with each other. Preview render doesn't really need default material, so we can safely skip it's initialization in the render pipeline for preview rendering.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_material.h2
-rw-r--r--source/blender/blenkernel/intern/material.c8
-rw-r--r--source/blender/render/intern/source/convertblender.c4
3 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h
index bbac607a3fd..a3c61f44ff2 100644
--- a/source/blender/blenkernel/BKE_material.h
+++ b/source/blender/blenkernel/BKE_material.h
@@ -98,7 +98,7 @@ void BKE_material_clear_id(struct ID *id, bool update_data);
/* rendering */
void init_render_material(struct Material *, int, float *);
-void init_render_materials(struct Main *, int, float *);
+void init_render_materials(struct Main *, int r_mode, float *amd, bool do_default_material);
void end_render_material(struct Material *);
void end_render_materials(struct Main *);
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index dd69de4877f..fa0d34b8db6 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1132,7 +1132,7 @@ void init_render_material(Material *mat, int r_mode, float *amb)
}
}
-void init_render_materials(Main *bmain, int r_mode, float *amb)
+void init_render_materials(Main *bmain, int r_mode, float *amb, bool do_default_material)
{
Material *ma;
@@ -1153,8 +1153,10 @@ void init_render_materials(Main *bmain, int r_mode, float *amb)
if (ma->id.us)
init_render_material(ma, r_mode, amb);
}
-
- init_render_material(&defmaterial, r_mode, amb);
+
+ if (do_default_material) {
+ init_render_material(&defmaterial, r_mode, amb);
+ }
}
/* only needed for nodes now */
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index e6fd570d31d..ee28c3b286f 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -5210,7 +5210,7 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l
/* still bad... doing all */
init_render_textures(re);
copy_v3_v3(amb, &re->wrld.ambr);
- init_render_materials(re->main, re->r.mode, amb);
+ init_render_materials(re->main, re->r.mode, amb, (re->r.scemode & R_BUTS_PREVIEW) == 0);
set_node_shader_lamp_loop(shade_material_loop);
/* MAKE RENDER DATA */
@@ -5941,7 +5941,7 @@ void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay,
init_render_textures(re);
copy_v3_v3(amb, &re->wrld.ambr);
- init_render_materials(re->main, re->r.mode, amb);
+ init_render_materials(re->main, re->r.mode, amb, true);
set_node_shader_lamp_loop(shade_material_loop);