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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-12-18 21:46:48 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-12-18 21:46:48 +0400
commit9e2b1900a8acaabd24d78fd7914686d3da713f9a (patch)
tree31c0e5eab5e40a164d785104677ee506cde051da /source/blender
parent6571713ddb7e1f091c30a43b315fb37778605ed2 (diff)
Multires baker: noneed to tag display as invalid after every flushed pixel
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/render/intern/source/multires_bake.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/source/blender/render/intern/source/multires_bake.c b/source/blender/render/intern/source/multires_bake.c
index 55fb8ae082d..edc0718ccdb 100644
--- a/source/blender/render/intern/source/multires_bake.c
+++ b/source/blender/render/intern/source/multires_bake.c
@@ -400,6 +400,11 @@ static void do_multires_bake(MultiresBakeRender *bkr, Image *ima, int require_ta
data.i2 = verts[2][t];
bake_rasterize(&bake_rast, mtfate->uv[data.i0], mtfate->uv[data.i1], mtfate->uv[data.i2]);
+
+ if (ibuf->rect_float)
+ ibuf->userflags |= IB_RECT_INVALID;
+
+ ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
}
bkr->baked_faces++;
@@ -620,7 +625,10 @@ static void apply_heights_data(void *bake_data)
}
}
- ibuf->userflags = IB_RECT_INVALID | IB_DISPLAY_BUFFER_INVALID;
+ if (ibuf->rect_float)
+ ibuf->userflags |= IB_RECT_INVALID;
+
+ ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
BKE_image_release_ibuf(height_data->ima, ibuf, NULL);
}
@@ -701,15 +709,11 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
if (ibuf->rect_float) {
float *rrgbf = ibuf->rect_float + pixel * 4;
rrgbf[3] = 1.0f;
-
- ibuf->userflags = IB_RECT_INVALID;
}
else {
char *rrgb = (char *)ibuf->rect + pixel * 4;
rrgb[3] = 255;
}
-
- ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
}
/* **************** Normal Maps Baker **************** */
@@ -781,16 +785,12 @@ static void apply_tangmat_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
rrgbf[1] = vec[1];
rrgbf[2] = vec[2];
rrgbf[3] = 1.0f;
-
- ibuf->userflags = IB_RECT_INVALID;
}
else {
unsigned char *rrgb = (unsigned char *)ibuf->rect + pixel * 4;
rgb_float_to_uchar(rrgb, vec);
rrgb[3] = 255;
}
-
- ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
}
/* **************** Ambient Occlusion Baker **************** */
@@ -1073,16 +1073,12 @@ static void apply_ao_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm, cons
float *rrgbf = ibuf->rect_float + pixel * 4;
rrgbf[0] = rrgbf[1] = rrgbf[2] = value;
rrgbf[3] = 1.0f;
-
- ibuf->userflags = IB_RECT_INVALID;
}
else {
unsigned char *rrgb = (unsigned char *) ibuf->rect + pixel * 4;
rrgb[0] = rrgb[1] = rrgb[2] = FTOCHAR(value);
rrgb[3] = 255;
}
-
- ibuf->userflags |= IB_DISPLAY_BUFFER_INVALID;
}
/* **************** Common functions public API relates on **************** */