January 3 to January 9

D12587 (temp-sculpt-colors)

  • Polished D1258 to get ready for master:
    • Fixed bugs
    • Added back color picker panel
    • Fixed icons
    • Updated patch for latest master (including new GPU subsurf);
    • Vertex color node now shows all color layers in its quick search list.


  • New automasking modes:
    • Mask by view normal, works similarly to front face only but with a falloff.
    • Mask by brush normal, compares normals with initial brush normal at start of stroke, see video.

January 10 to January 14

  1. Cleaned up sculpt temp attribute api. 5e27ed5f0e
  2. Fixed various bugs and crashes in sculpt-dev:
    1. 15cb3130c3
    2. fab69104da
    3. bf812abfcb
    4. 4d54182159
  3. Merged master into sculpt-dev and temp-sculpt-colors.
  4. Further cleaned up temp-sculpt-colors (D12587).
    1. Fixed bug with sculpt undo system losing track of the active color attribute.
    2. Made various requested changes.

January 15 to January 21

  1. Cleaned up doc comments for sculpt_intern.h.
  2. Merged master -> sculpt-dev
  3. Fixed a few bugs in sculpt-dev
  4. Worked on blog post

January 23 to January 28

  1. Worked on sculpt colors patch.
  2. Refined draft of blog post.
  3. Roughed out C++ backend for new brush engine system as a proof of concept.
  4. Spent an inordinate amount of time merging branches.
  5. Attempted to debug Wintab. I ended up having to upgrade my drivers;
 I think the stock OEM ones got broken by the upgrade to Windows 11.

February 1 to February 5

  1. Made DynTopo in sculpt-dev use a new, unified edge heap (a min-max heap). a393db3c23
  2. Worked on sculpt colors patch.

February 7 to February 11

  1. Cleaned up some code in sculpt-dev.
  2. Worked on sculpt colors patch

== February 14 to February 18

  1. Worked on sculpt colors patch
  2. Did research for texture paint project.

February 21 to February 25

  1. Worked on sculpt colors patch
  2. Started work on texture paint prototype.
    1. Got seams to work in JS prototype.
  3. Ported vertex paint to C++
    1. Supports vertex and corner (float/byte) color layers.
  4. Added corner colors support to sculpt undo

February 28 to March 4

  1. Continued work on texture paint prototype.

March 7 to March 11

  1. Got texture paint to work on a proof of concept level.
  2. Figured out how to build neighbor lists for texels across triangle seams. JS prototype
  3. Worked on PBVH EEVEE patch D13897

March 14 to March 18

  1. Submitted patch to add triangle iterators to PBVH (in texture paint branch). D14339.
  2. Fix minor sculpt-dev bugs:
    1. b71693b5f0
    2. 194ec7460c
    3. 389724c1ac
  3. Dyntopo fixes in sculpt-dev:
    1. 8b719fee19
    2. 371a6799c4
  4. Roughed out PBVH caching (plan is to implement and test in sculpt-dev before making a patch against either master, the texture paint branch or both). 307f13aee5

March 21 to March 25

  1. Fixed various issues in sculpt vertex colors patch:
    1. Data transfer modifier f42d3caecd
    2. Reverse/rotate face colors in editmode 09eb086779
    3. Changed various UI strings from "vertex colors" to "color attributes." 09eb086779
    4. Mask by color 09eb086779
    5. Alpha getting mangled for byte colors 51c3ce1353
    6. Layer auto creation 19ea75f8cf
    7. Undo crash 4c7ea01cbd
  2. Improved smear brush in sculpt vertex colors patch 9e3e80780c
  3. Fixed various bugs in pbvh caching:
    1. 711bcef7f4
    2. 34d8df4aba
    3. 43af973cd9
    4. b53339edfa
  4. Fix pbvh cache crashes in sculpt-vev:
    1. 711bcef7f4
    2. 273040f84c
    3. 34d8df4aba
    4. b53339edfa

March 28th to April 1

  1. Sculpt vertex colors patch
    1. d6fc7221c8
    2. 7ec7fa03ea
    3. 76d40e26c4
    4. a6c5e738df
    5. 79e471715f
    6. 9200581afc
    7. b1e68a8e3f
    8. 2c29a94531
    9. 820a88e37b
    10. e9d8858ed7
    11. 0e331b0f1e
    12. 7a463bc17a
    13. 9b57037a03
    14. 4e794686a9
  2. Merge master into sculpt-dev 8a58f1f3bb

April 4 to April 8

  1. Land color attributes patch in master eae36be372
  2. Merge master into sculpt-dev.
  3. Worked on D13897, PBVH draw patch.

April 11 to April 15

  1. Fix color attribute bugs:
    1. 0329145712
    2. 7163db99c4
    3. a99639792b
    4. d683ea4862
    5. fbca6aeb7c
    6. 4a70561bbd
    7. 2b191cd2b4
  2. Fix cloth crash in sculpt-dev 185ca2912f
  3. Merge master into sculpt-dev ecbf681e31

April 18 to April 22

  1. Ported old vertex paint mode to C++ 575ade22d4
  2. Fix dyntopo crash with color attributes: 6f190f7f43
  3. Fix data transfer modifier bug b0c428c063
  4. Code cleanup 14f2d37ad1
  5. Fix draw crash 01333cb47f
  6. Fix crash in sculpt-dev d2dee8f482
  7. Fix remesh crash in sculpt-dev afc86042b7
  8. Fix mask slice in sculpt-dev 55740b7bee

== April 25 to April 29

  1. Make sculpt mask filter operator show redo panel 185d9627b3
  2. Change how defaults for mask filter are set so redo panel remembers more of them 296d734344
  3. Fix crash 38eed4ada3
  4. Fix crash 42878ffc26
  5. Fix trim lasso radius bug 2bc0e8d304
  6. Cleanup a8331d8c9d
  7. Fix color space error in vertex paint c20b99b70c
  8. Fix PBVH draw cache invalidation crash bfb4dcaa1a

May 2 to May 6

  1. Implement PBVH texture node splitting:
    1. Initial implementation d2fa1daea6
    2. Debug visualization 1c77f259fd
  2. Fix merge bugs in sculpt-dev 67fdff9d69

May 9 to May 13

  1. PBVH texture node splitting:
    1. Fix bug in pixel row splitting 27fd506501
    2. Multithreading 6e4daa7d3c5f2a77f1c23f5a6333e24118a6519c 6e4daa7d3c
  2. Fix broken vertex color node 0eb2244f0a
  3. Sculpt-dev:
    1. Merge master into sculpt-dev cd316eb6c6
    2. Fix merge errors 7677b2428a
    3. Fix large file sizes caused by brush settings system cfc46e43b2 e5a111c637

May 16 to May 20

  1. Sculpt-dev:
    1. Fix brush stroke bug 4b41114f67 3210924485
    2. Cleanup brush strength api so all sculpt brushes support square shapes 7217d1f355
  2. Dyntopo not initializing face set values correctly b54abd7ede
  3. Unprojected radius mode messes up sculpt texture radius f9751889df
  4. Merge master into temp-pbvh-eevee 2e61e8c901

May 23 to May 27

  1. temp-pbvh-eevee: Fix active uv layer having wrong alias f9fb9a20b941f2ebcb8cbaa78bcb5cb4932c1cfb commit f9f
  2. Merge master into sculpt-def 4c3d11c233

May 30 to June 3

  1. Shading artifacts on paint/mask anchored sculpt brushes f1c29b9bd3
  2. Remove improper OPTYPE_UNDO flags 511a08585d
  3. Temporary fix for attribute convert undo 75162ab8c2
  4. GPU subdiv: Fix edit mode vertex color not being uploaded properly 6cee404914
  5. Sculpt-dev:
    1. Fix tip_roundness versioning bug d7d6ad76d7
    2. Pmap bugs: c12e3ff183 [1]
    3. Merge master into sculpt-dev d54416506a
  6. Fix zeroing of last position on stroke start 8e02b53ae7
  7. temp-pbvh-split: Use task api correctly. 6851971501
  8. temp-sculpt-cavity-mask: Add caching 371708737a

June 6 to June 10

  1. Move sculpt_automasking.c to c++ ca29376e00
  2. Land pbvh EEVEE patch 285a68b7bb
  3. Fix image editor cursor disappearing 371fc68678
  4. Merge branch master into temp-pbvh-eevee 59cdc4e7f6
  5. temp-sculpt-cavity-mask: Add custom curve support 527ad665af
  6. Cleanup: Move sculpt_automasking.c to c++ [2]
  7. temp-sculpt-cavity-mask: Move cavity mask settings into toolsettings d7ea1cca4e f5203933f7
  8. Anchored mode not working for sculpt smear brush c55dac9904
  9. Sculpt-dev: fix bmesh python bug 1cd88104f0

June 13 to June 17

  1. sculpt-dev:
    1. Fix draw cache bug 47a14ef4ad
    2. Merge master into sculpt-dev e108318af8
    3. Fix undo bug c73fc97d45
  2. PBVH active attrs only optimization is buggy 7a24fe372c

June 20 to June 24

  1. Fix crash when adding color attributes in editmode. 30273b86c7
  2. Fix sculpt undo ignoring gravity with paint tools. 4c3b984b3d
  3. Add second blur mode to cavity mask patch. 56e2f93a3c
  4. Merge master into temp-pbvh-split.
  5. Looked at UV seam patch.
  6. Submitted normal automasking patch (
  7. Submitted automasking support for image paint patch (

June 27 to July 1st

  1. Cavity mask patch: Add automask baking tool 1e259426c6
  2. Fix T98886: PBVH_GRIDS ignores face smooth flag on first gpu build 3cefa13770
  3. Cleanup: Renamed SCULPT_TOOL_NEEDS_COLOR to SCULPT_tool_is_paint f7c6d3705d 2185943235
  4. Fix T99196: sculpt_update_object calls paint updates for nonpaint tools c39e932631
  5. Fix backwards normals in PBVH_GRIDS raycasting eaec01cad5
  6. Fix T99231: Wrong anchored mode test for smear brush 2d0877ed7e

July 4 to July 8

  1. Fix T98884: Fix edge case crashes in gpu subdiv cache code 3f5073a8e2
  2. Cleanup: use local variable in smear code instead of ss->cache->bstrength 7be07a9d6e
  3. Fix T98698: Division by zero in smear code when strength is zero a720a4aabb
  4. Fix T94633: Sculpt mode missing check for hidden active object cb39058f2f
  5. Submitted vertex color limit removal patch D15368

July 11 to July 15

  1. Fix T99383: Wrong origdata type in color filter 7357176b57
  2. Cavity mask patch: Remove original blur mode. d1104544b4
  3. Sculpt: Fix scene spacing mode (phase 1) 9a14887905
  4. Fix T99644: Anchored brush mode fails for negative brushes cd1e4ae448
  5. Normal automasking patch:
    1. Support normals automasking for sculpt filters a472ced73b
    2. Give automasking access to original normals 10e9098637
  6. SculptVertRef patch: Cleanup API fbe2dcd2b8
  7. Submitted PBVH draw patch: D15428
  8. Sculpt-dev: Cleanup sculpt temp attribute API before splitting into patch ed8ffec61f

July 18 to July 22

  1. Fix T99687: Cloth filter crash 9f68369247
  2. SculptVertRef patch: Make requested changes 2e028d6d2d b3d7112d32
  3. Submitted sculpt attribute API patch: D15496
  4. Updated Expose Face Sets In Python API patch: D15025

July 25 to July 29

  1. Sculpt: Fix T99779, pbvh gets wrong active vertex for multires 462f99bf38
  2. Normal automasking patch:
    1. Implement new masking modes for factor cache 7731690dba
    2. Add occlusion mode d779802563
  3. Commit PBVHVertRef patch d7cfb6ac71
  4. Sculpt: fix name collision in DynTopo temp attributes 27a16abe81
  5. Normal automasking patch:
    1. Make occlusion suboption of view normal 6bfbdc4bff
    2. Implement new masking modes for factor cache 7731690dba
    3. Add occlusion mode d779802563

August 1 to August 5

  1. Wrote prototype of new pbvh draw system.
  2. Sculpt: Fix T99294: Voxel Remesher text is resized based on object scale b65ab29310
  3. Sculpt: fix broken triangle/vertex count for DynTopo e6b1e97dd7
  4. Rebase sculpt attribute patch with master.
  5. Cavity mask patch update (c692b93fcf):
    1. Merge master.
    2. Invert curve behavior in invert mode
    3. Invert and normal cavity mask are now seperate modes and mutually exclusive.
    4. Automask bake operator now has option to use scene defaults.
    5. The automask boolean properties are now defined in a EnumPropertyItem list to avoid three sets of duplicate code.
    6. Added a "Mask from cavity" menu operator.
  6. Wrote rough code for experimental version of sculpt-dev's brush property refactor based on RNA. ecf5f2b118

August 8th to August 12

  1. Brush Properties refactor
    1. b4cb9b9b9f
    2. f913f0cb42
    3. 1ef3c59beb
    4. 4c3cf3ad17
    5. efaade3b30
    6. 0940b35755
  2. Register sculpt brush op so it clears last operator panel 11bdc321a2
  3. Update cavity mask patch
    1. 4624153af9
    2. Use automask curve for use_automask_settings be26a3402c
    3. Code cleanups 07530726fd
    4. Cleanup UI 4b2c92f8e0
    5. Cleanup bake cavity mask panel UI inside the properties editor 0caf6c598c

August 15th to August 19th

  1. Brush Properties refactor
    1. c5d508c362
    2. 269adfdf23
    3. c8fff5d50b
  2. Sculpt attribute patch:
    1. 67d1689f89
  3. Fix anchored brush performance regression 2d19038c6c
  4. Improve PBVH debug draw 7f3eb055dd
  5. Write documentation in sculpt_undo.c c5feb4e6fe
  6. Fix sculpt undo bug related to undo push name errors 3f9299e45d
  7. Blank redo panel for stroke operator 6b49b54bb1
  8. Created redo panel bugfix patch D15697.
  9. temp-pbvh-vbos: Add support for solid-shaded multires 461c1deb63

August 22th to August 26th

  1. Sick this week.

August 29th to September 2nd

  1. Core: Remove color attribute limit from CustomData API a6ba8e5f38
  2. Fix T100479: Memory corruption in sculpt_boundary_edit_data_init d7b33cd8c8
  3. Cleanup: fix warnings from vcol limit commit cdc0be48c9
  4. temp-pbvh-vbo: merge master f987d9b758

September 5th to September 9th

  1. Sick this week.

September 12th to September 16th

  1. Worked on sculpt attribute patch [3]
  2. Fix T100941: Draw cache invalidation loop 100fe61f7c
  3. Fix T100608: SCULPT_UNDO_FACE_SETS broken for redo 2c1650ae8f
  4. Fix T101008: Missing CD_MDISPS layer: 3d3c34f345
  5. Finish initial implementation of PBVH draw cleanup patch: 6482e092d0 b2bdbeced6 88e6cb1ec0 07e8bc3063 1acc730ba1 97d3a57edf 97d3a57edf
  6. Landed sculpt attribute patch.
  7. Merge master into sculpt-dev 84342ed7b2

September 19th to September 23rd

  1. Sculpt: Fix bug with allocating duplicate attribute layers 2ff5d42cd3
  2. Cavity mask patch: b11f312629 Fix T101430: Dyntopo undo crash6dded6229db62c43cdb7e28f01cd 200e3c8d55 c5ab67e814 f5acd46761 432fa09d6f b11f312629 b11f312629
  3. Sculpt: Fix T100479: Boundary expand crash 32b766223a1b2a562e657a729e7d9f2926d42417
  4. Sculpt: fix memory corruption in new attribute api c2a21dfb77
  5. Normals automasking patch: Use a stroke id attribute for occlusion 3f80385118
  6. Merge master into sculpt-dev.

September 26th to September 30th

  1. Fix T101467: Improper vertex count in pbvh draw 206dead860
  2. Fix sculpt face set undo creating duplicate face set layers 81f15a51aa
  3. Fix crash in relax face sets brush 991a35b844
  4. Fix T101430: Dyntopo undo crash 6b9f45c1d1
  5. Upload to gpu white for color attributes in multires in sculpt 5b0485fd77
  6. Fix T101503: Memory corruption in multires faceset drawing 1eba76d8ed
  7. Fix T101430: Curve shown improperly in mask from cavity redo 4cbafba04b
  8. Fix stroke-only attributes not being freed at stroke end 688c4f7e51
  9. Fix T101465, crash in cloth filter with new automasking modes b063cfa9cf
  10. Fix T101464: Crash in mask from cavity 6a9b45995d
  11. Fix T101463: Don't initialize automask to zero in factor mode if topology or boundary modes are inactive f998fa2732
  12. Reset automask cache on non-color non-mask undo steps 1494a22a90
  13. Fix draw face sets not updating on first stroke 6d3da28676
  14. Fix missing nullptr check in pbvh draw 039429faeb
  15. Commit normals automasking patch bbc69563d0
  16. Commit cavity mask patch: 0156a677c7
  17. Commit pbvh draw rewrite patch: 65900d88a8
  18. Merge master into sculpt-dev: 9ae40de20b 9c619fd381
  19. temp-sculpt-cavity-mask: Make requested patch changes 2c1bc8e451

October 3rd to October 7th

  1. Bugfixes for sculpt-dev: a5f53346a6 6c2d0354e7 c3c67cf0c2 5e2b234855 42948e2389 059fb4098f e5fcaa293a
  2. Merge master into sculpt-dev 2aa347b64e
  3. Sculpt: Fix crash in dyntopo draw 38af785dba
  4. Viewport: Enable code when WITH_DRAW_DEBUG is on af288a09a5
  5. Sculpt: Raise pbvh->leaf_limit to 400 for dyntopo 53d937a170
  6. Sculpt: Fix T101502: GPU tris miscounted for dyntopo dfa0eb298e
  7. Sculpt: Fix bug in sculpt attribute api f58b524669
  8. Sculpt: Fix crash in face set init 9d40b1cc3e
  9. Sculpt: Fix crash in dyntopo draw 38af785dba
  10. Sculpt: Visibility bugfixes 22c3db72ca
  11. Sculpt: implement Reveal All for PBVH_BMESH 2cf21604c9
  12. Sculpt: Fix T101430: Blank stroke undo steps corrupt dyntopo ed7f5713f8
  13. Sculpt: Add debug code to print sculpt undo stack. 416d1d0393

October 10th to October 14th

  1. temp-pbvh-split: Fix various crashes and memory corruption 78b008d20d
  2. Sculpt: Fix face set relax being too strong b7ea79fde7
  3. Sculpt: Fix draw artifacts when drawing multires mask c207571d44
  4. Sculpt: Ensure faces are uniquely assigned to PBVHNodes 010c10febe
  5. Sculpt: do not validate PBVH draw data in mesh_batch_cache_valid bc06fcca47
  6. Sculpt: fix crash when instancing sculpt objects 7a005e089d
  7. Sculpt: Fix mask from cavity not redrawing viewport with modifiers 48fd4a01ef
  8. Sculpt: Fix T101595: sculpt_attribute_update_refs called in wrong place 7119582b66
  9. Sculpt: Fix T101718: Automasking crash with new texture paint 188786f0b0
  10. Sculpt: Clean up Dyntopo's original triangle api 7f133b7a38
  11. Sculpt: Fix T101674: Passing null to GPU_batch_elembuf_set dc1418e5d9
  12. Sculpt: T101699: Face set change visibility crashes on no face sets da25006bc4
  13. Sculpt: Fix T101729: Automasking crash in elastic deform brush 473df37134
  14. Merge master into sculpt-dev. 92bc610c36
  15. Fix various sculpt-dev merge bugs 87863770bb 57d5fc7352 7f133b7a38 dc1418e5d9 [4]
  16. Created PBVH face iterator patch.

October 17th to October 21st

  1. Sculpt: Fix T101864: Mask initialization not updating multires data 25e84334f7
  2. sculpt-dev: Fix stroke id error in smooth code 5b8b99cf8a
  3. sculpt-dev: Roll mapping fixes 46839d1f43
  4. sculpt-dev: Implement arc-length derivatives for BLI_arc_spline.hh 9b7561f16a
  5. sculpt-dev: More roll mapping fixes 82a3696234
  6. sculpt-dev: Write arc-length (evenly spaced) spline lib 8786b5c0c0

October 24th to October 28th

  1. Attended Blender conference.
  2. Sculpt: fix T102067: Set material properly in new pbvh draw bc7de854c9

October 31st to November 4th

  1. Fix T102253: Missing call to SCULPT_automasking_node_update db3bf36770
  2. Texture roll mapping patch 9980fd0b8e D16414

November 7th to November 11th

  1. Update face iterator patch 848ca9db46 afc13a273e f96961a76b.
  2. Sculpt: Fix T102209: Multiresolution levels greater than 6 crashes b2000412f2
  3. Sculpt: Change symmetrize merge threshold and expose in workspace panel 969aa7bbfc
  4. Sculpt: Fix T102379: Crash in dyntopo 2688d7200a
  5. temp-pbvh-face-iterators: Move initialization of static memory abefe06309
  6. Merge master into temp-pbvh-face-iterators 0d66d22c03
  7. Merge master into temp-sculpt-brush-channel e59ebfef3c583985553e78492cf8cd07bbe7648e commit e59

November 14th to November 18th

  1. Sculpt: Fix T102349: improperly aliased enum 03b7982301
  2. Land sculpt face iterator API patch 6b3cee2538
  3. Sculpt: Fix T102567 (again) 5097105b3c
  4. Sculpt: fix T102584 567ae90374
  5. Sculpt: Fix mask from cavity settings issues 2d251478bb
  6. temp-sculpt-roll-mapping: Implement symmetry/tile/radial modes 733a764b07
  7. temp-sculpt-roll-mapping: New strategy for spline tex mapping 33a1472d4e
  8. temp-sculpt-roll-mapping: mirror symmetry fixes 9a8c4aefb3
  9. temp-sculpt-roll-mapping: Fix stroke points projection outside of the meshaf4048f2b8
  10. Merge master into sculpt-dev 11643ab8f7

November 21st to November 25th

  1. Sculpt: fix T102436: missing null pointer check in automasking code 959f3cd645
  2. Land D16224 Standardize face set undo steps, optimize memory usage df788ecfd9
 f5e99abb60   af8a449ca5
  1. Sculpt: Fix box face sets not working for multires acf8f6220d
  2. Sculpt: Fix broken multires hidden undo a2a72d89b1

November 28th to December 2nd

  1. Merge master into sculpt-dev e53a8f9c51
  2. Sculpt: Fix broken pivots when entering paint modes 65393add52
  3. Sculpt: Fix T102824: broken face primitive partitioning in pbvh nodes 4aac5b92c1
  4. Sculpt: fix crash when no brush 918282d391
  5. Sculpt: Fix T102337: Null pointer error circle (tube) brush test code 0ed4865fd0
  6. Sculpt: fix T102348: Don't fold area normal automasking into cache 0ad8f3ff58
  7. Sculpt: fix T102664: Broken multires solid shading 1fc5dc3bf3

December 5th to December 9th

  1. Worked on cleaning up sculpt-dev's DynTopo in preparation of porting to master. bb764e418a
  2. Fix T102336: dynamic topology crash 31ccf79011
  3. Sculpt: Fix crash when sculpting after disabling dyntopo 8e46ef2fa5

December 12th to December 16th

  1. Updated stroke texture mapping patch.
  2. Fix T103261: Undo after mask extract doesn't restore active object 8666791b2e
  3. Cleanup: make paint_init_pivot an api method. 17e266cd55
  4. Fix T103198: Missing bounds check for material_index attr in texpaint 0beb358a69
  5. Fix more attribute bugs when switching PBVH modes 939b63bcd6
  6. Fix T102991: Multires fast navigate not implemented 6f9cfb037a
  7. Fix crash in dyntopo 0a5e8a6342
  8. Fix crash with unsupported attr types in pbvh draw 246df68095
  9. Worked on dyntopo a bit.

December 16th to December 20th

  1. Sculpt: Fix T103341: Move sculpt overlay flags to View3DOverlay.flag f803a0a95b
  2. Sculpt: Fix T103261: Undo after mask extract doesn't restore active object 8666791b2e
  3. Cleanup: make paint_init_pivot an api method. 17e266cd55
  4. Fix T103198: Missing bounds check for material_index attr in texpaint 0beb358a69

December 23rd to December 27th

  1. Sculpt: fix bugs in inverted expand mode a9cb66b856
  2. Sculpt: fix T103156: Scale square brush uvs by sqrt2. 204de8c6db
  3. temp-sculpt-roll-mapping: Visualization improvements a238533550
  4. Merge branch 'master' into temp-pbvh-split 98bdd08507