Skip to content

renderer: build_room_kit r7 — full impassable coverage + flat-light score capture (#83)#1686

Merged
100yenadmin merged 1 commit into
mainfrom
kit-room-r7
Jul 22, 2026
Merged

renderer: build_room_kit r7 — full impassable coverage + flat-light score capture (#83)#1686
100yenadmin merged 1 commit into
mainfrom
kit-room-r7

Conversation

@100yenadmin

Copy link
Copy Markdown
Member

What

r7 of the Synty kit-room builder (extensions/renderers/unity/scripts/build_room_kit.cs), driven by the per-cell attribution of the r6 render, which scored 58.85% on qa/registration_score.py vs the 99% ship bar (60 invisible-wall cells + 19 walk-through cells). Evidence: kit_crypt_r6_registration.json / kit_crypt_r6_heatmap.png.

Six placement/lighting fixes, all in the Build/Capture paths, deterministic and material-defensive:

  1. Impassable coverage (core): after walls/doors/props, parse the geometry impassable array (fallback walls) and, for every impassable cell NOT covered by a wall_run cell / prop footprint / door cell, place a deterministic stone mass — a buttress (~1.7×2.2×1.7) if orthogonally adjacent to a wall_run cell, else a low plinth (~1.6×0.9×1.6). For the crypt this covers exactly the 5 interior buttress cells (2,1),(3,1),(9,1),(11,1),(12,1) that lived in walls/impassable only. Logs per-cell + a +N buttress +M plinth summary; idempotent under rebuild.
  2. Wall base coverage: WALL_T raised to 1.4u and perimeter walls centered on their cell (were a thin outer-edge skin that left the cell floor bare → read painted-open).
  3. Camera-side parapet: the near (front/left) perimeter walls that were fully cut away now render a low 0.55u parapet — edge cells read blocked while the interior stays unoccluded.
  4. Pillar footprint-driven size: pillar world x/z now derived from the authored footprint span (× 0.85, floored 1.2) via the preserved measured-multiplier scaling, so a 1×2 footprint reads covered on both cells (r5's fixed 1.2×1.2 covered ~one).
  5. Doorways open: any closed door leaf in a door cell is disabled so the doorway reads walkable (r6 walk-through at (15,5)).
  6. Flat-light scoring capture: CaptureRoom emits a third file kit_<room>_<ts>_score.png (1344×768 contract camera) with all room lights disabled + ambientMode=Flat / ambientLight=(0.6,0.6,0.6), restored in a finally. Rationale: registration measures object placement, not luminance — the r6 19 walk-through false positives were brazier light pools.

Deviation note (item 4 formula)

The packet phrases the pillar target as spanX*2*0.85 / spanZ*2*0.85. The code's Footprint.spanX/spanZ are the full world spans of the footprint (e.g. a 1×2 pillar footprint = 2×4 world units), so the packet's formula is implemented as span*0.85 (= the packet target expressed from the half-span). Using the literal span*2*0.85 would make the pillar ~2× the footprint and spill into adjacent walkable cells, manufacturing the exact walk-through false positives this round removes. Flag for the orchestrator's render loop to confirm.

Verification

C# is uncompilable on the authoring Mac; authored to mirror the proven sibling idioms (WorldBounds / FixMaterials / Place / FallbackBox / PlacePillar / SetupContractCamera / RenderToPng). No new files; no .cs test framework here. Brace/paren balance checked; no stale symbol refs. Box render + re-score is the orchestrator's loop.

Spec: /Volumes/LEXAR/Codex/session-notes/2026-07-22/g4-build/dispatch/kit-room-r7-spec.md

…core capture (#83)

Six placement/lighting fixes driven by qa/registration_score.py per-cell
attribution of kit_crypt_r6 (58.85% vs the 99% bar; 60 invisible-wall +
19 walk-through cells):

1. IMPASSABLE COVERAGE: every geometry impassable cell left visually open
   (interior buttress cells (2,1),(3,1),(9,1),(11,1),(12,1)) now gets a
   deterministic stone mass — buttress if adjacent to a wall_run, else plinth.
2. WALL BASE: walls thickened to >=1.4u and centered on their cell.
3. CAMERA-SIDE PARAPET: cut-away near walls render a low 0.55u parapet.
4. PILLAR FOOTPRINT-DRIVEN SIZE: pillar x/z derived from the authored
   footprint span so a 1x2 footprint reads covered on both cells.
5. DOORWAYS OPEN: closed door leaf disabled so the doorway reads walkable.
6. FLAT-LIGHT SCORE FRAME: CaptureRoom emits a third 1344x768 contract PNG
   with room lights off + flat grey ambient (placement, not luminance).
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 30 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 86fc7f1f-f2b3-4146-bb4c-066f04fe6b11

📥 Commits

Reviewing files that changed from the base of the PR and between cceabaa and 0a0f3cf.

📒 Files selected for processing (1)
  • extensions/renderers/unity/scripts/build_room_kit.cs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch kit-room-r7

Comment @coderabbitai help to get the list of available commands.

@100yenadmin
100yenadmin enabled auto-merge (squash) July 22, 2026 16:01
@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

evaOS review status: closed or merged before review

PR: #1686 - renderer: build_room_kit r7 — full impassable coverage + flat-light score capture (#83)
Head: 0a0f3cfa55a753f5d9321d32ab67259a25c957a6
Updated: 2026-07-22T16:07:58.354Z

evaOS review stopped because the PR closed or merged before this queued head could be reviewed.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #1686

Details: state=closed

@100yenadmin
100yenadmin merged commit 92aa719 into main Jul 22, 2026
28 of 30 checks passed
@100yenadmin
100yenadmin deleted the kit-room-r7 branch July 22, 2026 16:07

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0a0f3cfa55

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

else PlaceWall(pDoor, $"Door_{dn}", doorParent, new Vector3(w.x + CELL * 0.5f, 0f, w.z), 90f, ref nMatFix);
// r7: center the doorway on its cell (matches the r7 wall centering) and STRIP any closed door
// LEAF so the opening reads WALKABLE (packet item 5; r6 walk-through at (15,5) was a leaf).
var dInst = PlaceWall(pDoor, $"Door_{dn}", doorParent, new Vector3(w.x, 0f, w.z), isBack ? 0f : 90f, ref nMatFix);

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 Keep far-door frames outside walkable cells

When a door is on a kept far wall, this now centers the thick door-wall prefab in the door cell itself; PlaceWall then scales the wall thickness to WALL_T = 1.4, while qa/paint_coherence.py::derive_room treats door_cells as walkable by subtracting them from wall blocking. Stripping only the leaf still leaves the frame/jamb/arch geometry in the same 2x2 cell the engine expects open, so cases like the crypt right door (15,5) can continue to score as painted-blocked/walk-through. Keep the frame on the outer edge or otherwise avoid rendering blocking doorway geometry inside the walkable door cell.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant