>[!info] >Outline for implementing the Compositor / Compositor Effects for our [[../Digipen/GAM250|GAM250]] engine. ### CanvasLayer RenderingServer managed object (with node counterpart) that contains: - Global $z$-index for ordering other canvas layers - Internal list of RenderObjects bound to this layer - Internal [[#Compositor]] for rendering - [[#Enviornment]] Resource - Viewport Settings - Pixel Perfect Y/N - Parallax Offset / Scale ### WorldEnviornment A Node with an [[#Enviornment]] resource that assigns the enviornment that the current [[#CanvasLayer]] should be using. #### Enviornment A Resource type for a collection of rendering parameters: - List of CompositorEffect types - Color grading options ### Compositor The compositor is an internal list of [[#Compositor Effect|Compositor Effects]] and a [[#RenderSceneBuffers]] #### RenderSceneBuffers An object-derived class that stores the minimum deferred rendering buffers: - Color GBuffer - Normal Buffer - Emissive Buffer - Velocity Buffer (motion vectors) - Mask GBuffer (the mask layers of each fragment) - Render Target Texture #### Compositor Effect Object derived class with a single render callback that takes a gfx::CanvasLayer and RenderSceneBuffers. Example builtin compositor effects: - Blur Pass - Velocity Blur Pass - Lighting - Tonemapping