diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2014-08-27 17:52:24 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2014-08-27 17:52:24 +0400 |
commit | 57ccd29caead1d2e07014dc320e3bd8caeaf8436 (patch) | |
tree | 17a04d5452db7071da0e9d80ae0ff66ac03f55e7 /source/blender/blenkernel/intern | |
parent | 4e3f76e06b6654d4951a54804eaa808b040ef942 (diff) |
Only calculate texture paint slots from mtex if renderer is blender
internal.
This should eliminate some confusion when people use external render
engines.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/material.c | 16 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 6 |
3 files changed, 17 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 5e01f9add1e..895e542ca52 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2497,11 +2497,10 @@ static void dag_id_flush_update(Main *bmain, Scene *sce, ID *id) } if (ELEM(idtype, ID_MA, ID_TE)) { - const bool new_shading_nodes = BKE_scene_use_new_shading_nodes(sce); for (obt = bmain->object.first; obt; obt = obt->id.next) { if (obt->mode & OB_MODE_TEXTURE_PAINT) { obt->recalc |= OB_RECALC_DATA; - BKE_texpaint_slots_refresh_object(obt, new_shading_nodes); + BKE_texpaint_slots_refresh_object(sce, obt); lib_id_recalc_data_tag(bmain, &obt->id); } } diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 6daf000aae3..81b93a47917 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -63,6 +63,7 @@ #include "BKE_main.h" #include "BKE_material.h" #include "BKE_mesh.h" +#include "BKE_scene.h" #include "BKE_node.h" #include "BKE_curve.h" @@ -1326,12 +1327,15 @@ static bool get_mtex_slot_valid_texpaint(struct MTex *mtex) mtex->tex->ima); } -void BKE_texpaint_slot_refresh_cache(Material *ma, bool use_nodes) +void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma) { MTex **mtex; short count = 0; short index = 0, i; + bool use_nodes = BKE_scene_use_new_shading_nodes(scene); + bool is_bi = BKE_scene_uses_blender_internal(scene); + if (!ma) return; @@ -1340,10 +1344,10 @@ void BKE_texpaint_slot_refresh_cache(Material *ma, bool use_nodes) ma->texpaintslot = NULL; } - if (use_nodes) { + if (use_nodes || ma->use_nodes) { bNode *node, *active_node; - if (!(ma->use_nodes && ma->nodetree)) + if (!(ma->nodetree)) return; for (node = ma->nodetree->nodes.first; node; node = node->next) { @@ -1369,7 +1373,7 @@ void BKE_texpaint_slot_refresh_cache(Material *ma, bool use_nodes) } } } - else { + else if (is_bi) { for (mtex = ma->mtex, i = 0; i < MAX_MTEX; i++, mtex++) { if (get_mtex_slot_valid_texpaint(*mtex)) { count++; @@ -1407,13 +1411,13 @@ void BKE_texpaint_slot_refresh_cache(Material *ma, bool use_nodes) return; } -void BKE_texpaint_slots_refresh_object(struct Object *ob, bool use_nodes) +void BKE_texpaint_slots_refresh_object(Scene *scene, struct Object *ob) { int i; for (i = 1; i < ob->totcol + 1; i++) { Material *ma = give_current_material(ob, i); - BKE_texpaint_slot_refresh_cache(ma, use_nodes); + BKE_texpaint_slot_refresh_cache(scene, ma); } } diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index f912e3d45a6..a41b7f644f3 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -1900,6 +1900,12 @@ bool BKE_scene_use_new_shading_nodes(Scene *scene) return (type && type->flag & RE_USE_SHADING_NODES); } +bool BKE_scene_uses_blender_internal(struct Scene *scene) +{ + return strcmp("BLENDER_INTERNAL", scene->r.engine); +} + + void BKE_scene_base_flag_to_objects(struct Scene *scene) { Base *base = scene->base.first; |