From d80d47d611625d57dfaae80f1beeb62a230bf479 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 30 Aug 2026 14:43:37 +0200 Subject: [PATCH] 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 --- src/AcDream.App/Composition/FrameRootComposition.cs | 7 ++++++- src/AcDream.App/Rendering/RetailPViewRenderer.cs | 13 ++++++++++++- .../Streaming/LandblockPresentationPipeline.cs | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/AcDream.App/Composition/FrameRootComposition.cs b/src/AcDream.App/Composition/FrameRootComposition.cs index dc94659c..c92d5320 100644 --- a/src/AcDream.App/Composition/FrameRootComposition.cs +++ b/src/AcDream.App/Composition/FrameRootComposition.cs @@ -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, diff --git a/src/AcDream.App/Rendering/RetailPViewRenderer.cs b/src/AcDream.App/Rendering/RetailPViewRenderer.cs index f1c71440..dadbdc9c 100644 --- a/src/AcDream.App/Rendering/RetailPViewRenderer.cs +++ b/src/AcDream.App/Rendering/RetailPViewRenderer.cs @@ -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; diff --git a/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs b/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs index ab09145f..b0e13f41 100644 --- a/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs +++ b/src/AcDream.App/Streaming/LandblockPresentationPipeline.cs @@ -76,6 +76,11 @@ public sealed class LandblockPresentationPipeline private readonly Action? _publishBeforeSpatialCommit; private readonly LandblockRenderPublisher? _renderPublisher; + + /// Campaign FW3.2b-2: the render publisher, exposed so the + /// frame composition can hand its walk world-data registries + /// (WalkBuildings/WalkLandscape) to the PView renderer. + internal LandblockRenderPublisher? RenderPublisher => _renderPublisher; private readonly LandblockPhysicsPublisher? _physicsPublisher; private readonly LandblockStaticPresentationPublisher? _staticPublisher; private readonly GpuWorldState _state;