[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48924] trunk/blender/source/blender/ blenkernel/intern/mask_rasterize.c: zealous bounds checking broke the invert option.
Campbell Barton
ideasman42 at gmail.com
Sat Jul 14 20:57:16 CEST 2012
Revision: 48924
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48924
Author: campbellbarton
Date: 2012-07-14 18:57:16 +0000 (Sat, 14 Jul 2012)
Log Message:
-----------
zealous bounds checking broke the invert option.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
Modified: trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c 2012-07-14 18:42:59 UTC (rev 48923)
+++ trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c 2012-07-14 18:57:16 UTC (rev 48924)
@@ -239,8 +239,8 @@
const float xmax = xmin + bucket_size_x;
const float ymax = ymin + bucket_size_y;
- float cent[2] = {(xmin + xmax) * 0.5f,
- (ymin + ymax) * 0.5f};
+ const float cent[2] = {(xmin + xmax) * 0.5f,
+ (ymin + ymax) * 0.5f};
if (face[3] == TRI_VERT) {
const float *v1 = cos[face[0]];
@@ -809,53 +809,54 @@
float BLI_maskrasterize_handle_sample(MaskRasterHandle *mr_handle, const float xy[2])
{
- if (BLI_in_rctf_v(&mr_handle->bounds, xy)) {
- const unsigned int layers_tot = mr_handle->layers_tot;
- unsigned int i;
- MaskRasterLayer *layer = mr_handle->layers;
+ /* can't do this because some layers may invert */
+ /* if (BLI_in_rctf_v(&mr_handle->bounds, xy)) */
- /* raycast vars*/
+ const unsigned int layers_tot = mr_handle->layers_tot;
+ unsigned int i;
+ MaskRasterLayer *layer = mr_handle->layers;
- /* return */
- float value = 0.0f;
+ /* raycast vars*/
- for (i = 0; i < layers_tot; i++, layer++) {
- if (BLI_in_rctf_v(&layer->bounds, xy)) {
- /* --- hit (start) --- */
- const float dist = 1.0f - layer_bucket_depth_from_xy(layer, xy);
- const float dist_ease = (3.0f * dist * dist - 2.0f * dist * dist * dist);
+ /* return */
+ float value = 0.0f;
- float v;
- /* apply alpha */
- v = dist_ease * layer->alpha;
+ for (i = 0; i < layers_tot; i++, layer++) {
+ float dist_ease;
+ float v;
- if (layer->blend_flag & MASK_BLENDFLAG_INVERT) {
- v = 1.0f - v;
- }
+ if (BLI_in_rctf_v(&layer->bounds, xy)) {
+ /* --- hit (start) --- */
+ const float dist = 1.0f - layer_bucket_depth_from_xy(layer, xy);
+ dist_ease = (3.0f * dist * dist - 2.0f * dist * dist * dist);
+ }
+ else {
+ dist_ease = 0.0f;
+ }
- switch (layer->blend) {
- case MASK_BLEND_SUBTRACT:
- {
- value -= v;
- break;
- }
- case MASK_BLEND_ADD:
- default:
- {
- value += v;
- break;
- }
- }
- /* --- hit (end) --- */
+ /* apply alpha */
+ v = dist_ease * layer->alpha;
+ if (layer->blend_flag & MASK_BLENDFLAG_INVERT) {
+ v = 1.0f - v;
+ }
+
+ switch (layer->blend) {
+ case MASK_BLEND_SUBTRACT:
+ {
+ value -= v;
+ break;
}
+ case MASK_BLEND_ADD:
+ default:
+ {
+ value += v;
+ break;
+ }
}
+ }
- return CLAMPIS(value, 0.0f, 1.0f);
- }
- else {
- return 0.0f;
- }
+ return CLAMPIS(value, 0.0f, 1.0f);
}
#endif /* USE_RASKTER */
More information about the Bf-blender-cvs
mailing list