In order to gauge which topics you may find interesting, I’ve decided to do a quick poll to let you choose which topic you would like to hear more about.
Possible poll choices:
- Stateless rendering: How to create keys, what goes into a key, …
- AoS vs. SoA vs. AoSoA: Judging from some comments, there still seems to be a bit of confusion about how caching works, and how AoS/SoA can impact the performance of an application. I would like to talk about three possible methods of storing and accessing your data, with all the implications – which are not only about performance, but also about code complexity, ease of debugging, and so on.
- Memory Allocators: There are still a few allocators that I frequently use which I haven’t talked about yet, such as the Micro Allocator.
- In-Engine Profiling: How do you create a simple (intrusive) in-engine profiler that is able to capture not just performance, but memory statistics, file accesses, and other kinds of data with just a little bit of code?
- New Job System using Lock-Free Work-Stealing Queues: I implemented a lock-free work-stealing queue a few weeks ago. I could update the task scheduler using these queues, and describe a new and more simplified version of the scheduler. A follow-up to this could be the implementation of high-level primitives such as e.g. parallel_for.
Note that the poll allows for multiple choice answers. Cast your vote now!
Really interested in seeing your renderer design! Also the job system sounds very interesting.
Asset pipeline as whole in engine runtime. E.g. how to deal with interaction between asset loading vs. subsystem memory handling (rendering, physics, audio), asset stream and so on. There should be plenty of room to discuss 🙂
Stateless rendering and job-stealing are really interesting (I’m currently trying to develop such things) but I admit to be especially curios about the in-engine profiler, no idea on how to do such a thing.
Brace yourself, interesting things are coming! 😛
– DC
+1 for in-engine profiling: the only way I can think I would do that will almost surely compromise the performance I’ll try to profile
Same way as cvar system is implemented quake codebase, compile time stuff with linked-list in intrusive fashion.
A post about the job system would be awesome. I hope u will find time for that. 🙂
SOA vs AOSOA is a topic that hasn’t gotten enough attention in the game engine blogosphere, I think. Would definitely be interested to hear more thoughts on that!
Finish allocators first, then job queue. And profiling would be nice too, at some point. With stateless rendering I’d wait until Vulkan is out and you digged a bit into that (you will do, right? :D), as this seems to be much more interesting in that regard.
ps: Thanks for continuing this. I’ve been watching this blog for basically forever hoping for updates!
I’d like to see an article on how you’ve set up your engine architecture to have so few global states and variables. Insight into alternative techniques to using systems/managers would be very interesting, in addition to how you manage gamestates.
Really hope an looking forward to read a new amazing article… Learned so much from this blog, its a real gold mine for game dev.