fix(render): S3 chunk 3 re-review follow-ups
- the LandCell event doc states the deferred cross-block batch rule (the same-landblock lookahead text was stale); - the AlphaSubmitMark arm's comment gives the true reason it is not a flush point (it only enqueues into the CPU alpha list; the drain leaves flush first); - the pending terrain batch is cleared with the other transient frame lists in AbortFrame/BeginFrame; - CompleteWalkTerrainFrame runs in a finally so a throwing Replay cannot leak its accumulated ticks into the next frame's sample; - CopyRenderableEmittersInCell keeps its own doc comment; - the outdoor-root LandCell pin now observes one real cell turn after its terrain; - the oh1 landscape contract's stale "whole pre-stage" prose is resolved. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
651badc2b9
commit
e10765aaa0
5 changed files with 58 additions and 39 deletions
|
|
@ -606,17 +606,6 @@ public sealed class ParticleSystem : IParticleSystem
|
|||
destination.Sort(static (left, right) => left.Handle.CompareTo(right.Handle));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copies the renderable emitters whose <see cref="ParticleEmitter.OwnerCellId"/>
|
||||
/// is <paramref name="cellId"/>, retaining spawn order. Retail
|
||||
/// <c>CPhysicsObj::add_particle_shadow_to_cell</c> (0x00514a70) gives an
|
||||
/// emitter exactly one shadow in its own current cell, independent of its
|
||||
/// attached owner's registry membership — a hidden/suspended owner's
|
||||
/// emitter is still enumerated here as long as it remains renderable
|
||||
/// (presentation-visible and view-eligible). No per-call allocation after
|
||||
/// warmup: the bucket's own sorted handle list is copied through the
|
||||
/// retained <see cref="_scopeHandleScratch"/> buffer.
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// S3 chunk 3 fix round 1 (F2): whether <paramref name="cellId"/> has any
|
||||
/// renderable emitter for <paramref name="renderPass"/>, WITHOUT copying
|
||||
|
|
@ -635,6 +624,17 @@ public sealed class ParticleSystem : IParticleSystem
|
|||
&& bucket.FirstRenderableHandle != 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copies the renderable emitters whose <see cref="ParticleEmitter.OwnerCellId"/>
|
||||
/// is <paramref name="cellId"/>, retaining spawn order. Retail
|
||||
/// <c>CPhysicsObj::add_particle_shadow_to_cell</c> (0x00514a70) gives an
|
||||
/// emitter exactly one shadow in its own current cell, independent of its
|
||||
/// attached owner's registry membership — a hidden/suspended owner's
|
||||
/// emitter is still enumerated here as long as it remains renderable
|
||||
/// (presentation-visible and view-eligible). No per-call allocation after
|
||||
/// warmup: the bucket's own sorted handle list is copied through the
|
||||
/// retained <see cref="_scopeHandleScratch"/> buffer.
|
||||
/// </summary>
|
||||
public void CopyRenderableEmittersInCell(
|
||||
ParticleRenderPass renderPass,
|
||||
uint cellId,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue