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:
authorJoseph Eagar <joeedh@gmail.com>2022-05-15 10:33:22 +0300
committerJoseph Eagar <joeedh@gmail.com>2022-05-15 10:33:22 +0300
commitf9751889df35c81501c60abd1af98252d80ea3fc (patch)
tree2da53fad1a9aaf704bef3612361bf1747c321fff /source/blender
parent074c695a0d4de88550be71181690639ab6b16dcf (diff)
Fix T81715: Unprojected radius mode messes up sculpt texture radius
We really need to fix how unprojected radius (scene unit) works. What happened is the paint code updates the brush's normal radius with the current unprojected pixel radius, which was then used by texture brush tiled mode. To fix this I just cached the pixel radius at stroke start in UnifiedPaintSettings->start_pixel_radius.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/brush.c4
-rw-r--r--source/blender/editors/sculpt_paint/paint_stroke.c2
-rw-r--r--source/blender/makesdna/DNA_scene_types.h3
3 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 0593db34e20..3f243d04965 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -2029,7 +2029,7 @@ float BKE_brush_sample_tex_3d(const Scene *scene,
/* leave the coordinates relative to the screen */
/* use unadjusted size for tiled mode */
- invradius = 1.0f / BKE_brush_size_get(scene, br);
+ invradius = 1.0f / ups->start_pixel_radius;
x = point_2d[0];
y = point_2d[1];
@@ -2142,7 +2142,7 @@ float BKE_brush_sample_masktex(
/* leave the coordinates relative to the screen */
/* use unadjusted size for tiled mode */
- invradius = 1.0f / BKE_brush_size_get(scene, br);
+ invradius = 1.0f / ups->start_pixel_radius;
x = point_2d[0];
y = point_2d[1];
diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c
index d2005473512..210cffcbcda 100644
--- a/source/blender/editors/sculpt_paint/paint_stroke.c
+++ b/source/blender/editors/sculpt_paint/paint_stroke.c
@@ -923,6 +923,8 @@ PaintStroke *paint_stroke_new(bContext *C,
BKE_paint_set_overlay_override(br->overlay_flags);
+ ups->start_pixel_radius = BKE_brush_size_get(CTX_data_scene(C), br);
+
return stroke;
}
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index bfe967fcde5..1be27e0354c 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1255,8 +1255,7 @@ typedef struct UnifiedPaintSettings {
* In case of anchored brushes contains the anchored radius */
float pixel_radius;
float initial_pixel_radius;
-
- char _pad[4];
+ float start_pixel_radius;
/* drawing pressure */
float size_pressure_value;