Watched “water rendering” tutorial on YT, they used image of landscape for reflections on water. In this case two shaders (landscape and water) are merged in code in one wall of code. But this aproach looks not very manageble. What if we add some new effect for our “Landscape”, will need to redo water. Must be some “Manager” class which will glue all together
Absolutely! That being said, GL also makes it harder to do anything performantly and the moment you want to try and do any form of multi-threaded rendering or multi-threaded resource creation. You're fucked
So if you're looking at writing a multi-threaded engine, you end up either passing a context around a lot (which kills all the perf advantages), or doing a lot of deferred object creation (which might end up being faster but more complicated and requires quite a bit more synchronization).
So it really depends on what you're trying to do. DirectX 11 has no bindless texturing, or more accurately only 11.1 and newer has it, Don't bother targeting 11.1 exclusively, especially not with something as intrusive as that, there's literally no reason. Everything DirectX 11.1 compatible is probably fully DirectX 12 compliant as well, so it's kinda pointless. (Like nvidia 9xx and older IIRC don't have support for it)
Single game loop when we exactly know timings is God blessing Multithreaded async code is nightmare, in web we handle it all the time, but all "async" in reality is single threaded process on V8 engine which just switching tasks.
not to mention especially if you are working on a 3d game, it can ABSOLUTLEY be useful to create and load meshes on a seperate or maybe a few seperate threads
You load assets on game start and forget. Loading at runtime is not good idea. You always limited by HDD or SDD, no matter how many threads will be created, it will not speed up IO process.
You need only current level which is limited by size of GPU RAM. Loading something bigger than 4GB on user device with 8Gb / 4 Gb RAM not really productive. It will swap as hell.
Until ALL user devices have fastest drives which really could load files without impact on overall system. Maybe in future we will have nice dirves and yes, load data at runtime without waiting.
If you can’t find it in Silk.NET.OpenAL.Extensions.Soft then the answer is probably no, but thankfully OpenAL extensions are super easy to add if you wanted to give it a go!
how would you guys implement openal buffers and sources? since the preferred method is streaming audio data I guess its to make a pool of buffers and sources?