Blender  V2.93
Functions | Variables
engine.c File Reference
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLT_translation.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_math_bits.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_object_types.h"
#include "BKE_camera.h"
#include "BKE_colortools.h"
#include "BKE_global.h"
#include "BKE_layer.h"
#include "BKE_node.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_debug.h"
#include "DEG_depsgraph_query.h"
#include "RNA_access.h"
#include "RE_bake.h"
#include "RE_engine.h"
#include "RE_pipeline.h"
#include "DRW_engine.h"
#include "initrender.h"
#include "pipeline.h"
#include "render_result.h"
#include "render_types.h"

Go to the source code of this file.

Functions

void RE_engines_init (void)
 
void RE_engines_exit (void)
 
void RE_engines_register (RenderEngineType *render_type)
 
RenderEngineTypeRE_engines_find (const char *idname)
 
bool RE_engine_is_external (const Render *re)
 
bool RE_engine_is_opengl (RenderEngineType *render_type)
 
RenderEngineRE_engine_create (RenderEngineType *type)
 
static void engine_depsgraph_free (RenderEngine *engine)
 
void RE_engine_free (RenderEngine *engine)
 
static RenderResultrender_result_from_bake (RenderEngine *engine, int x, int y, int w, int h)
 
static void render_result_to_bake (RenderEngine *engine, RenderResult *rr)
 
static RenderPartget_part_from_result (Render *re, RenderResult *result)
 
RenderResultRE_engine_begin_result (RenderEngine *engine, int x, int y, int w, int h, const char *layername, const char *viewname)
 
void RE_engine_update_result (RenderEngine *engine, RenderResult *result)
 
void RE_engine_add_pass (RenderEngine *engine, const char *name, int channels, const char *chan_id, const char *layername)
 
void RE_engine_end_result (RenderEngine *engine, RenderResult *result, bool cancel, bool highlight, bool merge_results)
 
RenderResultRE_engine_get_result (RenderEngine *engine)
 
bool RE_engine_test_break (RenderEngine *engine)
 
void RE_engine_update_stats (RenderEngine *engine, const char *stats, const char *info)
 
void RE_engine_update_progress (RenderEngine *engine, float progress)
 
void RE_engine_update_memory_stats (RenderEngine *engine, float mem_used, float mem_peak)
 
void RE_engine_report (RenderEngine *engine, int type, const char *msg)
 
void RE_engine_set_error_message (RenderEngine *engine, const char *msg)
 
const char * RE_engine_active_view_get (RenderEngine *engine)
 
void RE_engine_active_view_set (RenderEngine *engine, const char *viewname)
 
float RE_engine_get_camera_shift_x (RenderEngine *engine, Object *camera, bool use_spherical_stereo)
 
void RE_engine_get_camera_model_matrix (RenderEngine *engine, Object *camera, bool use_spherical_stereo, float *r_modelmat)
 
bool RE_engine_get_spherical_stereo (RenderEngine *engine, Object *camera)
 
rctiRE_engine_get_current_tiles (Render *re, int *r_total_tiles, bool *r_needs_free)
 
RenderDataRE_engine_get_render_data (Render *re)
 
bool RE_engine_use_persistent_data (RenderEngine *engine)
 
static bool engine_keep_depsgraph (RenderEngine *engine)
 
static void engine_depsgraph_init (RenderEngine *engine, ViewLayer *view_layer)
 
static void engine_depsgraph_exit (RenderEngine *engine)
 
void RE_engine_frame_set (RenderEngine *engine, int frame, float subframe)
 
void RE_bake_engine_set_engine_parameters (Render *re, Main *bmain, Scene *scene)
 
bool RE_bake_has_engine (Render *re)
 
bool RE_bake_engine (Render *re, Depsgraph *depsgraph, Object *object, const int object_id, const BakePixel pixel_array[], const BakeTargets *targets, const eScenePassType pass_type, const int pass_filter, float result[])
 
static void engine_render_view_layer (Render *re, RenderEngine *engine, ViewLayer *view_layer_iter, const bool use_engine, const bool use_grease_pencil)
 
bool RE_engine_render (Render *re, bool do_all)
 
void RE_engine_update_render_passes (struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer, update_render_passes_cb_t callback, void *callback_data)
 
void RE_engine_register_pass (struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer, const char *name, int channels, const char *chanid, eNodeSocketDatatype type)
 
void RE_engine_free_blender_memory (RenderEngine *engine)
 

Variables

ListBase R_engines = {NULL, NULL}
 

Function Documentation

◆ engine_depsgraph_exit()

static void engine_depsgraph_exit ( RenderEngine engine)
static

◆ engine_depsgraph_free()

static void engine_depsgraph_free ( RenderEngine engine)
static

◆ engine_depsgraph_init()

static void engine_depsgraph_init ( RenderEngine engine,
ViewLayer view_layer 
)
static

◆ engine_keep_depsgraph()

static bool engine_keep_depsgraph ( RenderEngine engine)
static

◆ engine_render_view_layer()

static void engine_render_view_layer ( Render re,
RenderEngine engine,
ViewLayer view_layer_iter,
const bool  use_engine,
const bool  use_grease_pencil 
)
static

◆ get_part_from_result()

static RenderPart* get_part_from_result ( Render re,
RenderResult result 
)
static

◆ RE_bake_engine()

bool RE_bake_engine ( Render re,
Depsgraph depsgraph,
Object object,
const int  object_id,
const BakePixel  pixel_array[],
const BakeTargets targets,
const eScenePassType  pass_type,
const int  pass_filter,
float  result[] 
)

◆ RE_bake_engine_set_engine_parameters()

void RE_bake_engine_set_engine_parameters ( Render re,
Main bmain,
Scene scene 
)

Definition at line 731 of file engine.c.

References Render::main, Scene::r, Render::r, render_copy_renderdata(), scene, and Render::scene.

Referenced by bake().

◆ RE_bake_has_engine()

bool RE_bake_has_engine ( Render re)

Definition at line 738 of file engine.c.

References RenderData::engine, NULL, Render::r, RE_engines_find(), and type.

Referenced by bake().

◆ RE_engine_active_view_get()

const char* RE_engine_active_view_get ( RenderEngine engine)

Definition at line 522 of file engine.c.

References RenderEngine::re, and RE_GetActiveRenderView().

◆ RE_engine_active_view_set()

void RE_engine_active_view_set ( RenderEngine engine,
const char *  viewname 
)

Definition at line 528 of file engine.c.

References RenderEngine::re, and RE_SetActiveRenderView().

◆ RE_engine_add_pass()

void RE_engine_add_pass ( RenderEngine engine,
const char *  name,
int  channels,
const char *  chan_id,
const char *  layername 
)

Definition at line 359 of file engine.c.

References NULL, RenderEngine::re, RE_create_render_pass(), and Render::result.

Referenced by draw_render_result_ensure_pass_cb().

◆ RE_engine_begin_result()

RenderResult* RE_engine_begin_result ( RenderEngine engine,
int  x,
int  y,
int  w,
int  h,
const char *  layername,
const char *  viewname 
)

◆ RE_engine_create()

RenderEngine* RE_engine_create ( RenderEngineType type)

◆ RE_engine_end_result()

void RE_engine_end_result ( RenderEngine engine,
RenderResult result,
bool  cancel,
bool  highlight,
bool  merge_results 
)

◆ RE_engine_frame_set()

void RE_engine_frame_set ( RenderEngine engine,
int  frame,
float  subframe 
)

◆ RE_engine_free()

void RE_engine_free ( RenderEngine engine)

◆ RE_engine_free_blender_memory()

void RE_engine_free_blender_memory ( RenderEngine engine)

◆ RE_engine_get_camera_model_matrix()

void RE_engine_get_camera_model_matrix ( RenderEngine engine,
Object camera,
bool  use_spherical_stereo,
float r_modelmat 
)

◆ RE_engine_get_camera_shift_x()

float RE_engine_get_camera_shift_x ( RenderEngine engine,
Object camera,
bool  use_spherical_stereo 
)

◆ RE_engine_get_current_tiles()

rcti* RE_engine_get_current_tiles ( Render re,
int *  r_total_tiles,
bool *  r_needs_free 
)

◆ RE_engine_get_render_data()

RenderData* RE_engine_get_render_data ( Render re)

Definition at line 616 of file engine.c.

References Render::r.

Referenced by draw_render_info(), and render_border_exec().

◆ RE_engine_get_result()

RenderResult* RE_engine_get_result ( RenderEngine engine)

Definition at line 428 of file engine.c.

References RenderEngine::re, and Render::result.

Referenced by DRW_render_gpencil(), and DRW_render_to_image().

◆ RE_engine_get_spherical_stereo()

bool RE_engine_get_spherical_stereo ( RenderEngine engine,
Object camera 
)

Definition at line 562 of file engine.c.

References BKE_camera_multiview_spherical_stereo(), NULL, Render::r, and RenderEngine::re.

◆ RE_engine_is_external()

bool RE_engine_is_external ( const Render re)

Definition at line 120 of file engine.c.

References Render::engine, RenderEngineType::render, and RenderEngine::type.

Referenced by validate_render_settings().

◆ RE_engine_is_opengl()

bool RE_engine_is_opengl ( RenderEngineType render_type)

Definition at line 125 of file engine.c.

References RenderEngineType::draw_engine, DRW_engine_render_support(), and NULL.

◆ RE_engine_register_pass()

void RE_engine_register_pass ( struct RenderEngine engine,
struct Scene scene,
struct ViewLayer view_layer,
const char *  name,
int  channels,
const char *  chanid,
eNodeSocketDatatype  type 
)

◆ RE_engine_render()

bool RE_engine_render ( Render re,
bool  do_all 
)

Definition at line 889 of file engine.c.

References BKE_report(), BKE_reports_contain(), BLI_rw_mutex_lock(), BLI_rw_mutex_unlock(), BLI_strncpy(), Render::camera_override, RenderEngine::camera_override, RenderData::cfra, RenderStats::cfra, Render::disprect, Render::dlh, RenderResult::do_exr_tile, Render::draw_lock, RenderData::engine, Render::engine, engine_depsgraph_free(), engine_keep_depsgraph(), engine_render_view_layer(), ListBase::first, Render::flag, RenderEngine::flag, FOREACH_VIEW_LAYER_TO_RENDER_BEGIN, FOREACH_VIEW_LAYER_TO_RENDER_END, RenderEngine::fullresult, G, RenderEngine::has_grease_pencil, Render::i, Scene::id, RenderData::mode, ID::name, NULL, Render::partsmutex, Render::partx, Render::party, Scene::r, Render::r, R_ANIMATION, R_BUTS_PREVIEW, R_EDGE_FRS, R_EXR_CACHE_FILE, R_EXR_TILE_FILE, R_NO_FRAME_UPDATE, RenderEngine::re, RE_ENGINE_ANIMATION, RE_engine_create(), RE_engine_free(), RE_ENGINE_PREVIEW, RE_ENGINE_RENDERING, RE_engine_test_break(), RE_engines_find(), RE_parts_free(), RE_parts_init(), RE_USE_POSTPROCESS, RE_USE_PREVIEW, RE_USE_SAVE_BUFFERS, render_result_exr_file_begin(), render_result_exr_file_cache_write(), render_result_exr_file_end(), render_result_free(), render_result_free_list(), render_result_new(), render_update_anim_renderdata(), Render::reports, RenderEngine::resolution_x, RenderEngine::resolution_y, Render::result, Render::resultmutex, RPT_ERROR, RR_ALL_LAYERS, RR_ALL_VIEWS, RR_USE_EXR, RR_USE_MEM, RenderData::scemode, Render::scene, RenderStats::scene_name, THREAD_LOCK_WRITE, RenderEngine::tile_x, RenderEngine::tile_y, type, Scene::view_layers, Render::winx, and Render::winy.

Referenced by do_render_engine(), do_render_full_pipeline(), and RE_PreviewRender().

◆ RE_engine_report()

void RE_engine_report ( RenderEngine engine,
int  type,
const char *  msg 
)

Definition at line 495 of file engine.c.

References BKE_report(), RenderEngine::re, Render::reports, RenderEngine::reports, and type.

Referenced by workbench_render().

◆ RE_engine_set_error_message()

void RE_engine_set_error_message ( RenderEngine engine,
const char *  msg 
)

◆ RE_engine_test_break()

bool RE_engine_test_break ( RenderEngine engine)

◆ RE_engine_update_memory_stats()

void RE_engine_update_memory_stats ( RenderEngine engine,
float  mem_used,
float  mem_peak 
)

Definition at line 485 of file engine.c.

References Render::i, RenderStats::mem_peak, RenderStats::mem_used, and RenderEngine::re.

◆ RE_engine_update_progress()

void RE_engine_update_progress ( RenderEngine engine,
float  progress 
)

Definition at line 475 of file engine.c.

References CLAMP, Render::prh, Render::progress, and RenderEngine::re.

Referenced by EEVEE_render_draw().

◆ RE_engine_update_render_passes()

void RE_engine_update_render_passes ( struct RenderEngine engine,
struct Scene scene,
struct ViewLayer view_layer,
update_render_passes_cb_t  callback,
void *  callback_data 
)

◆ RE_engine_update_result()

void RE_engine_update_result ( RenderEngine engine,
RenderResult result 
)

◆ RE_engine_update_stats()

void RE_engine_update_stats ( RenderEngine engine,
const char *  stats,
const char *  info 
)

◆ RE_engine_use_persistent_data()

bool RE_engine_use_persistent_data ( RenderEngine engine)

◆ RE_engines_exit()

void RE_engines_exit ( void  )

◆ RE_engines_find()

RenderEngineType* RE_engines_find ( const char *  idname)

◆ RE_engines_init()

void RE_engines_init ( void  )

Definition at line 74 of file engine.c.

References DRW_engines_register().

Referenced by main(), and blender::bke::tests::TEST().

◆ RE_engines_register()

void RE_engines_register ( RenderEngineType render_type)

Definition at line 100 of file engine.c.

References BLI_addtail(), RenderEngineType::draw_engine, DRW_engine_register(), and R_engines.

Referenced by DRW_engines_register().

◆ render_result_from_bake()

static RenderResult* render_result_from_bake ( RenderEngine engine,
int  x,
int  y,
int  w,
int  h 
)
static

◆ render_result_to_bake()

static void render_result_to_bake ( RenderEngine engine,
RenderResult rr 
)
static

Variable Documentation

◆ R_engines

ListBase R_engines = {NULL, NULL}