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
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
## [Unreleased] — 0.3.6-dev

### 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%.
Comment on lines +19 to +20

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Spell benchmark percentages as measured pairs

This new release note prints the 41%/52% benchmark shorthand without the baseline-to-fast timings and measurement context, and the same shorthand is added in the research docs. The repository guidance permits benchmark numbers only as measured pairs, so rendered or copied notes no longer carry the required proof context; either omit these percentages here or spell out the full measured pairs.

AGENTS.md reference: AGENTS.md:L52-L58

Useful? React with 👍 / 👎.


## [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