IssueRaiser

Implement a Rendering Compositor

### Describe the project you are working on Godot 3D Rendering ### Describe the problem or limitation you are having in your project There are a good number of rendering techniques that can't be used in Godot due to the relatively monolithic renderer design. As examples: * Fine grained stencil control. * Portals. * Planar reflections. * Geometry decals, since you can write and read back custom buffers. * Terrain blending to geometry. * Geometry blending to sky. * Custom post processing. * And a few others Godot renderer takes objects, renders them and that's it. To be able to implement most of these techniques, multiple, customizable opaque passes are required. ### Describe the feature / enhancement and how it helps to overcome the problem or limitation The idea is to implement a compositor. Basically you create a **RendererCompositor** resource and set it into either **WorldEnvionment** or **Camera** nodes. The compositor lets you: * Allocate custom buffers for custom rendering * Divide opaque rendering into several passes. * Assign materials to each pass. * Read and write from/to custom buffers in materials. * Do clears and copies to backbuffers in each pass. * Do stencil operations in each pass. * This may not be enough for all cases, so for the more exquisite render engineers, give low level access to everything going on and allow inserting custom rendering code at any stage of rendering and between passes. * Additionally, also add a rendering logic script to co

Posted by reduz on Sep 29, 2023, 2:49 PM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.2,000 issues0 comments

github (Other)

Implement a Rendering Compositor

reduzSep 29, 2023, 2:49 PM

### Describe the project you are working on Godot 3D Rendering ### Describe the problem or limitation you are having in your project There are a good number of rendering techniques that can't be used in Godot due to the relatively monolithic renderer design. As examples: * Fine grained stencil control. * Portals. * Planar reflections. * Geometry decals, since you can write and read back custom buffers. * Terrain blending to geometry. * Geometry blending to sky. * Custom post processing. * And a few others Godot renderer takes objects, renders them and that's it. To be able to implement most of these techniques, multiple, customizable opaque passes are required. ### Describe the feature / enhancement and how it helps to overcome the problem or limitation The idea is to implement a compositor. Basically you create a **RendererCompositor** resource and set it into either **WorldEnvionment** or **Camera** nodes. The compositor lets you: * Allocate custom buffers for custom rendering * Divide opaque rendering into several passes. * Assign materials to each pass. * Read and write from/to custom buffers in materials. * Do clears and copies to backbuffers in each pass. * Do stencil operations in each pass. * This may not be enough for all cases, so for the more exquisite render engineers, give low level access to everything going on and allow inserting custom rendering code at any stage of rendering and between passes. * Additionally, also add a rendering logic script to co

Comments (0)

No comments yet. Start the discussion.

Comment on this issue