fix(render): R1 — repurpose the ParentCellId==null cell-gate bypass (#78)
EntityPassesVisibleCellGate no longer returns true unconditionally for outdoor scenery under a cell filter (was the headline #78 bleed). Outdoor scenery now draws only via the unfiltered bucket (visibleCellIds: null) + ResolveEntitySlot's OutsideView routing. The outdoor-root global Draw passes visibleCellIds: null (no portal-cell scoping outdoors; retires VisibleCellIds as a render gate — peering into buildings is R5). Updated the EntityClipTests case that pinned the old bypass (Included -> Excluded). 174/174 App tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c4fd71149a
commit
58822fed96
3 changed files with 21 additions and 14 deletions
|
|
@ -7584,10 +7584,14 @@ public sealed class GameWindow : IDisposable
|
|||
}
|
||||
else
|
||||
{
|
||||
// Outdoor root: the global entity pass (unchanged).
|
||||
// Outdoor root: draw the full outdoor world. No cell filter — outdoors there is no
|
||||
// portal-cell scoping (ClearClipRouting made every instance slot 0). R1 retires
|
||||
// visibility.VisibleCellIds as a render gate (peering into buildings is R5, a
|
||||
// separate pass). On the outdoor root visibility is null anyway, so this is the
|
||||
// same set the old code passed; null makes that explicit + gate-change-safe.
|
||||
_wbDrawDispatcher!.Draw(camera, _worldState.LandblockEntries, frustum,
|
||||
neverCullLandblockId: playerLb,
|
||||
visibleCellIds: visibility?.VisibleCellIds,
|
||||
visibleCellIds: null,
|
||||
animatedEntityIds: animatedIds);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue