Blender  V3.3
Classes | Macros | Typedefs | Functions | Variables
RE_engine.h File Reference
#include "DNA_listBase.h"
#include "DNA_node_types.h"
#include "DNA_scene_types.h"
#include "RE_bake.h"
#include "RNA_types.h"
#include "BLI_threads.h"

Go to the source code of this file.

Classes

struct  RenderEngineType
 
struct  RenderEngine
 

Macros

#define RE_INTERNAL   1
 
#define RE_USE_PREVIEW   4
 
#define RE_USE_POSTPROCESS   8
 
#define RE_USE_EEVEE_VIEWPORT   16
 
#define RE_USE_SHADING_NODES_CUSTOM   64
 
#define RE_USE_SPHERICAL_STEREO   128
 
#define RE_USE_STEREO_VIEWPORT   256
 
#define RE_USE_GPU_CONTEXT   512
 
#define RE_USE_CUSTOM_FREESTYLE   1024
 
#define RE_USE_NO_IMAGE_SAVE   2048
 
#define RE_USE_ALEMBIC_PROCEDURAL   4096
 
#define RE_ENGINE_ANIMATION   1
 
#define RE_ENGINE_PREVIEW   2
 
#define RE_ENGINE_DO_DRAW   4
 
#define RE_ENGINE_DO_UPDATE   8
 
#define RE_ENGINE_RENDERING   16
 
#define RE_ENGINE_HIGHLIGHT_TILES   32
 
#define RE_ENGINE_CAN_DRAW   64
 

Typedefs

typedef struct RenderEngineType RenderEngineType
 
typedef void(* update_render_passes_cb_t) (void *userdata, struct Scene *scene, struct ViewLayer *view_layer, const char *name, int channels, const char *chanid, eNodeSocketDatatype type)
 
typedef struct RenderEngine RenderEngine
 

Functions

RenderEngineRE_engine_create (RenderEngineType *type)
 
void RE_engine_free (RenderEngine *engine)
 
void RE_layer_load_from_file (struct RenderLayer *layer, struct ReportList *reports, const char *filepath, int x, int y)
 
void RE_result_load_from_file (struct RenderResult *result, struct ReportList *reports, const char *filepath)
 
struct 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, struct 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, struct RenderResult *result, bool cancel, bool highlight, bool merge_results)
 
struct RenderResultRE_engine_get_result (struct RenderEngine *engine)
 
struct RenderPassRE_engine_pass_by_index_get (struct RenderEngine *engine, const char *layer_name, int index)
 
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, struct Object *camera, bool use_spherical_stereo)
 
void RE_engine_get_camera_model_matrix (RenderEngine *engine, struct Object *camera, bool use_spherical_stereo, float r_modelmat[16])
 
bool RE_engine_get_spherical_stereo (RenderEngine *engine, struct Object *camera)
 
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)
 
bool RE_engine_render (struct Render *re, bool do_all)
 
bool RE_engine_is_external (const struct Render *re)
 
void RE_engine_frame_set (struct RenderEngine *engine, int frame, float subframe)
 
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)
 
bool RE_engine_use_persistent_data (struct RenderEngine *engine)
 
struct RenderEngineRE_engine_get (const struct Render *re)
 
bool RE_engine_draw_acquire (struct Render *re)
 
void RE_engine_draw_release (struct Render *re)
 
bool RE_engine_has_render_context (struct RenderEngine *engine)
 
void RE_engine_render_context_enable (struct RenderEngine *engine)
 
void RE_engine_render_context_disable (struct RenderEngine *engine)
 
void RE_engines_init (void)
 
void RE_engines_init_experimental (void)
 
void RE_engines_exit (void)
 
void RE_engines_register (RenderEngineType *render_type)
 
bool RE_engine_is_opengl (RenderEngineType *render_type)
 
bool RE_engine_supports_alembic_procedural (const RenderEngineType *render_type, Scene *scene)
 
RenderEngineTypeRE_engines_find (const char *idname)
 
rctiRE_engine_get_current_tiles (struct Render *re, int *r_total_tiles, bool *r_needs_free)
 
struct RenderDataRE_engine_get_render_data (struct Render *re)
 
void RE_bake_engine_set_engine_parameters (struct Render *re, struct Main *bmain, struct Scene *scene)
 
void RE_engine_free_blender_memory (struct RenderEngine *engine)
 
void RE_engine_tile_highlight_set (struct RenderEngine *engine, int x, int y, int width, int height, bool highlight)
 
void RE_engine_tile_highlight_clear_all (struct RenderEngine *engine)
 

Variables

ListBase R_engines
 

Macro Definition Documentation

◆ RE_ENGINE_ANIMATION

#define RE_ENGINE_ANIMATION   1

RenderEngine.flag

Definition at line 58 of file RE_engine.h.

◆ RE_ENGINE_CAN_DRAW

#define RE_ENGINE_CAN_DRAW   64

Definition at line 64 of file RE_engine.h.

◆ RE_ENGINE_DO_DRAW

#define RE_ENGINE_DO_DRAW   4

Definition at line 60 of file RE_engine.h.

◆ RE_ENGINE_DO_UPDATE

#define RE_ENGINE_DO_UPDATE   8

Definition at line 61 of file RE_engine.h.

◆ RE_ENGINE_HIGHLIGHT_TILES

#define RE_ENGINE_HIGHLIGHT_TILES   32

Definition at line 63 of file RE_engine.h.

◆ RE_ENGINE_PREVIEW

#define RE_ENGINE_PREVIEW   2

Definition at line 59 of file RE_engine.h.

◆ RE_ENGINE_RENDERING

#define RE_ENGINE_RENDERING   16

Definition at line 62 of file RE_engine.h.

◆ RE_INTERNAL

#define RE_INTERNAL   1

RenderEngineType.flag

Definition at line 43 of file RE_engine.h.

◆ RE_USE_ALEMBIC_PROCEDURAL

#define RE_USE_ALEMBIC_PROCEDURAL   4096

Definition at line 55 of file RE_engine.h.

◆ RE_USE_CUSTOM_FREESTYLE

#define RE_USE_CUSTOM_FREESTYLE   1024

Definition at line 53 of file RE_engine.h.

◆ RE_USE_EEVEE_VIEWPORT

#define RE_USE_EEVEE_VIEWPORT   16

Definition at line 47 of file RE_engine.h.

◆ RE_USE_GPU_CONTEXT

#define RE_USE_GPU_CONTEXT   512

Definition at line 52 of file RE_engine.h.

◆ RE_USE_NO_IMAGE_SAVE

#define RE_USE_NO_IMAGE_SAVE   2048

Definition at line 54 of file RE_engine.h.

◆ RE_USE_POSTPROCESS

#define RE_USE_POSTPROCESS   8

Definition at line 46 of file RE_engine.h.

◆ RE_USE_PREVIEW

#define RE_USE_PREVIEW   4

Definition at line 45 of file RE_engine.h.

◆ RE_USE_SHADING_NODES_CUSTOM

#define RE_USE_SHADING_NODES_CUSTOM   64

Definition at line 49 of file RE_engine.h.

◆ RE_USE_SPHERICAL_STEREO

#define RE_USE_SPHERICAL_STEREO   128

Definition at line 50 of file RE_engine.h.

◆ RE_USE_STEREO_VIEWPORT

#define RE_USE_STEREO_VIEWPORT   256

Definition at line 51 of file RE_engine.h.

Typedef Documentation

◆ RenderEngine

typedef struct RenderEngine RenderEngine

◆ RenderEngineType

◆ update_render_passes_cb_t

typedef void(* update_render_passes_cb_t) (void *userdata, struct Scene *scene, struct ViewLayer *view_layer, const char *name, int channels, const char *chanid, eNodeSocketDatatype type)

Definition at line 119 of file RE_engine.h.

Function Documentation

◆ RE_bake_engine_set_engine_parameters()

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

Definition at line 806 of file engine.c.

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

Referenced by bake().

◆ RE_engine_active_view_get()

const char* RE_engine_active_view_get ( RenderEngine engine)

Definition at line 596 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 602 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 
)

◆ RE_engine_begin_result()

struct 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_draw_acquire()

bool RE_engine_draw_acquire ( struct Render re)

◆ RE_engine_draw_release()

void RE_engine_draw_release ( struct Render re)

Definition at line 1218 of file engine.c.

References BLI_mutex_unlock(), Render::engine_draw_mutex, and RenderEngine::re.

Referenced by external_draw_scene_do_image().

◆ RE_engine_end_result()

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

◆ RE_engine_frame_set()

void RE_engine_frame_set ( struct 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 ( struct RenderEngine engine)

◆ RE_engine_get()

struct RenderEngine* RE_engine_get ( const struct Render re)

◆ RE_engine_get_camera_model_matrix()

void RE_engine_get_camera_model_matrix ( RenderEngine engine,
struct Object camera,
bool  use_spherical_stereo,
float  r_modelmat[16] 
)

◆ RE_engine_get_camera_shift_x()

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

◆ RE_engine_get_current_tiles()

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

◆ RE_engine_get_render_data()

struct RenderData* RE_engine_get_render_data ( struct Render re)

Definition at line 690 of file engine.c.

References Render::r.

Referenced by render_border_exec().

◆ RE_engine_get_result()

struct RenderResult* RE_engine_get_result ( struct RenderEngine engine)

Definition at line 481 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,
struct Object camera 
)

◆ RE_engine_has_render_context()

bool RE_engine_has_render_context ( struct RenderEngine engine)

Definition at line 1256 of file engine.c.

◆ RE_engine_is_external()

bool RE_engine_is_external ( const struct Render re)

◆ RE_engine_is_opengl()

bool RE_engine_is_opengl ( RenderEngineType render_type)

Definition at line 115 of file engine.c.

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

Referenced by wm_draw_region_bind().

◆ RE_engine_pass_by_index_get()

struct RenderPass* RE_engine_pass_by_index_get ( struct RenderEngine engine,
const char *  layer_name,
int  index 
)

◆ 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 ( struct Render re,
bool  do_all 
)

Definition at line 988 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, 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, GPU_backend_supported(), RenderEngine::has_grease_pencil, Render::i, Scene::id, RenderData::mode, ID::name, NULL, RenderResult::passes_allocated, Scene::r, Render::r, R_ANIMATION, R_BUTS_PREVIEW, R_EDGE_FRS, R_EXR_CACHE_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_USE_GPU_CONTEXT, RE_USE_POSTPROCESS, RE_USE_PREVIEW, render_result_exr_file_cache_write(), 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, RenderData::scemode, Render::scene, RenderStats::scene_name, THREAD_LOCK_WRITE, type, Scene::view_layers, Render::winx, and Render::winy.

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

◆ RE_engine_render_context_disable()

void RE_engine_render_context_disable ( struct RenderEngine engine)

Definition at line 1270 of file engine.c.

◆ RE_engine_render_context_enable()

void RE_engine_render_context_enable ( struct RenderEngine engine)

Definition at line 1265 of file engine.c.

◆ RE_engine_report()

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

Definition at line 548 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_supports_alembic_procedural()

bool RE_engine_supports_alembic_procedural ( const RenderEngineType render_type,
Scene scene 
)

Return true if the RenderEngineType has native support for direct loading of Alembic data. For Cycles, this also checks that the experimental feature set is enabled.

Definition at line 121 of file engine.c.

References BKE_scene_uses_cycles(), BKE_scene_uses_cycles_experimental_features(), RenderEngineType::flag, RE_USE_ALEMBIC_PROCEDURAL, and scene.

Referenced by BKE_cache_file_uses_render_procedural(), and uiTemplateCacheFileProcedural().

◆ RE_engine_test_break()

bool RE_engine_test_break ( RenderEngine engine)

◆ RE_engine_tile_highlight_clear_all()

void RE_engine_tile_highlight_clear_all ( struct RenderEngine engine)

◆ RE_engine_tile_highlight_set()

void RE_engine_tile_highlight_set ( struct RenderEngine engine,
int  x,
int  y,
int  width,
int  height,
bool  highlight 
)

Definition at line 1223 of file engine.c.

References BLI_rcti_init(), engine_tile_highlight_set(), height, tile, width, x, and y.

◆ RE_engine_update_memory_stats()

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

Definition at line 538 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 528 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,
struct 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 ( struct 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 59 of file engine.c.

References DRW_engines_register().

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

◆ RE_engines_init_experimental()

void RE_engines_init_experimental ( void  )

Definition at line 64 of file engine.c.

References DRW_engines_register_experimental().

Referenced by main().

◆ RE_engines_register()

void RE_engines_register ( RenderEngineType render_type)

◆ RE_layer_load_from_file()

void RE_layer_load_from_file ( struct RenderLayer layer,
struct ReportList reports,
const char *  filepath,
int  x,
int  y 
)

◆ RE_result_load_from_file()

void RE_result_load_from_file ( struct RenderResult result,
struct ReportList reports,
const char *  filepath 
)

Definition at line 2559 of file pipeline.c.

References BKE_reportf(), NULL, render_result_exr_file_read_path(), result, and RPT_ERROR.

Variable Documentation

◆ R_engines

ListBase R_engines
extern