Texture Layer Manager - Substance-Style Material Stack & Orm Baker

eihort in Materials and Shading


TEXTURE LAYER MANAGER - CHANGELOG

==================================


1.0.3 (October 2026) - main-line feature port

- The Pixelate control returns to the Image Mapping section (paint and

  fill layers): a toggle plus the Cells count (default 32). It

  quantises the layer image into a grid of flat-colour cells for

  LED-matrix, pixel-art and mosaic looks. The node chain and the preset

  fields were already in the builds; the control had been dropped in an

  earlier cleanup, leaving the feature unreachable from the UI.

- Masks stored as off stay off across preset and .tlm loads. Files

  carrying a dormant non-IMAGE mask source (Pointiness is the default

  for slot B) used to come back with that mask silently enabled; the

  panel still auto-enables a mask when its source is picked by hand.

- The Holo Card preset now packs the main-line showcase card artwork

  (1024px demo image) and stores its secondary mask off, matching the

  main-line hero preset. The 5-pattern foil menu is unchanged.

- README install steps still referenced the 1.0.0 package; they now

  point at this build.


1.0.2 (October 2026) - bug-fix batch 2

- Add Layer / Add Group reported the wrong layer name whenever the new

  layer had to be moved into place (e.g. "Added adjustment layer

  'Fill'"): the operators now read the name before the collection

  reshuffle.

- Per-layer keyframes now follow their layer when the stack changes.

  Adding, removing, moving or duplicating layers (and adding a group)

  rewrites the keyframe paths to the layer's new position; previously

  the animation silently re-targeted whichever layer landed in the old

  index. Duplicated layers do not inherit the source's animation.

- Bake Smart Mask (AO) honours the Distance and Samples fields of the

  dialog now. The bake used to evaluate the scene AO pass and ignore

  both, producing a distance-independent mask; AO masks now match the

  live AO source and change with Distance.

- Emission no longer applies the layer opacity twice: the material

  emission strength was multiplied by opacity although the emission

  colour already carries it, so a 50%-opacity emission rendered at 25%

  brightness. Emissive materials under reduced opacity now render

  brighter (visible change; up to 2x at 50% opacity).

- Preset Delete / Apply / Rename sanitise the preset name before

  touching the filesystem: names containing ".." could previously read,

  rename or delete .tlm files outside the preset folder. Rename also

  reads and writes with explicit UTF-8 encoding.

- Baked smart-mask images, PBR channel images and Channel Pack outputs

  always carry a fake user now, so they survive a .blend save/reload

  even with auto-composite disabled (the Channel Pack result used to be

  dropped on reload).

- Bake PBR no longer writes intermediate "{prefix}__tmp_*" files next

  to the exported maps: temporary channels are baked in memory for the

  pack helpers, and the "Baked N maps" report counts only the files

  actually written.

- Add/Remove Channel Image now refuse Editable-mode materials, like

  every other stack operator (they used to mutate the layer stack while

  the hand-edited node tree was protected from rebuilds).


1.0.1 (October 2026) - bug-fix batch

- Duplicate Layer now produces a truly independent copy: owned images

  (base, mask A/B, per-channel) and extra ColorRamp stops are copied

  with their pixels, so editing the duplicate never bleeds into the

  source (previously both layers shared the same image datablocks).

- Bake Smart Mask now evaluates the generator signal through a

  dedicated active output instead of the material albedo (masks used

  to bake the composite colour and looked flat/wrong). Facing, Height

  and Curvature got their documented semantics: view factor,

  bbox-normalized height, bipolar pointiness with Ridge/Valley.

- Add Layer Mask: the fresh white mask is no longer wiped to black by

  the rebuild that follows in the default auto-composite flow.

- Color Balance midtone Gamma is now applied per RGB channel; before,

  the three sliders were averaged into a single exponent (one

  luminance shift instead of per-channel grading).

- Masks, opacity and fresnel now gate the per-layer displacement

  height: a fully masked or semi-transparent displacement layer

  pushes less (or no) geometry instead of the raw pattern being

  summed. Masked displacement layers render lower than before.

- base_color bottom-layer baseline is white everywhere now - at the

  root, inside groups and for Reference layers. Masked bottoms in

  groups used to blend against mid-gray and masked Reference bottoms

  against black, so those cases render differently (and match the

  root behaviour) after this fix. Emission bottoms stay black.

- Triplanar projection now also applies to bump, displacement, height

  blend and reference scalars; the Fac path used to ignore the

  toggle, so those channels showed a single-projection pattern while

  the visible colour was triplanar.

- Presets and .tlm exports share one file format and one serializer.

  Saved presets store the material name plus the full material_props

  block (IOR, volume, emission output, displacement...), locked

  layers round-trip, and an exported .tlm can be applied directly as

  a preset with its material settings intact. Import resets

  material-level settings before applying, so stale flags no longer

  leak from the previous material.

- depsgraph Sun handler resolves the Sun once and caches the datablock

  reference instead of scanning the whole scene on every update

  (~590 us -> ~3 us per call on a 3000-object scene) and skips the

  work entirely when no light-based mask nodes exist. Also fixes the

  Vector Math node id used by the NDOTL mask.

- Housekeeping: removed unconditional debug prints and the unused

  light-tint layer properties; fixed mis-encoded source comments.


Note: Blender 5.1 has a pre-existing crash instability in node-tree

updates (access violation in get_tree_zones) that can abort a session

on node-tree-mutating operators. It reproduces with and without this

addon, was present in 1.0.0, and is unrelated to the fixes above.

$10

Have questions about this product?
Login to message

Details
Blender Extension Compatible Yes
Published 4 months ago
Blender Version 5.0 - 5.1
Extension Type Add-on
Render Engine Used Cycles, Eevee
License GPL