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:
authorCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-06-17 18:10:19 +0300
commit06a1a66a9b6f120867d3bbebe3928744ec8e3495 (patch)
tree42e827a3cf58eb76474e479206b02a8d97dd3bf7 /source/blender/blenkernel/intern/material.c
parent61d27db35967710421ab92748e09624db068258d (diff)
parenta24b4e6090057479796e914bc603119b12f6ca06 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel/intern/material.c')
-rw-r--r--source/blender/blenkernel/intern/material.c84
1 files changed, 42 insertions, 42 deletions
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 1ea2f170922..21b2ab6b454 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -49,8 +49,8 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
-#include "BLI_math.h"
-#include "BLI_listbase.h"
+#include "BLI_math.h"
+#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "BLI_string.h"
#include "BLI_array_utils.h"
@@ -90,10 +90,10 @@ void init_def_material(void)
void BKE_material_free(Material *ma)
{
BKE_animdata_free((ID *)ma, false);
-
+
/* Free gpu material before the ntree */
GPU_material_free(&ma->gpumaterial);
-
+
/* is no lib link block, but material extension */
if (ma->nodetree) {
ntreeFreeTree(ma->nodetree);
@@ -117,7 +117,7 @@ void BKE_material_init(Material *ma)
ma->spec = 0.5;
ma->roughness = 0.25f;
-
+
ma->pr_lamp = 3; /* two lamps, is bits */
ma->pr_type = MA_SPHERE;
@@ -131,9 +131,9 @@ Material *BKE_material_add(Main *bmain, const char *name)
Material *ma;
ma = BKE_libblock_alloc(bmain, ID_MA, name, 0);
-
+
BKE_material_init(ma);
-
+
return ma;
}
@@ -218,7 +218,7 @@ Material ***give_matarar(Object *ob)
Mesh *me;
Curve *cu;
MetaBall *mb;
-
+
if (ob->type == OB_MESH) {
me = ob->data;
return &(me->mat);
@@ -239,7 +239,7 @@ short *give_totcolp(Object *ob)
Mesh *me;
Curve *cu;
MetaBall *mb;
-
+
if (ob->type == OB_MESH) {
me = ob->data;
return &(me->totcol);
@@ -413,7 +413,7 @@ Material *BKE_material_pop_id(Main *bmain, ID *id, int index_i, bool update_data
DEG_relations_tag_update(bmain);
}
}
-
+
return ret;
}
@@ -447,7 +447,7 @@ Material *give_current_material(Object *ob, short act)
const short *totcolp;
if (ob == NULL) return NULL;
-
+
/* if object cannot have material, (totcolp == NULL) */
totcolp = give_totcolp(ob);
if (totcolp == NULL || ob->totcol == 0) return NULL;
@@ -473,12 +473,12 @@ Material *give_current_material(Object *ob, short act)
if (act > ob->totcol) act = ob->totcol;
matarar = give_matarar(ob);
-
+
if (matarar && *matarar) ma = (*matarar)[act - 1];
else ma = NULL;
-
+
}
-
+
return ma;
}
@@ -621,18 +621,18 @@ void assign_material(Main *bmain, Object *ob, Material *ma, short act, int assig
if (act > MAXMAT) return;
if (act < 1) act = 1;
-
+
/* prevent crashing when using accidentally */
BLI_assert(!ID_IS_LINKED(ob));
if (ID_IS_LINKED(ob)) return;
-
+
/* test arraylens */
-
+
totcolp = give_totcolp(ob);
matarar = give_matarar(ob);
-
+
if (totcolp == NULL || matarar == NULL) return;
-
+
if (act > *totcolp) {
matar = MEM_callocN(sizeof(void *) * act, "matarray1");
@@ -676,7 +676,7 @@ void assign_material(Main *bmain, Object *ob, Material *ma, short act, int assig
break;
}
}
-
+
/* do it */
ob->matbits[act - 1] = bit;
@@ -811,14 +811,14 @@ short BKE_object_material_slot_find_index(Object *ob, Material *ma)
{
Material ***matarar;
short a, *totcolp;
-
+
if (ma == NULL) return 0;
-
+
totcolp = give_totcolp(ob);
matarar = give_matarar(ob);
-
+
if (totcolp == NULL || matarar == NULL) return 0;
-
+
for (a = 0; a < *totcolp; a++)
if ((*matarar)[a] == ma)
break;
@@ -831,7 +831,7 @@ bool BKE_object_material_slot_add(Main *bmain, Object *ob)
{
if (ob == NULL) return false;
if (ob->totcol >= MAXMAT) return false;
-
+
assign_material(bmain, ob, NULL, ob->totcol + 1, BKE_MAT_ASSIGN_USERPREF);
ob->actcol = ob->totcol;
return true;
@@ -844,7 +844,7 @@ bool BKE_object_material_slot_remove(Main *bmain, Object *ob)
Material *mao, ***matarar;
short *totcolp;
short a, actcol;
-
+
if (ob == NULL || ob->totcol == 0) {
return false;
}
@@ -858,10 +858,10 @@ bool BKE_object_material_slot_remove(Main *bmain, Object *ob)
/* take a mesh/curve/mball as starting point, remove 1 index,
* AND with all objects that share the ob->data
- *
+ *
* after that check indices in mesh/curve/mball!!!
*/
-
+
totcolp = give_totcolp(ob);
matarar = give_matarar(ob);
@@ -873,21 +873,21 @@ bool BKE_object_material_slot_remove(Main *bmain, Object *ob)
if (ob->actcol > ob->totcol) {
ob->actcol = ob->totcol;
}
-
+
/* we delete the actcol */
mao = (*matarar)[ob->actcol - 1];
if (mao)
id_us_min(&mao->id);
-
+
for (a = ob->actcol; a < ob->totcol; a++)
(*matarar)[a - 1] = (*matarar)[a];
(*totcolp)--;
-
+
if (*totcolp == 0) {
MEM_freeN(*matarar);
*matarar = NULL;
}
-
+
actcol = ob->actcol;
for (Object *obt = bmain->object.first; obt; obt = obt->id.next) {
@@ -900,14 +900,14 @@ bool BKE_object_material_slot_remove(Main *bmain, Object *ob)
mao = obt->mat[actcol - 1];
if (mao)
id_us_min(&mao->id);
-
+
for (a = actcol; a < obt->totcol; a++) {
obt->mat[a - 1] = obt->mat[a];
obt->matbits[a - 1] = obt->matbits[a];
}
obt->totcol--;
if (obt->actcol > obt->totcol) obt->actcol = obt->totcol;
-
+
if (obt->totcol == 0) {
MEM_freeN(obt->mat);
MEM_freeN(obt->matbits);
@@ -932,7 +932,7 @@ static bNode *nodetree_uv_node_recursive(bNode *node)
{
bNode *inode;
bNodeSocket *sock;
-
+
for (sock = node->inputs.first; sock; sock = sock->next) {
if (sock->link) {
inode = sock->link->fromnode;
@@ -944,7 +944,7 @@ static bNode *nodetree_uv_node_recursive(bNode *node)
}
}
}
-
+
return NULL;
}
@@ -967,7 +967,7 @@ void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma)
ma->paint_clone_slot = 0;
return;
}
-
+
bNode *node, *active_node;
if (!(ma->nodetree)) {
@@ -995,10 +995,10 @@ void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma)
if (active_node == node)
ma->paint_active_slot = index;
ma->texpaintslot[index].ima = (Image *)node->id;
-
+
/* for new renderer, we need to traverse the treeback in search of a UV node */
bNode *uvnode = nodetree_uv_node_recursive(node);
-
+
if (uvnode) {
NodeShaderUVMap *storage = (NodeShaderUVMap *)uvnode->storage;
ma->texpaintslot[index].uvname = storage->uv_map;
@@ -1014,8 +1014,8 @@ void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma)
}
ma->tot_slots = count;
-
-
+
+
if (ma->paint_active_slot >= count) {
ma->paint_active_slot = count - 1;
}
@@ -1042,7 +1042,7 @@ void BKE_texpaint_slots_refresh_object(Scene *scene, struct Object *ob)
void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
{
float tmp, facm = 1.0f - fac;
-
+
switch (type) {
case MA_RAMP_BLEND:
r_col[0] = facm * (r_col[0]) + fac * col[0];