acdream/src/AcDream.App/Rendering/Wb
Erik 212f5a12e5 perf(render) Campaign FW3.4a: one walk pass; prepare-once/draw-ranges; arena records
The FW3.4 dense-Arwic pair triggered the +/-20% stop rule (+33.5% CPU
p50, 14x frame allocation). This slice removes the three measured
costs without changing GPU command order (the referee suites assert
identical recorded call sequences):

- WalkFrameDriver: Collect (ONE walk per frame - no GPU work; leaf
  calls and flush points become a recorded event list; the driver
  absorbed the renderer collection pass and exposes the visited sets)
  + Replay (prepare the whole stream once, then replay events,
  interleaving DrawOrderedRange with leaf calls in the exact recorded
  order). RunFrame = Collect+Replay for existing callers.
- WbDrawDispatcher: SubmitOrderedStream split into PrepareOrderedStream
  (all sections + commands + merge runs uploaded once per frame) and
  DrawOrderedRange (bind-once latch; per-run pipeline + DrawIdOffset +
  DrawIndirectRangeRhi). Load-bearing correctness catch from the
  implementation round: merge runs take FORCED BREAKS at the recorded
  event marks - whole-stream merging must not fuse two segments that
  retail separates with a leaf GPU call (shell, punch); the straddle
  assert stays as a dead-code safety net.
- WalkProductionWorldData: WalkFrameStaticRecords carries an
  ArraySegment into a per-frame grow-only arena; the per-cell
  fresh-array copies (the 1.9 MB/frame alloc p50) are gone - zero
  steady-state allocation after warmup.

Suites (lead-verified): full Release build 0 warnings; hermetic
6,758/0; Walk lane 209/1; InstalledDat Walk conformance 40/1
untouched. Next: the dense-Arwic re-measure against the same-session
baseline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-30 17:01:26 +02:00
..
AnimatedEntityState.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
Building.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
BuildingLoader.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
BuildingRegistry.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
CachedBatch.cs fix(render): correct foliage-wind classification, receiver/caster desync, and frame binding (Campaign VM VM6 review) 2026-08-23 01:54:36 +02:00
CompositeWarmupEntitySource.cs perf(streaming): scope reveal warmup spatially 2026-07-25 04:39:48 +02:00
ContiguousRangeAllocator.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
DebugRenderSettings.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
DrawElementsIndirectCommand.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EntityClassificationCache.cs feat(render): Campaign V slice V4t-2 — the world texture stack crosses to GpuTextureSlot 2026-07-28 12:43:50 +02:00
EntitySpawnAdapter.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EnvCellLandblockBuild.cs feat(render) Campaign FW3.3: ShellDrawLiftZ is RETIRED - cells draw at the dat origin 2026-08-30 16:08:52 +02:00
EnvCellLandblockPublication.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EnvCellMeshPreparationScheduler.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EnvCellRenderer.cs fix #435 (part 1): delete 17 probes that outlived their closed investigations 2026-08-24 11:41:20 +02:00
EnvCellRenderer.Rhi.cs feat(render) Campaign FW2: OrderedDrawStream + walk-order submitter 2026-08-30 12:31:31 +02:00
EnvCellSceneryInstance.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
EnvCellVisibilitySnapshot.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
FoliageWindClassification.cs refactor(render): one group-creation seam, required foliage key field, first-frame wind snap (Campaign VM VM6 review 3) 2026-08-23 03:03:56 +02:00
GeometryUtils.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
GlobalMeshBuffer.cs perf(render) #429: allocation-exact streamed-mesh completion 2026-08-24 09:14:00 +02:00
GpuMemoryTracker.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
GpuRetiredRangeAllocator.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
GroupKey.cs refactor(render): one group-creation seam, required foliage key field, first-frame wind snap (Campaign VM VM6 review 3) 2026-08-23 03:03:56 +02:00
IEntityTextureLifetime.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
IMeshPipelineDevice.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
InstanceData.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
IWbMeshAdapter.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LandblockSpawnAdapter.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
MeshUploadCaches.cs fix(streaming): prepare quiesced destination entities 2026-07-24 20:21:57 +02:00
MeshUploadFrameBudget.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
ModernRenderData.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ObjectMeshManager.cs perf(render) #429: allocation-exact streamed-mesh completion 2026-08-24 09:14:00 +02:00
PackedProjectionClassificationCache.cs perf(rendering): retain packed classification 2026-07-25 02:46:40 +02:00
RetryableResourceReleaseLedger.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
SceneData.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
TextureAtlasManager.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
TextureAtlasSlotAllocator.cs feat(render): unify physical residency accounting 2026-07-24 16:20:48 +02:00
TextureFormatExtensions.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
WbDrawDispatcher.cs feat(render) Campaign FW3.2a: the walk-to-draw population layer 2026-08-30 13:52:23 +02:00
WbDrawDispatcher.DirectionalShadowReceivers.cs fix(render): shadow-gated-off receiver frames light from the authored sun again (Campaign VM VM6 review 5) 2026-08-23 03:58:41 +02:00
WbDrawDispatcher.DirectionalShadows.cs fix #429: allocation-free shadow topology rebuild + churn-frame pipelining 2026-08-24 09:16:58 +02:00
WbDrawDispatcher.OrderedStream.cs perf(render) Campaign FW3.4a: one walk pass; prepare-once/draw-ranges; arena records 2026-08-30 17:01:26 +02:00
WbDrawDispatcher.PackedOracle.cs feat(render) Campaign FW3.2a: the walk-to-draw population layer 2026-08-30 13:52:23 +02:00
WbDrawDispatcher.Rhi.cs feat(render) Campaign FW3.2a: the walk-to-draw population layer 2026-08-30 13:52:23 +02:00
WbDrawDispatcher.WalkClassify.cs feat(render) Campaign FW3.2a: the walk-to-draw population layer 2026-08-30 13:52:23 +02:00
WbFrustum.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
WbMeshAdapter.cs fix #435 (part 1): delete 17 probes that outlived their closed investigations 2026-08-24 11:41:20 +02:00
WbRenderPass.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
WbTextureResolutionPolicy.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
WorldTextureArray.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
WorldTransformFrameArena.cs feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00