Blender V5.0
RE_pipeline.h File Reference
#include "DNA_ID.h"
#include "DNA_listBase.h"
#include "DNA_vec_types.h"

Go to the source code of this file.

Classes

struct  RenderView
struct  RenderPass
struct  RenderLayer
struct  RenderResult
class  RenderStats

Namespaces

namespace  blender
namespace  blender::gpu

Macros

#define RE_MAXNAME   ((MAX_ID_NAME - 2) + 10)

Functions

struct RenderRE_NewRender (const void *owner)
struct RenderRE_GetRender (const void *owner)
struct RenderRE_NewSceneRender (const struct Scene *scene)
struct RenderRE_GetSceneRender (const struct Scene *scene)
struct ViewRenderRE_NewViewRender (struct RenderEngineType *engine_type)
struct RenderRE_NewInteractiveCompositorRender (const struct Scene *scene)
void RE_FreeRender (struct Render *re)
void RE_FreeViewRender (struct ViewRender *view_render)
void RE_FreeAllRender (void)
void RE_FreeInteractiveCompositorRenders (void)
void RE_FreeAllRenderResults (void)
void RE_FreeAllPersistentData (void)
void RE_FreePersistentData (const struct Scene *scene)
void RE_FreeGPUTextureCaches (void)
void RE_FreeUnusedGPUResources (void)
void RE_FreeRenderResult (struct RenderResult *rr)
struct RenderResultRE_AcquireResultRead (struct Render *re)
struct RenderResultRE_AcquireResultWrite (struct Render *re)
void RE_ReferenceRenderResult (struct RenderResult *rr)
void RE_ReleaseResult (struct Render *re)
void RE_AcquireResultImageViews (struct Render *re, struct RenderResult *rr)
void RE_ReleaseResultImageViews (struct Render *re, struct RenderResult *rr)
void RE_AcquireResultImage (struct Render *re, struct RenderResult *rr, int view_id)
void RE_ReleaseResultImage (struct Render *re)
void RE_SwapResult (struct Render *re, struct RenderResult **rr)
void RE_ClearResult (struct Render *re)
struct RenderStatsRE_GetStats (struct Render *re)
void RE_ResultGet32 (struct Render *re, unsigned int *rect)
void RE_ResultGetFloat (struct Render *re, float *rect)
bool RE_ResultIsMultiView (struct RenderResult *rr)
void RE_render_result_full_channel_name (char *fullname, const char *layname, const char *passname, const char *viewname, const char *chan_id, int channel)
struct ImBufRE_render_result_rect_to_ibuf (struct RenderResult *rr, const struct ImageFormatData *imf, const float dither, int view_id)
void RE_render_result_rect_from_ibuf (struct RenderResult *rr, const struct ImBuf *ibuf, int view_id)
struct RenderLayerRE_GetRenderLayer (struct RenderResult *rr, const char *name)
floatRE_RenderLayerGetPass (struct RenderLayer *rl, const char *name, const char *viewname)
struct ImBufRE_RenderLayerGetPassImBuf (struct RenderLayer *rl, const char *name, const char *viewname)
bool RE_HasSingleLayer (struct Render *re)
struct RenderPassRE_create_gp_pass (struct RenderResult *rr, const char *layername, const char *viewname)
void RE_create_render_pass (struct RenderResult *rr, const char *name, int channels, const char *chan_id, const char *layername, const char *viewname, bool allocate)
void RE_InitState (struct Render *re, struct Render *source, struct RenderData *rd, struct ListBase *render_layers, struct ViewLayer *single_layer, int winx, int winy, const rcti *disprect)
struct ObjectRE_GetCamera (struct Render *re)
void RE_SetOverrideCamera (struct Render *re, struct Object *cam_ob)
void RE_SetCamera (struct Render *re, const struct Object *cam_ob)
void RE_GetViewPlane (struct Render *re, rctf *r_viewplane, rcti *r_disprect)
void RE_init_threadcount (Render *re)
bool RE_WriteRenderViewsMovie (struct ReportList *reports, struct RenderResult *rr, struct Scene *scene, struct RenderData *rd, struct MovieWriter **movie_writers, int totvideos, bool preview)
void RE_RenderFrame (struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, int frame, float subframe, bool write_still)
void RE_RenderAnim (struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, int sfra, int efra, int tfra)
void RE_SetActiveRenderView (struct Render *re, const char *viewname)
const char * RE_GetActiveRenderView (struct Render *re)
void RE_SetReports (struct Render *re, struct ReportList *reports)
void RE_PreviewRender (struct Render *re, struct Main *bmain, struct Scene *scene)
bool RE_ReadRenderResult (struct Scene *scene, struct Scene *scenode)
struct RenderResultRE_MultilayerConvert (ExrHandle *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
void RE_display_init (Render *re)
void RE_display_ensure_gpu_context (Render *re)
void RE_display_share (Render *re, const Render *parent_re)
void RE_display_free (Render *re)
void RE_display_update_cb (struct Render *re, void *handle, void(*f)(void *handle, RenderResult *rr, struct rcti *rect))
void RE_stats_draw_cb (struct Render *re, void *handle, void(*f)(void *handle, RenderStats *rs))
void RE_progress_cb (struct Render *re, void *handle, void(*f)(void *handle, float))
void RE_draw_lock_cb (struct Render *re, void *handle, void(*f)(void *handle, bool lock))
void RE_test_break_cb (struct Render *re, void *handle, bool(*f)(void *handle))
void RE_prepare_viewlayer_cb (struct Render *re, void *handle, bool(*f)(void *handle, ViewLayer *vl, struct Depsgraph *depsgraph))
void RE_current_scene_update_cb (struct Render *re, void *handle, void(*f)(void *handle, struct Scene *scene))
void * RE_system_gpu_context_get (Render *re)
void * RE_blender_gpu_context_ensure (Render *re)
float RE_filter_value (int type, float x)
bool RE_seq_render_active (struct Scene *scene, struct RenderData *rd)
bool RE_layers_have_name (struct RenderResult *result)
bool RE_passes_have_name (struct RenderLayer *rl)
struct RenderPassRE_pass_find_by_name (struct RenderLayer *rl, const char *name, const char *viewname)
void RE_pass_set_buffer_data (struct RenderPass *pass, float *data)
blender::gpu::TextureRE_pass_ensure_gpu_texture_cache (struct Render *re, struct RenderPass *rpass)
void RE_GetCameraWindow (struct Render *re, const struct Object *camera, float r_winmat[4][4])
void RE_GetCameraWindowWithOverscan (const struct Render *re, float overscan, float r_winmat[4][4])
void RE_GetCameraModelMatrix (const struct Render *re, const struct Object *camera, float r_modelmat[4][4])
void RE_GetWindowMatrixWithOverscan (bool is_ortho, float clip_start, float clip_end, rctf viewplane, float overscan, float r_winmat[4][4])
struct SceneRE_GetScene (struct Render *re)
void RE_SetScene (struct Render *re, struct Scene *sce)
bool RE_is_rendering_allowed (struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, struct ReportList *reports)
bool RE_allow_render_generic_object (struct Object *ob)
bool RE_HasCombinedLayer (const RenderResult *result)
bool RE_HasFloatPixels (const RenderResult *result)
bool RE_RenderResult_is_stereo (const RenderResult *result)
struct RenderViewRE_RenderViewGetById (struct RenderResult *rr, int view_id)
struct RenderViewRE_RenderViewGetByName (struct RenderResult *rr, const char *viewname)
RenderResultRE_DuplicateRenderResult (RenderResult *rr)
struct ImBufRE_RenderPassEnsureImBuf (RenderPass *render_pass)
struct ImBufRE_RenderViewEnsureImBuf (const RenderResult *render_result, RenderView *render_view)
bool RE_RenderPassIsColor (const RenderPass *render_pass)

Macro Definition Documentation

◆ RE_MAXNAME

#define RE_MAXNAME   ((MAX_ID_NAME - 2) + 10)

Definition at line 37 of file RE_pipeline.h.

Referenced by RENDER_OT_render(), and screen_render_single_layer_set().

Function Documentation

◆ RE_AcquireResultImage()

◆ RE_AcquireResultImageViews()

◆ RE_AcquireResultRead()

◆ RE_AcquireResultWrite()

◆ RE_allow_render_generic_object()

bool RE_allow_render_generic_object ( struct Object * ob)

◆ RE_blender_gpu_context_ensure()

◆ RE_ClearResult()

◆ RE_create_gp_pass()

◆ RE_create_render_pass()

void RE_create_render_pass ( struct RenderResult * rr,
const char * name,
int channels,
const char * chan_id,
const char * layername,
const char * viewname,
bool allocate )

◆ RE_current_scene_update_cb()

void RE_current_scene_update_cb ( struct Render * re,
void * handle,
void(* )(void *handle, struct Scene *scene) )

Definition at line 893 of file source/blender/render/intern/pipeline.cc.

References BaseRender::display.

Referenced by screen_render_invoke().

◆ RE_display_ensure_gpu_context()

void RE_display_ensure_gpu_context ( Render * re)

◆ RE_display_free()

◆ RE_display_init()

◆ RE_display_share()

void RE_display_share ( Render * re,
const Render * parent_re )

◆ RE_display_update_cb()

void RE_display_update_cb ( struct Render * re,
void * handle,
void(* )(void *handle, RenderResult *rr, struct rcti *rect) )

◆ RE_draw_lock_cb()

void RE_draw_lock_cb ( struct Render * re,
void * handle,
void(* )(void *handle, bool lock) )

Definition at line 909 of file source/blender/render/intern/pipeline.cc.

References BaseRender::display, and lock.

Referenced by screen_render_exec(), and screen_render_invoke().

◆ RE_DuplicateRenderResult()

◆ RE_filter_value()

◆ RE_FreeAllPersistentData()

void RE_FreeAllPersistentData ( void )

On file load or changes engines, free persistent render data. Assumes no engines are currently rendering.

Definition at line 591 of file source/blender/render/intern/pipeline.cc.

References BLI_assert, BaseRender::engine, RenderEngine::flag, RE_engine_free(), RE_ENGINE_RENDERING, and RenderGlobal.

Referenced by setup_app_data(), and wm_set_working_color_space_exec().

◆ RE_FreeAllRender()

void RE_FreeAllRender ( void )

Only called on exit.

Definition at line 557 of file source/blender/render/intern/pipeline.cc.

References FRS_exit(), RE_FreeInteractiveCompositorRenders(), RE_FreeRender(), and RenderGlobal.

Referenced by WM_exit_ex().

◆ RE_FreeAllRenderResults()

void RE_FreeAllRenderResults ( void )

◆ RE_FreeGPUTextureCaches()

void RE_FreeGPUTextureCaches ( void )

Free cached GPU textures to reduce memory usage.

Definition at line 620 of file source/blender/render/intern/pipeline.cc.

References re_gpu_texture_caches_free(), and RenderGlobal.

Referenced by RE_RenderAnim(), and RE_RenderFrame().

◆ RE_FreeInteractiveCompositorRenders()

void RE_FreeInteractiveCompositorRenders ( void )

On file load, free all interactive compositor renders.

Definition at line 571 of file source/blender/render/intern/pipeline.cc.

References RE_FreeRender(), and RenderGlobal.

Referenced by RE_FreeAllRender(), setup_app_data(), and wm_set_working_color_space_exec().

◆ RE_FreePersistentData()

void RE_FreePersistentData ( const struct Scene * scene)

Free persistent render data, optionally only for the given scene.

◆ RE_FreeRender()

void RE_FreeRender ( struct Render * re)

Use free render as signal to do everything over (previews).

Only call this while you know it will remove the link too.

Definition at line 545 of file source/blender/render/intern/pipeline.cc.

References RenderGlobal.

Referenced by FRS_do_stroke_rendering(), RE_FreeAllRender(), RE_FreeInteractiveCompositorRenders(), and blender::ed::space_node::NestedTreePreviews::~NestedTreePreviews().

◆ RE_FreeRenderResult()

◆ RE_FreeUnusedGPUResources()

◆ RE_FreeViewRender()

void RE_FreeViewRender ( struct ViewRender * view_render)

Definition at line 552 of file source/blender/render/intern/pipeline.cc.

Referenced by DRW_engine_external_free().

◆ RE_GetActiveRenderView()

◆ RE_GetCamera()

◆ RE_GetCameraModelMatrix()

void RE_GetCameraModelMatrix ( const struct Render * re,
const struct Object * camera,
float r_modelmat[4][4] )

References result.

◆ RE_GetCameraWindow()

void RE_GetCameraWindow ( struct Render * re,
const struct Object * camera,
float r_winmat[4][4] )

◆ RE_GetCameraWindowWithOverscan()

void RE_GetCameraWindowWithOverscan ( const struct Render * re,
float overscan,
float r_winmat[4][4] )

Must be called after RE_GetCameraWindow(), does not change re->winmat.

◆ RE_GetRender()

struct Render * RE_GetRender ( const void * owner)

◆ RE_GetRenderLayer()

◆ RE_GetScene()

struct Scene * RE_GetScene ( struct Render * re)

Definition at line 352 of file source/blender/render/intern/pipeline.cc.

References Render::scene.

◆ RE_GetSceneRender()

struct Render * RE_GetSceneRender ( const struct Scene * scene)

◆ RE_GetStats()

struct RenderStats * RE_GetStats ( struct Render * re)

Definition at line 493 of file source/blender/render/intern/pipeline.cc.

References Render::i.

Referenced by stampdata().

◆ RE_GetViewPlane()

void RE_GetViewPlane ( struct Render * re,
rctf * r_viewplane,
rcti * r_disprect )

Get current view and window transform.

Definition at line 219 of file initrender.cc.

References BLI_rcti_init(), Render::disprect, RenderData::mode, Render::r, R_BORDER, and Render::viewplane.

Referenced by DRW_render_gpencil(), DRW_render_to_image(), and eevee_render().

◆ RE_GetWindowMatrixWithOverscan()

void RE_GetWindowMatrixWithOverscan ( bool is_ortho,
float clip_start,
float clip_end,
rctf viewplane,
float overscan,
float r_winmat[4][4] )

◆ RE_HasCombinedLayer()

bool RE_HasCombinedLayer ( const RenderResult * result)

◆ RE_HasFloatPixels()

bool RE_HasFloatPixels ( const RenderResult * result)

◆ RE_HasSingleLayer()

bool RE_HasSingleLayer ( struct Render * re)

◆ RE_init_threadcount()

void RE_init_threadcount ( Render * re)

Set the render threads based on the command-line and auto-threads setting.

Definition at line 2883 of file source/blender/render/intern/pipeline.cc.

References BKE_render_num_threads(), Render::r, and RenderData::threads.

Referenced by RE_InitState().

◆ RE_InitState()

◆ RE_is_rendering_allowed()

◆ RE_layers_have_name()

bool RE_layers_have_name ( struct RenderResult * result)

Used in the interface to decide whether to show layers or passes.

Definition at line 2803 of file source/blender/render/intern/pipeline.cc.

References BLI_listbase_count_at_most(), and result.

Referenced by uiblock_layer_pass_buttons().

◆ RE_MultilayerConvert()

struct RenderResult * RE_MultilayerConvert ( ExrHandle * exrhandle,
const char * colorspace,
bool predivide,
int rectx,
int recty )

◆ RE_NewInteractiveCompositorRender()

struct Render * RE_NewInteractiveCompositorRender ( const struct Scene * scene)

◆ RE_NewRender()

struct Render * RE_NewRender ( const void * owner)

The owner is a unique identifier for the render, either an original scene datablock for regular renders, or an area for preview renders. Calling a new render with an existing owner frees the existing render.

Definition at line 498 of file source/blender/render/intern/pipeline.cc.

References Render::owner, RE_display_init(), RE_GetRender(), and RenderGlobal.

Referenced by blender::ed::space_node::preview_render(), RE_NewSceneRender(), and shader_preview_render().

◆ RE_NewSceneRender()

struct Render * RE_NewSceneRender ( const struct Scene * scene)

◆ RE_NewViewRender()

struct ViewRender * RE_NewViewRender ( struct RenderEngineType * engine_type)

◆ RE_pass_ensure_gpu_texture_cache()

◆ RE_pass_find_by_name()

◆ RE_pass_set_buffer_data()

void RE_pass_set_buffer_data ( struct RenderPass * pass,
float * data )

Set the buffer data of the render pass. The pass takes ownership of the data, and creates an implicit sharing handle to allow its sharing with other users.

Definition at line 444 of file render_result.cc.

References data, IB_TAKE_OWNERSHIP, IMB_assign_float_buffer(), and RE_RenderPassEnsureImBuf().

Referenced by ml_addpass_cb().

◆ RE_passes_have_name()

bool RE_passes_have_name ( struct RenderLayer * rl)

◆ RE_prepare_viewlayer_cb()

void RE_prepare_viewlayer_cb ( struct Render * re,
void * handle,
bool(* )(void *handle, ViewLayer *vl, struct Depsgraph *depsgraph) )

◆ RE_PreviewRender()

◆ RE_progress_cb()

void RE_progress_cb ( struct Render * re,
void * handle,
void(* )(void *handle, float) )

◆ RE_ReadRenderResult()

◆ RE_ReferenceRenderResult()

void RE_ReferenceRenderResult ( struct RenderResult * rr)

◆ RE_ReleaseResult()

◆ RE_ReleaseResultImage()

◆ RE_ReleaseResultImageViews()

void RE_ReleaseResultImageViews ( struct Render * re,
struct RenderResult * rr )

◆ RE_render_result_full_channel_name()

void RE_render_result_full_channel_name ( char * fullname,
const char * layname,
const char * passname,
const char * viewname,
const char * chan_id,
int channel )

◆ RE_render_result_rect_from_ibuf()

void RE_render_result_rect_from_ibuf ( struct RenderResult * rr,
const struct ImBuf * ibuf,
int view_id )

References name.

◆ RE_render_result_rect_to_ibuf()

struct ImBuf * RE_render_result_rect_to_ibuf ( struct RenderResult * rr,
const struct ImageFormatData * imf,
const float dither,
int view_id )

◆ RE_RenderAnim()

void RE_RenderAnim ( struct Render * re,
struct Main * bmain,
struct Scene * scene,
struct ViewLayer * single_layer,
struct Object * camera_override,
int sfra,
int efra,
int tfra )

A version of RE_RenderFrame that saves images to disk.

Definition at line 2345 of file source/blender/render/intern/pipeline.cc.

References ADT_RECALC_ALL, Vector< T, InlineBufferCapacity, Allocator >::append(), BKE_add_template_variables_for_render_path(), BKE_add_template_variables_general(), BKE_animdata_from_id(), BKE_animsys_eval_context_construct(), BKE_animsys_evaluate_animdata(), BKE_CB_EVT_RENDER_CANCEL, BKE_CB_EVT_RENDER_COMPLETE, BKE_CB_EVT_RENDER_INIT, BKE_CB_EVT_RENDER_POST, BKE_CB_EVT_RENDER_PRE, BKE_CB_EVT_RENDER_WRITE, BKE_image_format_free(), BKE_image_format_init_for_write(), BKE_image_path_from_imformat(), BKE_imtype_is_movie(), BKE_main_blendfile_path(), BKE_report(), BKE_report_path_template_errors(), BKE_scene_ctime_get(), BKE_scene_multiview_filepath_get(), BKE_scene_multiview_is_render_view_active(), BKE_scene_multiview_num_videos_get(), BKE_scene_multiview_view_id_suffix_get(), BKE_sound_reset_scene_specs(), BLI_delete(), BLI_exists(), BLI_file_size(), RenderData::cfra, CLOG_INFO, DEG_graph_id_tag_update(), BaseRender::display, do_render_full_pipeline(), do_write_image_or_movie(), RenderData::engine, FILE_MAX, Render::flag, RenderEngineType::flag, G, get_videos_dimensions(), i, Scene::id, ID_RECALC_AUDIO_MUTE, ImageFormatData::imtype, blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), LISTBASE_FOREACH, LOG, Render::main, RenderData::mode, MOV_write_begin(), Render::movie_writers, RenderData::pic, Render::pipeline_depsgraph, Render::pipeline_scene_eval, Render::r, Scene::r, R_ANIMATION, R_EXTENSION, R_IMF_VIEWS_INDIVIDUAL, R_MULTIVIEW, R_NO_OVERWRITE, R_SKIP_WRITE, R_TOUCH, RE_engines_find(), RE_FreeGPUTextureCaches(), re_movie_free_all(), RE_USE_NO_IMAGE_SAVE, RE_USE_POSTPROCESS, render_callback_exec_id(), render_init_depsgraph(), render_init_from_main(), render_pipeline_free(), render_update_depsgraph(), Render::reports, Vector< T, InlineBufferCapacity, Allocator >::reserve(), RPT_ERROR, RPT_INFO, RenderData::scemode, Render::scene, RenderData::subframe, touch_file(), RenderData::views, and ImageFormatData::views_format.

Referenced by arg_handle_render_animation(), arg_handle_render_frame(), render_startjob(), and screen_render_exec().

◆ RE_RenderFrame()

void RE_RenderFrame ( struct Render * re,
struct Main * bmain,
struct Scene * scene,
struct ViewLayer * single_layer,
struct Object * camera_override,
int frame,
float subframe,
bool write_still )

◆ RE_RenderLayerGetPass()

float * RE_RenderLayerGetPass ( struct RenderLayer * rl,
const char * name,
const char * viewname )

◆ RE_RenderLayerGetPassImBuf()

struct ImBuf * RE_RenderLayerGetPassImBuf ( struct RenderLayer * rl,
const char * name,
const char * viewname )

◆ RE_RenderPassEnsureImBuf()

◆ RE_RenderPassIsColor()

bool RE_RenderPassIsColor ( const RenderPass * render_pass)

◆ RE_RenderResult_is_stereo()

bool RE_RenderResult_is_stereo ( const RenderResult * result)

◆ RE_RenderViewEnsureImBuf()

◆ RE_RenderViewGetById()

◆ RE_RenderViewGetByName()

struct RenderView * RE_RenderViewGetByName ( struct RenderResult * rr,
const char * viewname )

◆ RE_ResultGet32()

◆ RE_ResultGetFloat()

void RE_ResultGetFloat ( struct Render * re,
float * rect )

◆ RE_ResultIsMultiView()

bool RE_ResultIsMultiView ( struct RenderResult * rr)

◆ RE_seq_render_active()

◆ RE_SetActiveRenderView()

void RE_SetActiveRenderView ( struct Render * re,
const char * viewname )

◆ RE_SetCamera()

void RE_SetCamera ( struct Render * re,
const struct Object * cam_ob )

Per render, there's one persistent view-plane. Parts will set their own view-planes.

Note
call this after RE_InitState().

References data, depsgraph, lock, name, result, and x.

◆ RE_SetOverrideCamera()

void RE_SetOverrideCamera ( struct Render * re,
struct Object * cam_ob )

Definition at line 154 of file initrender.cc.

References Render::camera_override.

Referenced by screen_opengl_views_setup().

◆ RE_SetReports()

◆ RE_SetScene()

void RE_SetScene ( struct Render * re,
struct Scene * sce )

Definition at line 360 of file source/blender/render/intern/pipeline.cc.

References Render::scene.

Referenced by shader_preview_texture().

◆ RE_stats_draw_cb()

void RE_stats_draw_cb ( struct Render * re,
void * handle,
void(* )(void *handle, RenderStats *rs) )

Definition at line 898 of file source/blender/render/intern/pipeline.cc.

References BaseRender::display.

Referenced by screen_render_invoke().

◆ RE_SwapResult()

void RE_SwapResult ( struct Render * re,
struct RenderResult ** rr )

◆ RE_system_gpu_context_get()

◆ RE_test_break_cb()

◆ RE_WriteRenderViewsMovie()