1 hour ago, matt77hias said:
Currently none of these buffers is shared. I wonder if it would be beneficial to share some of them to reduce the number of buffers:
In some of the games I've worked on, we've used a render-target-pool. When doing a pass that temporarily needs some buffers, you ask the pool for them (e.g. bloom might request 1x ping-pong with HDR bit-depth, 1x half-resolution with 8-bit bit-depth, and 2x quarter resolution with 8-bit bit-depth), then when you're finished using them, you return them to the pool so that subsequent rendering passes can possibly reuse them.
In D3D12 and consoles, you can actually allocate multiple textures over the top of each other. E.g. maybe 2x 8-bit textures and 1x 16 bit texture in the same bit of memory. You can then start the frame by using the 2x 8-bit textures, and when you're finished with them, you can mark them as invalid, mark the 16-bit texture as valid, and then start using that 16-bit texture for ping-ponging, etc... This kind of this is not possible on older API's though.
1 hour ago, matt77hias said:
- GBuffer base color buffer + HDR 1
This doubles the size of your colour data in the GBuffer. Often GBuffer passes are bottlenecked by memory bandwidth, so you want to keep the GBuffer size as low as possible. ![:( :(](https://uploads.gamedev.net/emoticons/medium.sad.webp)
1 hour ago, matt77hias said:
GBuffer material buffer + Swap Chain back buffer
In some API's, reading from the swap-chain is disallowed. Make sure that it's allowed in the APIs that you're using ![:) :)](https://uploads.gamedev.net/emoticons/medium.smile.webp)
1 hour ago, matt77hias said:
GBuffer depth buffer + Swap Chain depth buffer
You don't even need a swap-chain depth buffer at all. The monitor doesn't display depth ![;) ;)](https://uploads.gamedev.net/emoticons/medium.wink.webp)