World should be purely using Descriptors + Elements, no Realizations #409

Closed
opened 2024-12-09 13:24:12 +00:00 by SakulFlee · 0 comments
SakulFlee commented 2024-12-09 13:24:12 +00:00 (Migrated from github.com)

In preparation for #408 and #372, we should make World to be purely based on *Descriptors + Elements.

This change will make World much more flexible, in addition to being easier to understand and handle.
We wouldn't need all those queue's anymore and making it more Async friendly (like proposed in #388).

Additionally, any Renderer implementation then can decide on their own what to do with the *Descriptors: Caching vs. No Caching, Indirect vs. Direct, etc.
Futhermore, additional systems like Physics Engines can also purely work and interact with *Descriptors, while having their own realized data internally.

To make this change easier to work with for e.g. caching, we should also keep a list of changes, a ChangeList, that is accumulated each update cycle.
Any subsystem, like Renderer, should have the option to either get specific or all *Descriptors, or, use the ChangeList to find out what was changed (should be especially useful for caching approaches).

In preparation for [#408](https://github.com/SakulFlee/Orbital/issues/408) and [#372](https://github.com/SakulFlee/Orbital/issues/372), we should make `World` to be purely based on `*Descriptor`s + `Element`s. This change will make `World` much more flexible, in addition to being easier to understand and handle. We wouldn't need all those queue's anymore and making it more Async friendly (like proposed in [#388](https://github.com/SakulFlee/Orbital/issues/388)). Additionally, any `Renderer` implementation then can decide on their own what to do with the `*Descriptor`s: Caching vs. No Caching, Indirect vs. Direct, etc. Futhermore, additional systems like _Physics Engines_ can also purely work and interact with `*Descriptor`s, while having their own realized data internally. To make this change easier to work with for e.g. caching, we should also keep a list of changes, a `ChangeList`, that is accumulated each update cycle. Any subsystem, like `Renderer`, should have the option to either get specific or all `*Descriptor`s, or, use the `ChangeList` to find out what was changed (should be especially useful for caching approaches).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
SakulFlee/Orbital#409
No description provided.