Blender V4.3
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.hh"
#include "BLI_threads.h"

Go to the source code of this file.

Classes

struct  RenderEngineType
 
struct  RenderEngine
 

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
 

Enumerations

enum  RenderEngineTypeFlag {
  RE_INTERNAL = (1 << 0) , RE_USE_PREVIEW = (1 << 1) , RE_USE_POSTPROCESS = (1 << 2) , RE_USE_EEVEE_VIEWPORT = (1 << 3) ,
  RE_USE_SHADING_NODES_CUSTOM = (1 << 4) , RE_USE_SPHERICAL_STEREO = (1 << 5) , RE_USE_STEREO_VIEWPORT = (1 << 6) , RE_USE_GPU_CONTEXT = (1 << 7) ,
  RE_USE_CUSTOM_FREESTYLE = (1 << 8) , RE_USE_NO_IMAGE_SAVE = (1 << 9) , RE_USE_ALEMBIC_PROCEDURAL = (1 << 10) , RE_USE_MATERIALX = (1 << 11)
}
 
enum  RenderEngineFlag {
  RE_ENGINE_ANIMATION = (1 << 0) , RE_ENGINE_PREVIEW = (1 << 1) , RE_ENGINE_DO_DRAW = (1 << 2) , RE_ENGINE_DO_UPDATE = (1 << 3) ,
  RE_ENGINE_RENDERING = (1 << 4) , RE_ENGINE_HIGHLIGHT_TILES = (1 << 5) , RE_ENGINE_CAN_DRAW = (1 << 6)
}
 

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)
 
struct RenderEngineRE_view_engine_get (const struct ViewRender *view_render)
 
bool RE_engine_draw_acquire (struct Render *re)
 
void RE_engine_draw_release (struct Render *re)
 
bool RE_engine_gpu_context_create (struct RenderEngine *engine)
 
void RE_engine_gpu_context_destroy (struct RenderEngine *engine)
 
bool RE_engine_gpu_context_enable (struct RenderEngine *engine)
 
void RE_engine_gpu_context_disable (struct RenderEngine *engine)
 
void RE_engine_gpu_context_lock (struct RenderEngine *engine)
 
void RE_engine_gpu_context_unlock (struct RenderEngine *engine)
 
void RE_engines_init (void)
 
void RE_engines_exit (void)
 
void RE_engines_register (RenderEngineType *render_type)
 
bool RE_engine_supports_alembic_procedural (const RenderEngineType *render_type, Scene *scene)
 
RenderEngineTypeRE_engines_find (const char *idname)
 
const rctiRE_engine_get_current_tiles (struct Render *re, int *r_total_tiles)
 
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
 

Typedef Documentation

◆ RenderEngine

typedef struct RenderEngine RenderEngine

◆ RenderEngineType

typedef struct RenderEngineType 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 125 of file RE_engine.h.

Enumeration Type Documentation

◆ RenderEngineFlag

RenderEngine.flag

Enumerator
RE_ENGINE_ANIMATION 
RE_ENGINE_PREVIEW 
RE_ENGINE_DO_DRAW 
RE_ENGINE_DO_UPDATE 
RE_ENGINE_RENDERING 
RE_ENGINE_HIGHLIGHT_TILES 
RE_ENGINE_CAN_DRAW 

Definition at line 62 of file RE_engine.h.

◆ RenderEngineTypeFlag

RenderEngineType.flag

Enumerator
RE_INTERNAL 
RE_USE_PREVIEW 
RE_USE_POSTPROCESS 
RE_USE_EEVEE_VIEWPORT 
RE_USE_SHADING_NODES_CUSTOM 
RE_USE_SPHERICAL_STEREO 
RE_USE_STEREO_VIEWPORT 
RE_USE_GPU_CONTEXT 
RE_USE_CUSTOM_FREESTYLE 
RE_USE_NO_IMAGE_SAVE 
RE_USE_ALEMBIC_PROCEDURAL 
RE_USE_MATERIALX 

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

◆ RE_engine_active_view_get()

const char * RE_engine_active_view_get ( RenderEngine * engine)

Definition at line 580 of file intern/engine.cc.

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 586 of file intern/engine.cc.

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 400 of file intern/engine.cc.

References RenderEngine::re, RE_create_render_pass(), and BaseRender::result.

◆ RE_engine_begin_result()

◆ RE_engine_create()

◆ RE_engine_draw_acquire()

bool RE_engine_draw_acquire ( struct Render * re)

Acquire render engine for drawing via its draw() callback.

If drawing is not possible false is returned. If drawing is possible then the engine is "acquired" so that it can not be freed by the render pipeline.

Drawing is possible if the engine has the draw() callback and it is in its render() callback.

Definition at line 1196 of file intern/engine.cc.

References BLI_mutex_lock(), BLI_mutex_unlock(), RenderEngineType::draw, BaseRender::engine, BaseRender::engine_draw_mutex, RenderEngine::flag, RE_ENGINE_CAN_DRAW, and RenderEngine::type.

Referenced by DRW_engine_external_acquire_for_image_editor().

◆ RE_engine_draw_release()

void RE_engine_draw_release ( struct Render * re)

Definition at line 1226 of file intern/engine.cc.

References BLI_mutex_unlock(), and BaseRender::engine_draw_mutex.

Referenced by external_draw_scene_do_image().

◆ RE_engine_end_result()

◆ RE_engine_frame_set()

◆ RE_engine_free()

◆ 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()

const rcti * RE_engine_get_current_tiles ( struct Render * re,
int * r_total_tiles )

◆ RE_engine_get_render_data()

struct RenderData * RE_engine_get_render_data ( struct Render * re)

Definition at line 640 of file intern/engine.cc.

References Render::r.

Referenced by render_border_exec().

◆ RE_engine_get_result()

struct RenderResult * RE_engine_get_result ( struct RenderEngine * engine)

◆ RE_engine_get_spherical_stereo()

bool RE_engine_get_spherical_stereo ( RenderEngine * engine,
struct Object * camera )

◆ RE_engine_gpu_context_create()

bool RE_engine_gpu_context_create ( struct RenderEngine * engine)

◆ RE_engine_gpu_context_destroy()

◆ RE_engine_gpu_context_disable()

◆ RE_engine_gpu_context_enable()

◆ RE_engine_gpu_context_lock()

◆ RE_engine_gpu_context_unlock()

◆ RE_engine_is_external()

bool RE_engine_is_external ( const struct Render * re)

◆ 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()

◆ RE_engine_report()

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

◆ 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 108 of file intern/engine.cc.

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

Referenced by BKE_cache_file_uses_render_procedural(), and uiTemplateCacheFileProcedural().

◆ RE_engine_test_break()

◆ 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 )

◆ RE_engine_update_memory_stats()

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

◆ RE_engine_update_progress()

void RE_engine_update_progress ( RenderEngine * engine,
float progress )

◆ RE_engine_update_render_passes()

◆ RE_engine_update_result()

◆ RE_engine_update_stats()

◆ 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()

◆ RE_engines_init()

void RE_engines_init ( void )

Definition at line 57 of file intern/engine.cc.

References DRW_engines_register().

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

◆ 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 )

◆ RE_view_engine_get()

struct RenderEngine * RE_view_engine_get ( const struct ViewRender * view_render)

Variable Documentation

◆ R_engines