perf(rendering): retire production entity partition
Route production meshes and attached particles from the exact retained PView frame ranges, while keeping the former WorldEntity partition only for standalone tests and explicit diagnostic/oracle probes. Copy retained source/count facts before arena release so world diagnostics no longer require the old partition. Record the accepted G4 visual gate and open the exact G5 production matrix. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
14b48cf553
commit
10ccce3f2d
11 changed files with 452 additions and 125 deletions
|
|
@ -64,6 +64,12 @@ internal sealed class RetailPViewParticleClassifications
|
|||
foreach (WorldEntity owner in owners)
|
||||
_outdoor.Add(owner.Id);
|
||||
}
|
||||
|
||||
public void ReplaceOutdoor(IReadOnlySet<uint> ownerIds)
|
||||
{
|
||||
_outdoor.Clear();
|
||||
_outdoor.UnionWith(ownerIds);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -452,7 +458,7 @@ internal sealed class RetailPViewPassExecutor :
|
|||
animatedEntityIds: frame.AnimatedEntityIds);
|
||||
}
|
||||
|
||||
_particleClassifications.ReplaceOutdoor(context.ParticleOwners);
|
||||
_particleClassifications.ReplaceOutdoor(context.ParticleOwnerIds);
|
||||
|
||||
_diagnostics.EmitOutStageParticles(
|
||||
RenderingDiagnostics.ProbeOutStageEnabled,
|
||||
|
|
@ -539,15 +545,14 @@ internal sealed class RetailPViewPassExecutor :
|
|||
{
|
||||
if (_particles is null
|
||||
|| _particleRenderer is null
|
||||
|| context.CellEntities.Count == 0)
|
||||
|| context.ParticleOwnerIds.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
HashSet<uint> visible = _particleClassifications.Visible;
|
||||
visible.Clear();
|
||||
foreach (WorldEntity entity in context.CellEntities)
|
||||
visible.Add(entity.Id);
|
||||
visible.UnionWith(context.ParticleOwnerIds);
|
||||
if (visible.Count == 0)
|
||||
return;
|
||||
|
||||
|
|
@ -562,15 +567,14 @@ internal sealed class RetailPViewPassExecutor :
|
|||
|
||||
public void DrawDynamicsParticles(
|
||||
RetailPViewFrameInput frame,
|
||||
IReadOnlyList<WorldEntity> survivors)
|
||||
IReadOnlySet<uint> ownerIds)
|
||||
{
|
||||
if (_particles is null || _particleRenderer is null || survivors.Count == 0)
|
||||
if (_particles is null || _particleRenderer is null || ownerIds.Count == 0)
|
||||
return;
|
||||
|
||||
HashSet<uint> dynamics = _particleClassifications.Dynamics;
|
||||
dynamics.Clear();
|
||||
foreach (WorldEntity entity in survivors)
|
||||
dynamics.Add(entity.Id);
|
||||
dynamics.UnionWith(ownerIds);
|
||||
if (dynamics.Count == 0)
|
||||
return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue