Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
## [Unreleased] — 0.3.6-dev

### Aggressive PRUNE_ALPHA (JPEG / opaque-constant Alpha unlink)
- Aggressive stills Make it Fast now plans, applies, and journals already-coded
`DEAD_CLOSURE_PRUNE` for **PRUNE_ALPHA only** (JPEG / no-alpha / IGNORE /
Value=1.0 Alpha unlink). No new Cycles RNA. `time_factor` stays 1.0.
- Preserve Look default, Balanced, and Video withhold it. Other PRUNE_*
(VOLUME / MIX / SSS / EMISSION / TRANSMISSION / BUMP / BEVEL / DISPLACE)
stay Manual-later at tier 2.
- Apply registers `_HANDLERS["DEAD_CLOSURE_PRUNE"]`; revert is existing
`NODE_UNLINK`. 0.3.5 `visual_guard` isolates the kind in its own group and
fail-closes (mean/p95 stills 0.003 / 0.012).
- Prior inventory, not a measured cut: loft DNA FIRED=7 JPEG, Classroom
FIRED=0. Manifest stays 0.3.5. Store plates stay Classroom 41% / loft 52%.

### Aggressive CAMERA_CULL + distance cull (independent object sets)
- Aggressive `CAMERA_CULL` enables scene `use_camera_cull` and
`use_distance_cull` when the distance RNA exists, but uses **two disjoint
object sets** (kind name stays `CAMERA_CULL`). Cycles `object_cull.cpp`
ANDs when both object flags are on the same name; dual flags on the
CAMERA_CULL scatter list would keep nearby off-frustum chairs and regress
the Classroom cull slice of the 41% plate.
- `payload["objects"]`: camera-cull only (`use_camera_cull=True`).
`payload["distance_objects"]`: distance-cull only (`use_distance_cull=True`)
for tiny/scatter with `min_camera_distance` ≥ the margin that will be
written. Never both flags on the same object.
- Sets `distance_cull_margin` only when missing/None/0 to
`max(50.0, camera clip_end)` (else 50.0); never lowers a positive user
margin. Missing distance RNA still applies camera cull alone and ignores
`distance_objects`. Scene distance cull is enabled whenever RNA exists.
- Protects lights/volumes/cameras/heroes/emitters/shadow-catchers; linked
scatter remains eligible. No measured %; store plates stay Classroom 41% /
loft 52%.

## [0.3.5] — 2026-08-30

### Automatic visual rollback and Preserve Look benchmark lane
Expand Down
47 changes: 47 additions & 0 deletions docs/research/NEXT-LEVER.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,50 @@
# Next lever (2026-08-30 2pm ET PlugWalk)

## 2pm — Aggressive CAMERA_CULL + distance cull (independent object sets)

Build-order #1 locally: enable Cycles **distance cull** alongside camera cull
under the existing Aggressive `CAMERA_CULL` kind (no new kind name).

**Cycles semantics (`intern/cycles/blender/object_cull.cpp`):** scene flags are
independent, but **both object flags on the same name → AND** (keep nearby
off-frustum objects for reflections). Camera-only and distance-only object
flags give independent cull. OR-on-same-object is wrong and would regress the
Classroom cull slice of the 41% plate.

```
return (camera_culled && distance_culled) // both object flags → AND
|| (camera_culled && !use_distance_cull_) // camera-only object
|| (distance_culled && !use_camera_cull_); // distance-only object
```

**Writes (journaled, speed tag):**
- Scene: `render.use_simplify`, `cycles.use_camera_cull`, and
`cycles.use_distance_cull` whenever distance RNA exists;
`cycles.distance_cull_margin` only when missing/None/0 →
`max(50.0, camera.data.clip_end)` when camera+clip_end finite, else `50.0`.
Never lower a positive user margin. Existing camera margin + simplify high
caps unchanged.
- `payload["objects"]` (camera-only set): `object.cycles.use_camera_cull=True`
only. Never `use_distance_cull` on these names.
- `payload["distance_objects"]` (distance-only set): tiny/scatter with
`min_camera_distance` ≥ the margin that will be written; same protections;
**disjoint** from the camera set; `object.cycles.use_distance_cull=True`
only.
- If distance RNA is missing, camera cull alone still succeeds and
`distance_objects` is ignored.

**Protections unchanged:** lights / volumes / cameras / heroes / emitters /
shadow-catchers stay out; linked scatter is allowed. Preserve Look and
Balanced still withhold `CAMERA_CULL`.

Authoritative report: `docs/research/PLUGWALK-2026-08-30-14.md` §1.

No store claim change (Classroom **41%** / loft **52%**). No zip. No
`blender_manifest.toml` bump (stays **0.3.5**). Branch
`plugwalk/distance-cull-aggressive`.

---

# Next lever (2026-08-26 7pm ET PlugWalk)

## 7pm — clean demo bill (docs only; no 5th leftover lever)
Expand Down
Loading