Was on a project where we used a tender graph to automate transitions. The incredible thing was that it was not a lot of work to automate, but reduced tons of complexity around transitions in user code.
-
-
Vastauksena käyttäjälle @tloch14
That's where i'm at and i like it a lot. The system gives me a command list to fill out and descriptor tables for anything i asked for. Everything is in the correct state, just do the work. Plenty more benefits to be had, but it's already really enjoyable to work with.
1 vastaus 0 uudelleentwiittausta 1 tykkäys -
It feels like the obvious right way to go, but i think it's early in the wave yet.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
How do you specify the graph? Our system (have had for many years) generates a list of render commands, then we can build dependency graph in rendering back-end (per frame) if necessary. Have always found retained graph code clunky to work with.
3 vastausta 0 uudelleentwiittausta 0 tykkäystä -
We also generate rendering commands, but each command is submitted with a dependency list. So you can declare nodes up front, then fill their commands out of order (ideal for MT engines). The dependency graph is just whatever the dependencies were submitted as.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
I actually like the idea of a retained graph, but it requires more work to set up, IMO, and I’m not yet sure about any benefits. Not retained makes it have an “ingui feel” and that’s quite liberating.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
I keep getting stuck on the edge cases: what if the graphics settings change? What if you go into a different rendering mode? Generating everything every frame works well.
1 vastaus 0 uudelleentwiittausta 1 tykkäys -
We generate our command lists in parallel, then submit them in-order to the back-end that does some re-ordering/shuffling/instancing based on the back-end and then goes wide again to submit. Dependencies are explicit, but sometimes a lot of data to sort through.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
FWIW i create the command lists wide too. A command list per node (per pass)=1 threaded job per. Some nodes get squished into whatever larger ones are around (a single compute shader dispatch, or a resource copy!). Still need to solve going wide on a single render pass though.
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
I designed all my commands to support going wide, by allocating them ahead of time you can then just fill wide. Man, for some reason I thought nobody would be interested in how I do it. Maybe I should write a blog post? Need something longer form than twitter.
1 vastaus 0 uudelleentwiittausta 2 tykkäystä
Also, worth noting that at this point I'm talking about my engine at home -- not the same one I spoke about earlier.
-
-
Everybody has a home engine except for me!
1 vastaus 0 uudelleentwiittausta 0 tykkäystä -
Hah! I've been chipping away at this thing for so long, at this point my problem is not having a game. =(
0 vastausta 0 uudelleentwiittausta 1 tykkäys
Keskustelun loppu
Uusi keskustelu -
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.