feat(rendering): pack scene dispatcher inputs
Capture immutable presentation payloads in the render scene, flatten unique entity and mesh-part records into the borrowed frame arena, and compare every routed dispatcher input tuple without changing the production draw source.
This commit is contained in:
parent
720578592b
commit
d8d9897376
13 changed files with 593 additions and 24 deletions
|
|
@ -430,6 +430,7 @@ internal sealed class ArchRenderScene : IRenderScene, IRenderSceneQuerySource
|
|||
_world.Set(entry.Entity, record.Material);
|
||||
_world.Set(entry.Entity, record.DegradeState);
|
||||
_world.Set(entry.Entity, record.Source);
|
||||
_world.Set(entry.Entity, record.EntityPayload);
|
||||
OrDirty(
|
||||
entry.Entity,
|
||||
record.Id,
|
||||
|
|
@ -528,6 +529,7 @@ internal sealed class ArchRenderScene : IRenderScene, IRenderSceneQuerySource
|
|||
record.OwnerIncarnation,
|
||||
record.DirtyMask,
|
||||
record.Source,
|
||||
record.EntityPayload,
|
||||
tag);
|
||||
|
||||
private void WriteRecord(
|
||||
|
|
@ -546,6 +548,7 @@ internal sealed class ArchRenderScene : IRenderScene, IRenderSceneQuerySource
|
|||
_world.Set(entity, record.OwnerIncarnation);
|
||||
_world.Set(entity, record.DirtyMask);
|
||||
_world.Set(entity, record.Source);
|
||||
_world.Set(entity, record.EntityPayload);
|
||||
}
|
||||
|
||||
private RenderProjectionRecord ReadRecord(in SceneEntry entry) =>
|
||||
|
|
@ -563,7 +566,8 @@ internal sealed class ArchRenderScene : IRenderScene, IRenderSceneQuerySource
|
|||
_world.Get<RenderDegradeState>(entry.Entity),
|
||||
_world.Get<RenderSortKey>(entry.Entity),
|
||||
_world.Get<RenderDirtyMask>(entry.Entity),
|
||||
_world.Get<RenderSourceMetadata>(entry.Entity));
|
||||
_world.Get<RenderSourceMetadata>(entry.Entity),
|
||||
_world.Get<RenderEntityPayload>(entry.Entity));
|
||||
|
||||
private void Destroy(in SceneEntry entry)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue