Writing a blog post on Data Oriented Design. Any skeptics want to share their worries/criticisms? Looking to address some of the most common ones.
-
Näytä tämä ketju
-
Vastauksena käyttäjälle @vengefularia
Not skepticism but I’d love to see ways for defining scheduled work. The ones I’ve seen haven’t felt that great so far. BTW, in rendering, the concept of render graphs / frame graphs is really similar to dod but for graphics/gpu. It’s uncannily similar, very weird.
1 vastaus 0 uudelleentwiittausta 4 tykkäystä -
Vastauksena käyttäjille @Atrix256 ja @vengefularia
You should check out my couple of blog posts on Mana Engine, a thread-safe game engine that is DoD and scheduled similarly to a frame graph. https://medium.com/@tloch14/mana-engine-achieving-thread-safety-1143dd3deae5 … I haven't kept up with the posts, so information is kinda light. HMU if you want to know more.
6 vastausta 6 uudelleentwiittausta 29 tykkäystä -
Continuing: What do you do about task thread affinities (to avoid trashing the cache)? What do you do about thread priorities? Do you have thread group based scheduling? And the biggest question of them all. How do you guarantee thread execution order independence?
3 vastausta 0 uudelleentwiittausta 0 tykkäystä -
I work on the Mana engine with Tim. Execution Order Independence is guaranteed by having each system declare data dependencies, and then building a static schedule that satisfies those dependencies. ( A before B ).
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Vastauksena käyttäjille @rob_brink, @estama2 ja
It's possible for the order to shift around a bit at runtime, but only between systems that have no dependencies on each other.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Vastauksena käyttäjille @rob_brink, @estama2 ja
We check the dependency graph for deadlocks at startup, and prevent such a schedule from running in the first place.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Vastauksena käyttäjille @rob_brink, @tloch14 ja
It looks like you are doing static scheduling (planning the whole execution plan beforehand). The question i now have is: do you feel it'll be sufficient for the requirements of modern games? If you have multiple different static schedules, how do you transition between them?
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Vastauksena käyttäjille @estama2, @rob_brink ja
Here is a blog about modifying the graph at runtime: https://link.medium.com/lDQNcKgynX Modification lasts only one frame, and next frame begins with the usual “static” graph.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä
I do think it will be sufficient. If there is no work to be done by a given system, the cost of calling a system that decides it has nothing to do is very small. Talking a dozen microseconds throughout the whole frame.
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.