Changelog
All notable changes to Proto Color, newest first.
v1.2.2
2026-07-28 — Painting stays out of the way
- The sidebar is live mid-stroke. The 3D View's main region extends underneath the sidebar and header, so a bounds test could report "in the viewport" while the cursor was over a swatch and the brush would swallow the click. Hit-testing now works from absolute window coordinates and rejects the overlay regions, so swatches and every other control stay clickable while you paint.
- Releasing the mouse outside the viewport no longer leaves the brush down when the cursor comes back.
- A collapsed sidebar no longer blocks painting along the right edge of the viewport.
- [ and ] only cycle color while the pointer is over the viewport, so they can still be typed into palette name fields.
v1.2.1
2026-07-28 — Brush fixes
- Clicking a swatch mid-stroke now changes the brush. Picking a color used to push an undo step, which tears down a running modal operator — so the click silently killed the stroke and left the panel stuck on Painting — Esc to stop. Choosing a swatch is UI state, not a data edit, and no longer touches the undo stack.
- Eyedropper cursor while Ctrl is held, switching the moment the key goes down rather than waiting for the mouse to move.
- [ and ] cycle the brush through the palette while painting, so changing color doesn't need a trip to the sidebar.
- A stroke ended by Blender itself — a file load, an area closing, an undo from elsewhere — now clears the paint state properly instead of leaving the panel stuck.
- Color changes refresh every open 3D View, so the sidebar and viewport can't disagree about the current brush.
v1.2.0
2026-07-28 — Paint mode
- Fill and Paint interaction modes. The palette, presets, and every swatch are shared between them — only the way color lands on the mesh changes. Fill is the existing behavior: pick a swatch and it goes on the whole selection at once. Paint turns swatches into a brush you drag across faces, coloring them one at a time.
- Ctrl+click picks up the color already on a face, so you can sample from the model instead of hunting for the swatch.
- The viewport stays navigable while painting. Orbit, zoom, and switch swatches without dropping the brush.
- Quick Assign follows the mode — Ctrl+Q loads the brush in Paint mode instead of assigning to the selection.
- Paint mode runs in Object Mode; Fill still covers face selections in Edit Mode, which remains the better tool for large regions.
v1.1.0
2026-07-28 — Non-destructive pipeline
- Vertex Colors output mode — bakes material colors into a
ProtoColorbyte-color attribute on the corner domain, the layout UE5, Unity, and glTFCOLOR_0expect. No texture, no UVs touched. - The atlas no longer overwrites your UVs. Swatch UVs go on a dedicated
SwatchUVlayer thatSwatchMaterialreads through an explicit UV Map node; the old unwrap that destroyed existing UVs is gone. - Protect UV Channel 0 — when a mesh has no UVs at all, a plain
UVMapis created first, so swatch UVs never land on the channel engines build tangents and lightmaps from. - Mip-safe swatch UVs, plus a new UV Inset control over how much of each cell the sampled area covers. Cells under 8px now raise a warning, and the default swatch size is 16×16 px.
- Optional ORM atlas (R=ambient occlusion, G=roughness, B=metallic) and emissive atlas. With either enabled, materials sharing a base color but differing in roughness, metallic, or emission get their own cells.
- Restore Original Materials survives topology edits — the snapshot is a mesh face attribute rather than a list keyed by face index, so subdivision and loop cuts no longer break it. Both 1.0 cache formats are still read.
- Global palette library — saved palettes are files in the Blender config directory, so a palette saved in one .blend is available in every other one, with new Refresh and Open Palette Folder buttons.
- Palette import for Lospec
.hex, GIMP.gpl, Adobe.aseand.aco, Paint.NET.txt, and PNG swatch images of any layout. - Palette export to
.hexand.gplalongside.jsonand.png— tick any combination and all are written together. - Clean Up matches a
proto_color_swatchproperty, not a name prefix, and materials are identified by a stableproto_color_uid, so swatch links survive renames and.001suffixes. - Nested collections are included, meshes shared by linked duplicates are processed once, and texture sizes now go up to 2048px.
- Fixed: Clean Up Only Unused deleted nothing, the Swatch Usage readout reported a wrong capacity in auto-fit mode, and atlas generation failed to report clearly when colors could not fit.
v1.0.0
Initial release
- PROTO:COLOR and PROTO:PALETTE merged into a single add-on with a tabbed UI under 3D View ▸ Sidebar ▸ ProtoTools.
- Palette generation from any image: colors counted, most common kept, optionally merged by perceptual distance, then sorted around the hue wheel.
- Quick Assign swatch picker at the cursor, Ctrl+Q by default and rebindable.
- Texture atlas baking of every flat material color into one square power-of-two texture.
- Both tools' preferences combined into one page, and the active tab stored per-scene with the .blend.
- Per-Blender-version packaging: each zip bundles only the Pillow wheels that Blender can load and pins its version range.