Skip to content

Framebuffer Images, ImageSet, ImageSetSet

Daniel Grace edited this page May 24, 2019 · 1 revision

Opengine takes a philosophy of "optional hiding." If you want the "standard behavior," you should be able to opt into the standard behavior. But if you want to make that element a key aspect of your game, you should be able to take on that responsibility yourself and tweak.

One element where that is particularly evident is in the framebuffer. At the lowest level, when you double buffer you have two completely separate render passes, one for each of the buffers. With triple buffering, there are three.

Opengine aims to hide all of this from you if (as I imagine is going to be the case in the vast majority of cases) just want double or triple buffering.

We do this with an ImageSet.

ImageSet

An ImageSet is a way to treat multiple actual images as a single logical image. Opengine calls this an ImageSet rather than an Image because it wants to acknowledge the truth, even if it's possible to ignore it.

ImageSetSet

The brilliantly named ImageSetSet is a set of ImageSets. These are multiple logical images. One example is a gBuffer. With a gBuffer one shader pass renders into a set of images that are then later combined into a single image. But for a bit, the information exists as four (or more) logical images.

An ImageSetSet would be used to represent the output of a gBuffer, one ImageSet per logical output.

Clone this wiki locally