# Changelog — BaseMaterials

## 1.6.6 (2026-08-06)

- **„Save Baked Texture" speichert jetzt ALLE gebackenen Maps**, nicht mehr
  nur die zuletzt gebackene: Die neue Sammlung `gebackene_bilder()` findet
  AO-, Bevel-Normal- und Curvature-Textur über die Einbindungen im
  Materialkreis (inkl. 1.6.0-Alt-Bakes) — „Save Here" schreibt sie alle
  neben die Blend-Datei, „Save As…" alle in den gewählten Ordner (bei
  mehreren bestimmt der Dialog nur den Ordner, jede Map behält ihren
  Namen; bei genau einer gilt der gewählte Name wie bisher). Das Panel
  zeigt statt „Last: …" jetzt „Baked: …" mit allen Maps. Die Namen bleiben
  objektbezogen (`<Objekt>_AO` / `_Bevel` / `_Curvature`) — laut Stephan
  ausreichend spezifisch.

## 1.6.5 (2026-08-06)

- **Panel-Blockade behoben („Buttons ausgegraut"):** Die Erkennung
  „schon gebackenes Ergebnis vorhanden?" fiel bei leerer Auswahl auf **alle
  Materialien der Datei** zurück — ein einziges vergessenes Testmaterial
  irgendwo blendete dann datei-weit die Bake-Buttons aus, und die
  Remove-Knöpfe waren mangels Auswahl ausgegraut: Sackgasse. Neu zentral in
  `_materialien()`: Reichweite ist die **Auswahl, sonst das aktive Objekt,
  sonst nichts** — nie mehr die ganze Datei. Gilt für Erkennung, Slider-Sync
  und Remove gleichermaßen (konsistenter Materialkreis).
- **Bevel-Parameter wandern statt stehenzubleiben:** Radius/Samples/HDRI
  verschwinden jetzt sofort nach dem Bevel-Bake aus dem Bevel-Kasten
  (dort wirkungslos). Solange die Curvature noch nicht gebacken ist, zeigt
  **ihr** Kasten die drei an — der Curvature-Bake nutzt sie mit. Damit ist
  jeder Regler genau dort sichtbar, wo er noch etwas bewirken kann.

## 1.6.4 (2026-08-06)

- **Panel aufgeräumt — wirkungslose Regler verschwinden mit dem Bake-Button:**
  Der **Contrast**-Slider im Curvature-Kasten wirkt nur auf Preview/Bake,
  nicht nachträglich aufs Ergebnis — nach gebackener Curvature ist er
  ausgeblendet (gleiches Prädikat wie der Bake-Button), nach „Remove baked
  Curvature" wieder da. **Bevel Radius/Samples/HDRI** ebenso — sie
  verschwinden aber erst, wenn **Bevel und Curvature beide** angewendet
  sind, weil der Curvature-Bake Radius und Samples mitbenutzt. Die
  Live-Slider (AO Strength/Spread, Curvature Strength) bleiben stehen; der
  globale Settings-Kasten (Texture Size/Samples/Format) bleibt unberührt,
  er bedient alle Zweige.

## 1.6.3 (2026-08-06)

- **Doppel-Bakes verhindert:** Ist das Ergebnis eines Bakes bereits im
  Material angewendet, verschwindet der zugehörige Bake-Button im Panel —
  kein Stapeln mehr von Multiply auf Multiply (AO), Normal Map auf Normal
  Map (Bevel) oder Lighten auf Lighten (Curvature). Zusätzlich blocken die
  Bake-Operatoren selbst (auch die Preview-Starts) mit klarer Fehlermeldung.
  - Erkennung AO: Marker `cgm_ao_mix`/`cgm_ao_curve` plus die bekannte
    1.6.0-Alt-Erkennung (dann erscheint weiterhin „Enable AO Sliders").
  - Erkennung Curvature: Marker `cgm_curvature_mix`.
  - Erkennung Bevel: neuer Marker `cgm_bevel_normalmap` am Normal-Map-Node;
    Bakes aus älteren Versionen werden am Aufbau erkannt (Normal Map an
    Image-Texture mit Label „Bevel Normal" bzw. Bildname `*_Bevel*`).
- **Bewusster Weg zum Neu-Baken** (z. B. nach Geometrie-Änderung): neuer
  Operator „Remove Baked Result" (`object.bake_result_remove`, Panel-Knöpfe
  „Remove baked AO/Bevel/Curvature"). Entfernt die Einbindungs-Nodes sauber —
  bei AO/Curvature wird die ursprüngliche Base-Color-Quelle wieder direkt
  angeschlossen (ein vom Add-on angelegter RGB-Ersatzknoten wird in den
  Farbwert zurückgeschrieben), bei Bevel werden Normal-Map- und Textur-Node
  entfernt. Das gebackene Bild bleibt erhalten; danach ist der Bake-Button
  wieder da.

## 1.6.2 (2026-08-06)

- **AO Spread arbeitet jetzt mit einer Kurve statt des Map Range** (Stephans
  Wunsch nach eigenem Test mit einem RGB-Curves-Node): Zwischen AO-Textur und
  Multiply-Mix sitzt ein RGB-Curves-Node (Marker `cgm_ao_curve`, Label
  „AO spread"). Combined-Kanal mit vier Punkten: (0,0) — Stützpunkt (0.1, 0.1)
  hält die tiefen Schatten stabil — Arbeitspunkt bei x = 0.65 — (1,1). Der
  Spread-Slider hebt nur den Arbeitspunkt senkrecht an:
  **y = 0.65 + 0.30 × Spread**. Spread 0 = alle Punkte kollinear = exakte
  Identität (rohe AO-Map), Spread 1 = Arbeitspunkt auf 0.95, mittlere und
  helle Bereiche werden stark aufgehellt. Die Auto-Handles des Nodes bleiben
  unangetastet (weicher Verlauf gewollt). Slider-Maximum jetzt 1.0
  (vorher 0.95).
- **Automatische Migration:** Materialien mit dem 1.6.1-Map-Range
  (`cgm_ao_range`) werden beim ersten Griff an den Spread-Slider oder über
  „Enable AO Sliders" an Ort und Stelle auf die Kurve umgebaut (gleiche
  Verkabelung Textur → Kurve → Multiply-B); der Spread startet dabei neutral
  bei 0. Auch 1.6.0-Bakes (ganz ohne Marker) rüstet „Enable AO Sliders"
  weiterhin nach — jetzt mit der Kurve.
- AO Strength unverändert.

## 1.6.1 (2026-08-06)

- **Neu: AO-Regler im N-Panel** (Kasten „AO Bake", erscheinen nach einem AO-Bake):
  - **AO Strength** — Stärke der gebackenen AO in der Base Color (Factor des
    Multiply-Mix, 0–1). Default 1.0 = bisheriges Verhalten.
  - **AO Spread** — verdrängt die helleren Bereiche der AO-Map über einen
    Map-Range-Node (senkt den Weißpunkt „From Max" auf 1 − Spread, Clamp an);
    die Verschattung konzentriert sich in Ecken und Kanten, offene Flächen
    bleiben sauber. Default 0.0 = rohe AO-Map (Identität).
  - Beide wirken live auf alle AO-Nodes der ausgewählten Objekte (ohne Auswahl:
    alle Materialien), ohne Neu-Bake.
- Der AO-Bake baut dafür zusätzlich einen Map-Range-Node zwischen AO-Textur und
  Multiply-Mix ein und markiert beide Nodes (Custom-Keys `cgm_ao_mix`,
  `cgm_ao_range`). In Neutralstellung (Strength 1.0, Spread 0.0) ist das
  Ergebnis pixelidentisch mit 1.6.0.
- **Nachrüsten alter Bakes:** Materialien mit AO-Einbindung aus 1.6.0 zeigen
  statt der Slider den Knopf „Enable AO Sliders" — ein Klick markiert den
  vorhandenen Multiply-Mix und fügt den Map Range neutral ein; das Aussehen
  ändert sich dabei nicht.

## 1.6.0

- Bake AO & Bevel, Vorschau-Dropdown, Object Tracking, CSV-Migration u. a.
  (Integration des Standalone-Add-ons, Stand vor diesem Changelog.)
