acdream/src/AcDream.Core/Vfx
Erik 6d5afcccde fix(render): S2 chunk 6 review round — one particle turn per cell per stamp, cheap empty cells, dead owner-set stub deleted
Retail-lens review of chunk 6 (no blocking finding). Fixed:
- a cell that gets two object-list turns in one frame (a chamber reached
  through two portals) submitted its emitters twice; retail's particle parts
  sit in the same shadow_part_list as every other part and CPhysicsPart::Draw's
  frame stamp suppresses the second draw, so the walk now dedupes the particle
  turn with the same frame-scoped set that dedupes the cell shell;
- every visited land cell paid the full per-cell draw setup even with no
  emitter; DrawForCell now returns after the cell lookup, retail's own cost
  (DrawPartCell 0x005a07a0 `num_shadow_parts > 0`);
- CopyRenderableEmittersInCell maintains LastRenderScopeEmitterVisitCount;
- the OutdoorSceneParticleEntityIds / outdoorOwnerIds stub chain (permanently
  empty, never read) is deleted through IWorldSceneRenderer,
  WorldScenePViewRenderer, IWorldScenePasses and the composition root;
- AD-117 item 4 names the two behavioral residuals (owner-cell substitution;
  no per-emission AddPartToShadowCells);
- ParticleHookSinkTests pins that an emitter's draw cell is its owner's pose
  cell and survives the projection-visibility switch across the per-frame
  view pass.

Gates: Core 4,988/4,988 (Vfx 108/108), App hermetic 6,760/6,760, Runtime
1,884/1,884.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 06:52:28 +02:00
..
EmitterDescLoader.cs fix(vfx): classify hardwareless particle emitters once 2026-07-27 00:03:44 +02:00
IEntityEffectPoseSource.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
ParticleHookSink.cs feat(render): S2 chunk 6 — particle emitters draw by their own cell (add_particle_shadow_to_cell) 2026-09-03 06:28:09 +02:00
ParticleSystem.cs fix(render): S2 chunk 6 review round — one particle turn per cell per stamp, cheap empty cells, dead owner-set stub deleted 2026-09-03 06:52:28 +02:00
PhysicsScriptRunner.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
PhysicsScriptTableResolver.cs feat(vfx): port retail effect scheduling and delivery 2026-07-14 09:25:44 +02:00
RetailCreateBlockingParticleHook.cs feat(vfx): decode retail hooks and typed tables 2026-07-14 08:17:44 +02:00
RetailParticleFacing.cs fix #28: port retail's sky default-script playback (aurora) and the particle facing law 2026-08-23 15:28:59 +02:00
VfxModel.cs fix(render): particles draw unclipped, once, in their retail stage 2026-08-29 12:35:30 +02:00