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:
Diffstat (limited to 'source/blender/render/intern/source/bake.c')
-rw-r--r--source/blender/render/intern/source/bake.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/source/blender/render/intern/source/bake.c b/source/blender/render/intern/source/bake.c
index d4451d570a4..cb6f9611bfd 100644
--- a/source/blender/render/intern/source/bake.c
+++ b/source/blender/render/intern/source/bake.c
@@ -734,8 +734,8 @@ static void bake_single_vertex(BakeShade *bs, VertRen *vert, float u, float v)
}
/* Bake all vertices of a face. Actually, this still works on a face-by-face
- basis, and each vertex on each face is shaded. Vertex colors are a property
- of loops, not vertices. */
+ * basis, and each vertex on each face is shaded. Vertex colors are a property
+ * of loops, not vertices. */
static void shade_verts(BakeShade *bs)
{
VlakRen *vlr = bs->vlr;
@@ -756,7 +756,7 @@ static void shade_verts(BakeShade *bs)
zero_v3(bs->dyco);
/* Shade each vertex of the face. u and v are barycentric coordinates; since
- we're only interested in vertices, these will be 0 or 1. */
+ * we're only interested in vertices, these will be 0 or 1. */
if ((vlr->flag & R_FACE_SPLIT) == 0) {
/* Processing triangle face, whole quad, or first half of split quad. */
@@ -818,10 +818,13 @@ static void shade_tface(BakeShade *bs)
BLI_lock_thread(LOCK_CUSTOM1);
userdata = bs->ibuf->userdata;
if (userdata == NULL) /* since the thread was locked, its possible another thread alloced the value */
- userdata = MEM_callocN(sizeof(BakeImBufuserData), "BakeMask");
+ userdata = MEM_callocN(sizeof(BakeImBufuserData), "BakeImBufuserData");
- if (bs->use_mask)
- userdata->mask_buffer = MEM_callocN(sizeof(char) * bs->rectx * bs->recty, "BakeMask");
+ if (bs->use_mask) {
+ if (userdata->mask_buffer == NULL) {
+ userdata->mask_buffer = MEM_callocN(sizeof(char) * bs->rectx * bs->recty, "BakeMask");
+ }
+ }
if (bs->use_displacement_buffer)
userdata->displacement_buffer = MEM_callocN(sizeof(float) * bs->rectx * bs->recty, "BakeDisp");
@@ -1069,12 +1072,14 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up
if (!ibuf)
continue;
- userdata = (BakeImBufuserData *) ibuf->userdata;
- RE_bake_ibuf_filter(ibuf, userdata->mask_buffer, re->r.bake_filter);
+ userdata = (BakeImBufuserData *)ibuf->userdata;
+ if (userdata) {
+ RE_bake_ibuf_filter(ibuf, userdata->mask_buffer, re->r.bake_filter);
- if (use_displacement_buffer) {
- RE_bake_ibuf_normalize_displacement(ibuf, userdata->displacement_buffer, userdata->mask_buffer,
- displacement_min, displacement_max);
+ if (use_displacement_buffer) {
+ RE_bake_ibuf_normalize_displacement(ibuf, userdata->displacement_buffer, userdata->mask_buffer,
+ displacement_min, displacement_max);
+ }
}
ibuf->userflags |= IB_BITMAPDIRTY;