perf(vfx): port retail particle visibility degradation
Resolve DAT-authored particle ranges from the hardware GfxObj, apply retail distance and completed-cell visibility gates, and preserve the exact finite/infinite off-view update semantics. This removes dense-world simulation work without shortening terrain, entity, fog, or streaming distance. Publish doorway-clipped outdoor cells through a focused frame controller, retain effect cell identity for outdoor statics, reject hidden emitters before particle-slot scans, and offer an explicit opt-in Extended particle range. Release build succeeds and all 5,857 tests pass with five intentional skips. Retail-conformance, architecture, and adversarial review cycles are clean; connected Aerlinthe visual/performance gate pending. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
82789eea88
commit
f1ba147ac5
29 changed files with 1810 additions and 125 deletions
|
|
@ -1332,7 +1332,7 @@ hitch and follows.
|
|||
| **MP-Alloc (safe batch)** | Reuse per-frame buffers: anim pose, particle draw-list, interior partition, animatedIds/drawableCells sets | ✅ SHIPPED + USER-GATED 2026-07-05 — dense-town frame-time spikes 20–87ms → 6–10ms, alloc spikes (30–75MB single-frame) eliminated, gen2 GC 5–11/window → ~0; user confirms FPS steady. 4 commits `b8c05e2b`..`91afea24` |
|
||||
| MP-Alloc (hard sites) | EnvCell settled-camera rebuild gate + physics `Transition` pooling — the residual steady ~1.6MB/frame | ⚪ OPTIONAL follow-up — would lower the median too, but the wild-swing complaint is already resolved; each needs its own careful gate (batch correctness / physics faithfulness) |
|
||||
| MP1c | Streaming cutover to pak + hitch gate (vs the 211 ms baseline) | ⚪ after MP-Alloc |
|
||||
| MP2 | Retail distance-degrade port, hide-only cut (retires a divergence row) | ⚪ |
|
||||
| MP2 | Retail particle distance/cell-view degradation: DAT-authored range, exact infinite/finite off-view update branches, emitter-first render scan, optional Extended range | ✅ SHIPPED 2026-07-17 — Aerlinthe hotspot `0x32000223` resolves to retail 64m; landscape/entity streaming distance unchanged |
|
||||
| MP3 | Arch ECS render world + delta submission (the 300-FPS lever) | ⚪ — note: does NOT fix the steady-state GC churn (that's MP-Alloc); MP3 is the draw-submission throughput lever |
|
||||
| MP4 | Zero-alloc frame loop + flat physics data (residual, post-MP-Alloc) | ⚪ hard-queued behind M1.5 #137 |
|
||||
| MP5 | Job-system parallelism | ⚪ stretch, evidence-gated |
|
||||
|
|
|
|||
|
|
@ -633,8 +633,15 @@ include dungeons.
|
|||
ports `CPhysicsPart::Always2D`: mode-1/no-degrade particles now keep every
|
||||
authored mesh polygon through the modern global buffer, while other degrade
|
||||
modes retain the billboard path. This restores the four-piece apex of
|
||||
Armor/protection shield effects. The final two-client visual gate is still
|
||||
pending.
|
||||
Armor/protection shield effects. MP2's 2026-07-17 corrective performance
|
||||
slice now ports the complete retail particle distance/cell-view gate and
|
||||
degraded update branches: DAT-authored ranges (Aerlinthe's dominant swarm is
|
||||
64 world units), exact infinite-emitter freeze/finite-emitter conditional
|
||||
stop bookkeeping, and emitter-first render rejection. The landscape renderer
|
||||
publishes outdoor landcells independently of surviving object meshes.
|
||||
Terrain/entity streaming distance is
|
||||
unchanged; an explicit Extended setting doubles only particle range. The
|
||||
final two-client visual gate is still pending.
|
||||
- **L.1c local attack receive path (implemented and live-gated 2026-07-15)** —
|
||||
local non-autonomous mt-0 UpdateMotion now uses retail's wholesale interpreted
|
||||
funnel and action-stamp gate, so ACE's server-selected melee/missile action
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue