There is something I don't get about ECS and DOD when it comes to performance, maybe twitter can help. It is often used as an argument that looping over game objects is faster, because you only loop over the data you need and they are lined up in memory (1/2).
-
Näytä tämä ketju
-
But how often do you loop over all game objects? At least in my engine I use spatial queries for pretty much everything and keep active/passive sets. What is a realistic use case? (particles systems don't count. particles aren't game objects)
30 vastausta 7 uudelleentwiittausta 139 tykkäystäNäytä tämä ketju -
Vastauksena käyttäjälle @tuxedolabs
To me, the cool thing about DoD is that it's statically analyzable & you can schedule across cores/machines/whatever. Other benefits from static analysis besides automatic threading. I'm a fan of rendergraphs for the same reason and feel they are strongly related informally.
2 vastausta 0 uudelleentwiittausta 7 tykkäystä -
Vastauksena käyttäjälle @Atrix256
Interesting. Do you have an example of that being used in practice? Is this what the burst compiler in Unity is doing? Do you need to declare data dependencies explicitly?
1 vastaus 1 uudelleentwiittaus 4 tykkäystä -
Vastauksena käyttäjille @tuxedolabs ja @Atrix256
I have a toy engine that uses templates to generare such dependencies. I have blogged about it here, although the information is not complete and possibly out of date (I am always improving it)https://medium.com/@tloch14/mana-engine-achieving-thread-safety-1143dd3deae5 …
1 vastaus 0 uudelleentwiittausta 0 tykkäystä
Eric Niebler just gave a talk at #CppCon describing how when you give a scheduler the entire DAG up front, it can be the most optimal about running those tasks. The Mana engine does exactly this. Entire frame DAG is known at start up.
Lataaminen näyttää kestävän hetken.
Twitter saattaa olla ruuhkautunut tai ongelma on muuten hetkellinen. Yritä uudelleen tai käy Twitterin tilasivulla saadaksesi lisätietoja.