Blender V4.3
COM_compositor.cc File Reference
#include "BLI_threads.h"
#include "BLT_translation.hh"
#include "DNA_userdef_types.h"
#include "BKE_node.hh"
#include "BKE_node_runtime.hh"
#include "BKE_scene.hh"
#include "COM_ExecutionSystem.h"
#include "COM_WorkScheduler.h"
#include "COM_compositor.hh"
#include "RE_compositor.hh"

Go to the source code of this file.

Functions

static void compositor_init_node_previews (const RenderData *render_data, bNodeTree *node_tree)
 
static void compositor_reset_node_tree_status (bNodeTree *node_tree)
 
void COM_execute (Render *render, RenderData *render_data, Scene *scene, bNodeTree *node_tree, const char *view_name, blender::realtime_compositor::RenderContext *render_context, blender::realtime_compositor::Profiler *profiler)
 The main method that is used to execute the compositor tree. It can be executed during editing (blenkernel/node.cc) or rendering (renderer/pipeline.cc).
 
void COM_deinitialize ()
 Deinitialize the compositor caches and allocated memory. Use COM_clear_caches to only free the caches.
 

Variables

struct { 
 
   bool   is_initialized = false 
 
   ThreadMutex   mutex 
 
g_compositor 
 

Function Documentation

◆ COM_deinitialize()

void COM_deinitialize ( )

Deinitialize the compositor caches and allocated memory. Use COM_clear_caches to only free the caches.

Definition at line 105 of file COM_compositor.cc.

References BLI_mutex_end(), BLI_mutex_lock(), BLI_mutex_unlock(), blender::compositor::WorkScheduler::deinitialize(), and g_compositor.

Referenced by WM_exit_ex().

◆ COM_execute()

void COM_execute ( Render * render,
RenderData * render_data,
Scene * scene,
bNodeTree * node_tree,
const char * view_name,
blender::realtime_compositor::RenderContext * render_context,
blender::realtime_compositor::Profiler * profiler )

The main method that is used to execute the compositor tree. It can be executed during editing (blenkernel/node.cc) or rendering (renderer/pipeline.cc).

Parameters
renderRender instance for GPU context.
render_dataRender data for this composite, this won't always belong to a scene.
node_treeReference to the compositor editing tree
renderingThis parameter determines whether the function is called from rendering (true) or editing (false). based on this setting the system will work differently:
  • during rendering only Composite & the File output node will be calculated
See also
NodeOperation.is_output_program(bool rendering) of the specific operations
- during editing all output nodes will be calculated
NodeOperation.is_output_program(bool rendering) of the specific operations
- another quality setting can be used bNodeTree.
  The quality is determined by the bNodeTree fields.
  quality can be modified by the user from within the node panels.

- output nodes can have different priorities in the WorkScheduler.
This is implemented in the COM_execute function.

OCIO_TODO: this options only used in rare cases, namely in output file node, so probably this settings could be passed in a nicer way. should be checked further, probably it'll be also needed for preview generation in display space

Definition at line 54 of file COM_compositor.cc.

References BKE_render_num_threads(), BLI_mutex_init(), BLI_mutex_lock(), BLI_mutex_unlock(), compositor_init_node_previews(), compositor_reset_node_tree_status(), blender::compositor::ExecutionSystem::execute(), g_compositor, blender::compositor::WorkScheduler::initialize(), node_tree, RE_compositor_execute(), SCE_COMPOSITOR_DEVICE_GPU, and USER_EXPERIMENTAL_TEST.

Referenced by ntreeCompositExecTree().

◆ compositor_init_node_previews()

static void compositor_init_node_previews ( const RenderData * render_data,
bNodeTree * node_tree )
static

◆ compositor_reset_node_tree_status()

static void compositor_reset_node_tree_status ( bNodeTree * node_tree)
static

Definition at line 48 of file COM_compositor.cc.

References IFACE_, and node_tree.

Referenced by COM_execute().

Variable Documentation

◆ [struct]

struct { ... } g_compositor

Referenced by COM_deinitialize(), and COM_execute().

◆ is_initialized

bool is_initialized = false

◆ mutex