feat(render) Campaign FW3.2b-2 step 1b: walk registry plumbing to the renderer

LandblockPresentationPipeline exposes its render publisher;
FrameRootComposition hands the publisher's WalkBuildings/WalkLandscape
registries (FW3.1, published/retired per landblock) into
RetailPViewRenderer via two additive constructor parameters. Nothing
reads them yet - the static cutover flip is the next commit, executing
the plan section FW3.2b-2 design with the carve points now surveyed:
the EARLY per-slice sky/terrain/static loop, the look-in barrier +
DrawBuildingLookIns, the LATE dynamics phase, and the shells/cell-
statics passes.

Suites: full Release build 0 warnings; hermetic 6,753/0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-30 14:43:37 +02:00
parent 1b59eae428
commit d80d47d611
3 changed files with 23 additions and 2 deletions

View file

@ -512,7 +512,12 @@ internal sealed class FrameRootCompositionPhase
new WorldScenePViewRenderer(
new RetailPViewRenderer(
currentRenderSceneOracle,
renderFrameProduct),
renderFrameProduct,
// Campaign FW3.2b-2: the walk's production world
// data, published/retired with each landblock by the
// render publisher (FW3.1).
live.LandblockPipeline.RenderPublisher?.WalkBuildings,
live.LandblockPipeline.RenderPublisher?.WalkLandscape),
retailPViewPassExecutor,
retailPViewPassExecutor),
retailPViewCells,

View file

@ -93,10 +93,21 @@ public sealed class RetailPViewRenderer
{
}
// Campaign FW3.2b-2: the walk's production world-data registries
// (published/retired by LandblockRenderPublisher) plus the per-frame
// driver state. Null until the composition passes them; the static
// cutover requires both.
private readonly Walk.WalkBuildingRegistry? _walkBuildings;
private readonly Walk.WalkLandscapeAssembler? _walkLandscape;
internal RetailPViewRenderer(
InteriorEntityPartition.IObserver? partitionObserver,
RenderScenePViewFrameProductController? sceneFrameProduct = null)
RenderScenePViewFrameProductController? sceneFrameProduct = null,
Walk.WalkBuildingRegistry? walkBuildings = null,
Walk.WalkLandscapeAssembler? walkLandscape = null)
{
_walkBuildings = walkBuildings;
_walkLandscape = walkLandscape;
_partitionObserver = partitionObserver;
_candidateObserver = partitionObserver as ICurrentRenderPViewObserver;
_sceneFrameProduct = sceneFrameProduct;

View file

@ -76,6 +76,11 @@ public sealed class LandblockPresentationPipeline
private readonly Action<LandblockBuild, LandblockMeshData>?
_publishBeforeSpatialCommit;
private readonly LandblockRenderPublisher? _renderPublisher;
/// <summary>Campaign FW3.2b-2: the render publisher, exposed so the
/// frame composition can hand its walk world-data registries
/// (<c>WalkBuildings</c>/<c>WalkLandscape</c>) to the PView renderer.</summary>
internal LandblockRenderPublisher? RenderPublisher => _renderPublisher;
private readonly LandblockPhysicsPublisher? _physicsPublisher;
private readonly LandblockStaticPresentationPublisher? _staticPublisher;
private readonly GpuWorldState _state;