Commit: 3711e483027d9c6aadae507106ec5881107dea9c Author: Jacques Lucke Date: Wed Jun 29 10:26:23 2022 +0200 Branches: temp-hair-patches-3.3 https://developer.blender.org/rB3711e483027d9c6aadae507106ec5881107dea9c
Some Hair Patches * D15134 * D15308 * D15219 =================================================================== M release/scripts/presets/keyconfig/keymap_data/blender_default.py M release/scripts/startup/bl_ui/space_toolsystem_toolbar.py M release/scripts/startup/bl_ui/space_view3d.py M source/blender/blenkernel/intern/brush.c M source/blender/blenloader/intern/versioning_300.c M source/blender/draw/CMakeLists.txt M source/blender/draw/engines/basic/basic_engine.c M source/blender/draw/engines/basic/basic_private.h M source/blender/draw/engines/basic/basic_shader.c A source/blender/draw/engines/basic/shaders/basic_depth_curves_vert.glsl M source/blender/draw/engines/basic/shaders/infos/basic_depth_info.hh M source/blender/draw/engines/overlay/overlay_engine.c M source/blender/draw/engines/overlay/overlay_extra.c M source/blender/draw/engines/overlay/overlay_outline.c M source/blender/draw/engines/overlay/overlay_private.h A source/blender/draw/engines/overlay/overlay_sculpt_curves.cc M source/blender/draw/engines/overlay/overlay_shader.c M source/blender/draw/engines/overlay/shaders/infos/overlay_outline_info.hh A source/blender/draw/engines/overlay/shaders/infos/overlay_sculpt_curves_info.hh A source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl A source/blender/draw/engines/overlay/shaders/overlay_sculpt_curves_selection_frag.glsl A source/blender/draw/engines/overlay/shaders/overlay_sculpt_curves_selection_vert.glsl M source/blender/draw/intern/draw_cache_impl.h M source/blender/draw/intern/draw_cache_impl_curves.cc M source/blender/draw/intern/shaders/common_hair_lib.glsl M source/blender/draw/tests/shaders_test.cc M source/blender/editors/curves/CMakeLists.txt M source/blender/editors/curves/intern/curves_ops.cc M source/blender/editors/include/ED_curves.h M source/blender/editors/sculpt_paint/CMakeLists.txt A source/blender/editors/sculpt_paint/curves_sculpt_density.cc M source/blender/editors/sculpt_paint/curves_sculpt_intern.hh M source/blender/editors/sculpt_paint/curves_sculpt_ops.cc A source/blender/editors/sculpt_paint/curves_sculpt_pinch.cc A source/blender/editors/sculpt_paint/curves_sculpt_puff.cc A source/blender/editors/sculpt_paint/curves_sculpt_slide.cc A source/blender/editors/sculpt_paint/curves_sculpt_smooth.cc M source/blender/gpu/CMakeLists.txt M source/blender/makesdna/DNA_brush_enums.h M source/blender/makesdna/DNA_brush_types.h M source/blender/makesrna/intern/rna_brush.c =================================================================== diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 623ca2340d1..d12d68ee5a0 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5624,6 +5624,7 @@ def km_sculpt_curves(params): ("curves.disable_selection", {"type": 'TWO', "value": 'PRESS', "alt": True}, None), *_template_paint_radial_control("curves_sculpt"), *_template_items_select_actions(params, "sculpt_curves.select_all"), + ("sculpt_curves.min_distance_edit", {"type": 'R', "value": 'PRESS', "shift": True}, {}), ]) return keymap diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 5831aa52cc1..9f7ca89b8c9 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -2377,6 +2377,51 @@ class _defs_curves_sculpt: data_block='GROW_SHRINK' ) + @ToolDef.from_fn + def pinch(): + return dict( + idname="builtin_brush.pinch", + label="Pinch", + icon="ops.curves.sculpt_pinch", + data_block='PINCH' + ) + + @ToolDef.from_fn + def smooth(): + return dict( + idname="builtin_brush.smooth", + label="Smooth", + icon="ops.curves.sculpt_smooth", + data_block='SMOOTH' + ) + + @ToolDef.from_fn + def puff(): + return dict( + idname="builtin_brush.puff", + label="Puff", + icon="ops.curves.sculpt_puff", + data_block='PUFF' + ) + + @ToolDef.from_fn + def density(): + return dict( + idname="builtin_brush.density", + label="Density", + icon="ops.curves.sculpt_density", + data_block="DENSITY" + ) + + @ToolDef.from_fn + def slide(): + return dict( + idname="builtin_brush.slide", + label="Slide", + icon="ops.curves.sculpt_slide", + data_block="SLIDE" + ) + class _defs_gpencil_vertex: @@ -3140,6 +3185,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_curves_sculpt.delete, _defs_curves_sculpt.snake_hook, _defs_curves_sculpt.grow_shrink, + _defs_curves_sculpt.pinch, + _defs_curves_sculpt.smooth, + _defs_curves_sculpt.puff, + _defs_curves_sculpt.density, + _defs_curves_sculpt.slide, None, *_tools_annotate, ], diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 1f69705db8e..853dfccc626 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -535,6 +535,30 @@ class _draw_tool_settings_context_mode: layout.prop(brush, "direction", expand=True, text="") layout.prop(brush, "falloff_shape", expand=True) layout.popover("VIEW3D_PT_tools_brush_falloff") + elif curves_tool == 'PINCH': + layout.prop(brush, "direction", expand=True, text="") + layout.prop(brush, "falloff_shape", expand=True) + layout.popover("VIEW3D_PT_tools_brush_falloff") + elif curves_tool == 'SMOOTH': + layout.prop(brush, "falloff_shape", expand=True) + layout.popover("VIEW3D_PT_tools_brush_falloff") + elif curves_tool == 'PUFF': + layout.prop(brush, "falloff_shape", expand=True) + layout.popover("VIEW3D_PT_tools_brush_falloff") + elif curves_tool == 'DENSITY': + layout.prop(brush, "falloff_shape", expand=True) + row = layout.row(align=True) + row.prop(brush.curves_sculpt_settings, "density_mode", text="", expand=True) + row = layout.row(align=True) + row.prop(brush.curves_sculpt_settings, "minimum_distance") + row.operator("sculpt_curves.min_distance_edit", text="", icon='DRIVER_DISTANCE') + row = layout.row(align=True) + row.enabled = brush.curves_sculpt_settings.density_mode != 'REMOVE' + row.prop(brush.curves_sculpt_settings, "density_add_attempts", text="Max Count") + layout.popover("VIEW3D_PT_tools_brush_falloff") + layout.popover("VIEW3D_PT_curves_sculpt_add_shape", text="Curve Shape") + elif curves_tool == "SLIDE": + layout.popover("VIEW3D_PT_tools_brush_falloff") class VIEW3D_HT_header(Header): @@ -2005,6 +2029,9 @@ class VIEW3D_MT_select_sculpt_curves(Menu): layout.operator("sculpt_curves.select_all", text="All").action = 'SELECT' layout.operator("sculpt_curves.select_all", text="None").action = 'DESELECT' layout.operator("sculpt_curves.select_all", text="Invert").action = 'INVERT' + layout.operator("sculpt_curves.select_random", text="Random") + layout.operator("sculpt_curves.select_end", text="Endpoints") + layout.operator("sculpt_curves.select_grow", text="Grow") class VIEW3D_MT_angle_control(Menu): diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 1cda0e8a4bb..dd38af126fe 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -1562,6 +1562,7 @@ void BKE_brush_init_curves_sculpt_settings(Brush *brush) settings->points_per_curve = 8; settings->minimum_length = 0.01f; settings->curve_length = 0.3f; + settings->density_add_attempts = 100; } struct Brush *BKE_brush_first_search(struct Main *bmain, const eObjectMode ob_mode) diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c index 57fd71f8933..515c904f6f6 100644 --- a/source/blender/blenloader/intern/versioning_300.c +++ b/source/blender/blenloader/intern/versioning_300.c @@ -3183,6 +3183,14 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain) { /* Keep this block, even when empty. */ + /* Initialize brush curves sculpt settings. */ + LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) { + if (brush->ob_mode != OB_MODE_SCULPT_CURVES) { + continue; + } + brush->curves_sculpt_settings->density_add_attempts = 100; + } + /* Fix for T98925 - remove channels region, that was initialized in incorrect editor types. */ for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 9cb3743dd02..fa7c374c948 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -191,6 +191,7 @@ set(SRC engines/overlay/overlay_paint.c engines/overlay/overlay_particle.c engines/overlay/overlay_sculpt.c + engines/overlay/overlay_sculpt_curves.cc engines/overlay/overlay_shader.c engines/overlay/overlay_volume.c engines/overlay/overlay_wireframe.c @@ -454,6 +455,7 @@ set(GLSL_SRC engines/basic/shaders/basic_conservative_depth_geom.glsl engines/basic/shaders/basic_depth_vert.glsl + engines/basic/shaders/basic_depth_curves_vert.glsl engines/basic/shaders/basic_depth_pointcloud_vert.glsl engines/basic/shaders/basic_depth_frag.glsl @@ -531,6 +533,7 @@ set(GLSL_SRC engines/overlay/shaders/overlay_motion_path_line_vert.glsl engines/overlay/shaders/overlay_motion_path_point_vert.glsl engines/overlay/shaders/overlay_outline_detect_frag.glsl + engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl engines/overlay/shaders/overlay_outline_prepass_frag.glsl engines/overlay/shaders/overlay_outline_prepass_geom.glsl engines/overlay/shaders/overlay_outline_prepass_gpencil_frag.glsl @@ -550,6 +553,8 @@ set(GLSL_SRC engines/overlay/shaders/overlay_particle_vert.glsl engines/overlay/shaders/overlay_point_varying_color_frag.glsl engines/overlay/shaders/overlay_point_varying_color_varying_outline_aa_frag.glsl + engines/overlay/shaders/overlay_sculpt_curves_selection_frag.glsl + engines/overlay/shaders/overlay_sculpt_curves_selection_vert.glsl engines/overlay/shaders/overlay_sculpt_mask_frag.glsl engines/overlay/shaders/overlay_sculpt_mask_vert.glsl engines/overlay/shaders/overlay_uniform_color_frag.glsl diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c index 04a3c27959d..975d9e299bf 100644 --- a/source/blender/draw/engines/basic/basic_engine.c +++ b/source/blender/draw/engines/basic/basic_engine.c @@ -53,6 +53,7 @@ typedef struct BASIC_PrivateData { DRWShadingGroup *depth_shgrp[2]; DRWShadingGroup *depth_shgrp_cull[2]; DRWShadingGroup *depth_hair_shgrp[2]; + DRWShadingGroup *depth_curves_shgrp[2]; DRWShadingGroup *depth_pointcloud_shgrp[2]; bool use_material_slot_selection; } BASIC_PrivateData; /* Transient data */ @@ -99,6 +100,9 @@ static void basic_cache_init(void *vedata) stl->g_data->depth_hair_shgrp[i] = grp = DRW_shgroup_create( BASIC_shaders_depth_sh_get(draw_ctx->sh_cfg), psl->depth_pass[i]); + stl->g_data->depth_curves_shgrp[i] = grp = DRW_shgroup_create( + BASIC_shaders_curves_depth_sh_get(draw_ctx->sh_cfg), psl->depth_pass[i]); + sh = DRW_state_is_select() ? BASIC_shaders_depth_conservative_sh_get(draw_ctx->sh_cfg) : BASIC_shaders_depth_sh_get(draw_ctx->sh_cfg); state |= DRW_STATE_CULL_BACK; @@ -156,8 +160,12 @@ static void basic_cache_populate(void *vedata, Object *ob) basic_cache_populate_particles(vedata, ob); } - /* Make flat object selectable in ortho view if wireframe is enabled. */ const bool do_in_front = (ob->dtx & OB_DRAW_IN_FRONT) != 0; + if (ob->type == OB_CURVES) { + DRW_shgroup_curves_create_sub(ob, stl->g_data->depth_curves_shgrp[do_in_front], NULL); + } + + /* Make flat object selectable @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs