Full Frame Compositor #88150

Open
opened 2021-05-09 19:15:01 +02:00 by Manuel Castilla · 35 comments

Description
Current compositor implementation is tile-based having the priority of displaying first tiles as quickly as possible.
Memory usage can be very high for complex/long trees as buffers are kept from tree execution start to finish.

This task goal is to convert current tiled/per-pixel implementation to full-frame and display whole final image as quickly as possible without tiling.
All nodes/operations are buffered, creating buffers on first read and freeing them as soon as all their readers have finished. This reduces and keeps control of memory usage for complex trees of any length.
Trees with a few/simple operations may use a bit more memory than before as previous non-buffered operations are now buffered.
Current focus is CPU, OpenCL is not available at the moment.
Performance will gradually improve as more operations are converted.

Breaking changes from tiled system:

  • Translate, Rotate and Scale take effect immediately instead of next buffered operation.
  • Any sampling is always done over inputs instead of last buffered operation.

Known issues (will be fixed):

  • Scaling up, translating and rotating crops image.

There is an experimental option in master branch to enable it:

  • Go to Edit -> Preferences -> Experimental -> Enable "Full Frame Compositor"
  • Then go to Compositor -> Performance Panel -> Execution Model -> Tiled/FullFrame (Tiled is normal compositor)

Status and Work plan

**Description** Current compositor implementation is tile-based having the priority of displaying first tiles as quickly as possible. Memory usage can be very high for complex/long trees as buffers are kept from tree execution start to finish. This task goal is to convert current tiled/per-pixel implementation to full-frame and display whole final image as quickly as possible without tiling. All nodes/operations are buffered, creating buffers on first read and freeing them as soon as all their readers have finished. This reduces and keeps control of memory usage for complex trees of any length. Trees with a few/simple operations may use a bit more memory than before as previous non-buffered operations are now buffered. Current focus is CPU, OpenCL is not available at the moment. Performance will gradually improve as more operations are converted. Breaking changes from tiled system: - Translate, Rotate and Scale take effect immediately instead of next buffered operation. - Any sampling is always done over inputs instead of last buffered operation. Known issues (will be fixed): - Scaling up, translating and rotating crops image. There is an experimental option in master branch to enable it: - Go to Edit -> Preferences -> Experimental -> Enable "Full Frame Compositor" - Then go to Compositor -> Performance Panel -> Execution Model -> Tiled/FullFrame (Tiled is normal compositor) **Status and Work plan** * [x] [D11015: Compositor: Add vars and methods for easier image looping](https://archive.blender.org/developer/D11015) * [x] [D11882: Compositor: Buffer iterators](https://archive.blender.org/developer/D11882) * [x] [D11490: Compositor: Constant folding](https://archive.blender.org/developer/D11490) * [x] [D11113: Compositor: Full-frame base system](https://archive.blender.org/developer/D11113) * [x] [D12750: Compositor: Support backdrop offset for the Viewer node](https://archive.blender.org/developer/D12750) * [x] Remove unused UI options: "Chunksize", "OpenCL", "Buffer Groups" and "Two Pass". * [x] Convert operations to full-frame: * [x] Input nodes: * [x] [D11559: Compositor: Full frame Image node](https://archive.blender.org/developer/D11559) * [x] [D11593: Compositor: Full frame RGB node](https://archive.blender.org/developer/D11593) * [x] [D11594: Compositor: Full frame Value node](https://archive.blender.org/developer/D11594) * [x] [D11690: Compositor: Full frame Render Layers node](https://archive.blender.org/developer/D11690) * [x] [D11751: Compositor: Full frame Mask node](https://archive.blender.org/developer/D11751) * [x] b1bf4c2a05 * [x] 48e27ad122 * [x] [D12090: Compositor: Full frame input nodes](https://archive.blender.org/developer/D12090) * [x] Output nodes: * [x] [D11698: Compositor: Full frame Viewer node](https://archive.blender.org/developer/D11698) * [x] [D11749: Compositor: Full frame Levels node](https://archive.blender.org/developer/D11749) * [X] [D12091: Compositor: Full frame output nodes](https://archive.blender.org/developer/D12091) * [x] Multilayer EXR output issue (#98475) * [x] Color nodes: * [x] [D11677: Compositor: Full frame Brightness node](https://archive.blender.org/developer/D11677) * [x] [D11686: Compositor: Full frame Mix node](https://archive.blender.org/developer/D11686) * [x] [D11764: Compositor: Full frame Color Balance node](https://archive.blender.org/developer/D11764) * [x] [D11765: Compositor: Full frame Color Correction node](https://archive.blender.org/developer/D11765) * [x] [D11766: Compositor: Full frame Exposure node](https://archive.blender.org/developer/D11766) * [x] [D11767: Compositor: Full frame Gamma node](https://archive.blender.org/developer/D11767) * [x] [D12093: Compositor: Full frame curve nodes](https://archive.blender.org/developer/D12093) (RGB Curves and Hue Correct) * [x] [D12092: Compositor: Full frame color nodes](https://archive.blender.org/developer/D12092) * [x] Converter nodes: * [x] [D11638: Compositor: Full frame ID Mask node](https://archive.blender.org/developer/D11638) * [x] [D12095: Compositor: Full frame convert nodes](https://archive.blender.org/developer/D12095) * [x] Filter nodes: * [x] [D12167: Compositor: Full frame Bokeh Blur and Blur nodes](https://archive.blender.org/developer/D12167) * [x] [D11634: Compositor: Full frame Bilateral Blur node](https://archive.blender.org/developer/D11634) * [x] [D11694: Compositor: Full frame Sun Beams node](https://archive.blender.org/developer/D11694) * [x] [D11801: Compositor: Full frame Pixelate node](https://archive.blender.org/developer/D11801), #117223 * [x] [D12219: Compositor: Full frame filter nodes](https://archive.blender.org/developer/D12219) * [x] Vector nodes: * [x] [D12093: Compositor: Full frame curve nodes](https://archive.blender.org/developer/D12093) (Vector Curves) * [x] [D12233: Compositor: Full frame vector nodes](https://archive.blender.org/developer/D12233) * [x] Matte nodes: * [x] [D11627: Compositor: Full frame Box Mask node](https://archive.blender.org/developer/D11627) * [x] [D11635: Compositor: Full frame Ellipse Mask node](https://archive.blender.org/developer/D11635) * [x] [D11750: Compositor: Full frame Double Edge Mask node](https://archive.blender.org/developer/D11750) * [x] [D12220: Compositor: Full frame matte nodes](https://archive.blender.org/developer/D12220) * [x] Distort nodes: * [x] [D11944: Compositor: Full frame Scale node](https://archive.blender.org/developer/D11944) * [x] 538f452ea9 * [x] [D12165: Compositor: Full frame transform nodes](https://archive.blender.org/developer/D12165) * [x] [D12166: Compositor: Full frame distort nodes](https://archive.blender.org/developer/D12166) * [x] [D12466: Compositor: Add support for canvas compositing](https://archive.blender.org/developer/D12466) * [x] Fix tests affected by breaking changes. * [ ] #96406 Run operations in sync/parallel limiting the number of them to control memory usage.
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscriber: @manzanilla

Added subscriber: @manzanilla

Added subscriber: @GeorgiaPacific

Added subscriber: @GeorgiaPacific
Member

Added subscriber: @EAW

Added subscriber: @EAW
Member

Added subscriber: @zanqdo

Added subscriber: @zanqdo

Added subscriber: @Pipeliner

Added subscriber: @Pipeliner

Added subscriber: @SteffenD

Added subscriber: @SteffenD

Added subscriber: @MD.FahadHassan

Added subscriber: @MD.FahadHassan
Member

Added subscriber: @SeanKennedy

Added subscriber: @SeanKennedy

Added subscriber: @Peine_Perdue

Added subscriber: @Peine_Perdue

Added subscriber: @Nikhil.Net

Added subscriber: @Nikhil.Net

Just a suggestion to keep the task updated for tracking purposes. It seems all of the nodes except Filter Nodes -> Pixelate are completed. Might by good to check off most of those boxes just for tracking purposes.

Just a suggestion to keep the task updated for tracking purposes. It seems all of the nodes except Filter Nodes -> Pixelate are completed. Might by good to check off most of those boxes just for tracking purposes.

Added subscriber: @costa

Added subscriber: @costa

Added subscriber: @DannyAustin

Added subscriber: @DannyAustin

Added subscriber: @CreatorSiSo

Added subscriber: @CreatorSiSo

Added subscriber: @MichaelParucha

Added subscriber: @MichaelParucha

What is the status of this project? Is it partially released? I can't find any release logs. And it seems that the main developer @manzanilla is no longer working on it.

What is the status of this project? Is it partially released? I can't find any release logs. And it seems that the main developer @manzanilla is no longer working on it.

Added subscriber: @JacobMerrill-1

Added subscriber: @JacobMerrill-1

I think that 'realtime composition' is now the goal using nodes that write openGL / vulkan later

I think that 'realtime composition' is now the goal using nodes that write openGL / vulkan later

Added subscriber: @AntoineP

Added subscriber: @AntoineP
Member

Added subscriber: @Jeroen-Bakker

Added subscriber: @Jeroen-Bakker
Member

The project is stalled. IMO the project is almost finished.
I do want to get it finished, but isn't my top priority right now.
If there is a developer who wants to pick over he/she should get in touch with me.

Last time I checked the canvas idea had to be integrated better in the image engine. And we should enable the full frame compositor in Blender. After that the tweaking, bug fixing etc would require attention. I personally cannot handle this right due to higher risk projects in the GPU module. But would be glad to help out a developer who is willing to work on this task.

This project won't be replaced by the viewport compositor as the viewport compositor cannot be used for offline rendering.

The project is stalled. IMO the project is almost finished. I do want to get it finished, but isn't my top priority right now. If there is a developer who wants to pick over he/she should get in touch with me. Last time I checked the canvas idea had to be integrated better in the image engine. And we should enable the full frame compositor in Blender. After that the tweaking, bug fixing etc would require attention. I personally cannot handle this right due to higher risk projects in the GPU module. But would be glad to help out a developer who is willing to work on this task. This project won't be replaced by the viewport compositor as the viewport compositor cannot be used for offline rendering.

@Jeroen-Bakker Hello. Can we have the "disc cache node" from the compositor up project?
This node would save a lot of headache for 4k projects. Please consider this one if possible. Thanks.
https://github.com/m-castilla/blender-compositor-up/tree/compositor-up

I started poking with the full frame workflow for 4K. Felt good although viewer region was faster with tile option.

@Jeroen-Bakker Hello. Can we have the "disc cache node" from the compositor up project? This node would save a lot of headache for 4k projects. Please consider this one if possible. Thanks. https://github.com/m-castilla/blender-compositor-up/tree/compositor-up I started poking with the full frame workflow for 4K. Felt good although viewer region was faster with tile option.

Could AMD FSR be added as a dependency?

this could allow the shot in a lower res -> process FX -> upscale
(making the whole process use far less resources)

Could AMD FSR be added as a dependency? this could allow the shot in a lower res -> process FX -> upscale (making the whole process use far less resources)
Contributor

Added subscriber: @Raimund58

Added subscriber: @Raimund58

Added subscriber: @Emi_Martinez

Added subscriber: @Emi_Martinez
Contributor

Added subscriber: @ok_what

Added subscriber: @ok_what

Added subscriber: @Macilvoy

Added subscriber: @Macilvoy

Added subscriber: @DanielPaul

Added subscriber: @DanielPaul

Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something?
In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it.

Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something? In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it.
Member

In #88150#1378895, @DanielPaul wrote:
Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something?
In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it.

You're thinking of the viewport compositor.

> In #88150#1378895, @DanielPaul wrote: > Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something? > In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it. You're thinking of the viewport compositor.

In #88150#1378896, @zanqdo wrote:

In #88150#1378895, @DanielPaul wrote:
Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something?
In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it.

You're thinking of the viewport compositor.

Jep, I did all steps to enable it, but the correction doesnt apply to the viewport.

> In #88150#1378896, @zanqdo wrote: >> In #88150#1378895, @DanielPaul wrote: >> Im on 3.3.0 Alpha, looks like it does not work anymore. Am I missing something? >> In some Tutorials there was a button in the "Viewport Shading" dropdown. Cant find it. > > You're thinking of the viewport compositor. Jep, I did all steps to enable it, but the correction doesnt apply to the viewport.

Added subscriber: @ShyDugong

Added subscriber: @ShyDugong

Added subscriber: @genesis2303

Added subscriber: @genesis2303
Sergey Sharybin added this to the Compositing project 2024-01-17 12:15:42 +01:00

chiming in to say that the glare node (fog glow) works very differently in GPU mode. The glare looks blown out and uneven.

chiming in to say that the glare node (fog glow) works very differently in GPU mode. The glare looks blown out and uneven.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
25 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#88150
No description provided.