acdream/src
Erik 03f63686cc feat(render) Campaign FW3.2b-1: the walk frame driver
WalkFrameDriver executes one full static-content frame from the walk's
turns so GPU command-buffer order equals retail's walk order. One rule
does the interleaving: the accumulated OrderedDrawStream flushes
through SubmitOrderedStream immediately before EVERY non-stream draw
(sky, terrain slice, cell shell, punch fan, alpha barrier).

Turn script, all decomp-cited and two of them corrected in review:
- Interior flood: per cell IN FLOOD ORDER, shell first then contents
  (PView::DrawCells @0x005a4840: DrawEnvCell @0x005a4abe precedes
  DrawObjCellForDummies @0x005a4b0d).
- Landscape: sky once, terrain per active slice, then blocks
  far-to-near; per cell the building turn precedes the cell's outdoor
  statics (DrawSortCell @0x0059f140).
- Building (DrawBuilding @0x0059f2a0): the BLD probe event stays at
  entry, but the ENTIRE body - alpha barrier, portal passes, shell -
  sits inside retail's gfxobj[deg_level]!=0 gate @0x0059f2d3, and the
  order is FlushAlphaList @0x0059f30b -> the two-pass punch/look-in
  walk -> THEN the shell draw @0x0059f345. The driver review caught
  both the missing gate and a shell-before-punch inversion; fixed
  with the addresses cited.

Walk seam: three additive default-implemented IWalkEventSink hooks
(OnLandscapeCellTurn / OnBuildingTurn / OnBuildingShellTurn /
OnPunchGeometry) - every existing sink and all FW1 conformance
fixtures unchanged. WalkLandBlock gains LandblockId for the cell-id
encoding. Leaf draws go through IWalkFrameLeafRenderer so FW3.2b-2
wires the real renderers and the referee suite runs on fakes +
RecordingGpuDevice.

Flagged for FW3.2b-2/FW4 adjudication (documented in code):
FlushFartherThan(building distance) vs retail flush-all
FlushAlphaList(0f); terrain-before-statics within the landscape turn.

Suites: full Release build 0 warnings; Walk lane 200/1 skip;
InstalledDat Walk conformance 40/1 untouched; hermetic 6,752/0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-30 14:23:17 +02:00
..
AcDream.App feat(render) Campaign FW3.2b-1: the walk frame driver 2026-08-30 14:23:17 +02:00
AcDream.Bake Optimize prepared asset package v2 2026-08-27 20:09:09 +02:00
AcDream.Cli fix: make locale-independence real, not assumed — parsing, casing, comparison 2026-08-19 20:11:32 +02:00
AcDream.Content Document PAK v2 resource closeout 2026-08-27 20:29:50 +02:00
AcDream.Core fix(render): particles draw unclipped, once, in their retail stage 2026-08-29 12:35:30 +02:00
AcDream.Core.Net fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
AcDream.Headless fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
AcDream.Launcher Optimize prepared asset package v2 2026-08-27 20:09:09 +02:00
AcDream.Launcher.Core fix(ci): make launcher space guidance culture invariant 2026-08-27 20:40:50 +02:00
AcDream.Platform feat(render): implement Campaign AR and terrain fidelity 2026-08-22 13:13:29 +02:00
AcDream.Plugin.Abstractions feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
AcDream.Plugins.MossTank feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
AcDream.Plugins.Smoke feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
AcDream.Runtime fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
AcDream.UI.Abstractions fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00