64 {0,
nullptr, 0,
nullptr,
nullptr},
80 {0,
nullptr, 0,
nullptr,
nullptr},
129static void engine_unbind_display_space_shader(
RenderEngine * )
141 func = &rna_RenderEngine_update_func;
158 func = &rna_RenderEngine_render_func;
167static void engine_render_frame_finish(
RenderEngine *engine)
169 extern FunctionRNA rna_RenderEngine_render_frame_finish_func;
174 func = &rna_RenderEngine_render_frame_finish_func;
189 func = &rna_RenderEngine_draw_func;
203 const int pass_filter,
212 func = &rna_RenderEngine_bake_func;
228 extern FunctionRNA rna_RenderEngine_view_update_func;
233 func = &rna_RenderEngine_view_update_func;
245 extern FunctionRNA rna_RenderEngine_view_draw_func;
250 func = &rna_RenderEngine_view_draw_func;
262 extern FunctionRNA rna_RenderEngine_update_script_node_func;
268 func = &rna_RenderEngine_update_script_node_func;
279 extern FunctionRNA rna_RenderEngine_update_render_passes_func;
284 func = &rna_RenderEngine_update_render_passes_func;
296static bool rna_RenderEngine_unregister(
Main *bmain,
StructRNA *type)
317 const char *identifier,
322 const char *error_prefix =
"Registering render engine class:";
325 bool have_function[9];
328 dummy_engine.
type = &dummy_et;
333 if (validate(&dummy_engine_ptr, data, have_function) != 0) {
337 if (strlen(identifier) >=
sizeof(dummy_et.
idname)) {
340 "%s '%s' is too long, maximum length is %d",
343 int(
sizeof(dummy_et.
idname)));
353 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
359 if (!(srna && rna_RenderEngine_unregister(bmain, srna))) {
362 "%s '%s', bl_idname '%s' %s",
366 srna ?
"is built-in" :
"could not be unregistered");
374 memcpy(et, &dummy_et,
sizeof(dummy_et));
382 et->
update = (have_function[0]) ? engine_update : nullptr;
383 et->
render = (have_function[1]) ? engine_render : nullptr;
385 et->
draw = (have_function[3]) ? engine_draw : nullptr;
386 et->
bake = (have_function[4]) ? engine_bake : nullptr;
387 et->
view_update = (have_function[5]) ? engine_view_update : nullptr;
388 et->
view_draw = (have_function[6]) ? engine_view_draw : nullptr;
410static void rna_RenderEngine_tempdir_get(
PointerRNA * ,
char *value)
415static int rna_RenderEngine_tempdir_length(
PointerRNA * )
448static void rna_RenderEngine_engine_frame_set(
RenderEngine *engine,
int frame,
float subframe)
473static void rna_RenderResult_stamp_data_add_field(
RenderResult *rr,
486static int rna_RenderPass_rect_get_length(
const PointerRNA *
ptr,
491 length[0] = rpass->rectx * rpass->recty;
492 length[1] = rpass->channels;
494 return length[0] * length[1];
497static void rna_RenderPass_rect_get(
PointerRNA *
ptr,
float *values)
500 const size_t size_in_bytes =
sizeof(
float) * rpass->rectx * rpass->recty * rpass->channels;
501 const float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
505 memset(values, 0, size_in_bytes);
509 memcpy(values, buffer, size_in_bytes);
515 float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
522 const size_t size_in_bytes =
sizeof(
float) * rpass->rectx * rpass->recty * rpass->channels;
523 memcpy(buffer, values, size_in_bytes);
550 {0,
nullptr, 0,
nullptr,
nullptr},
558 "rna_RenderEngine_register",
559 "rna_RenderEngine_unregister",
560 "rna_RenderEngine_instance");
577 func,
"Perform finishing operations after all view layers in a frame were rendered");
603 "Filter to combined, diffuse, glossy and transmission passes",
607 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"Image width", 0, INT_MAX);
609 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"Image height", 0, INT_MAX);
652 func,
"Create render result to write linear floating-point render layers and passes");
653 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
655 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
657 parm =
RNA_def_int(func,
"w", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
659 parm =
RNA_def_int(func,
"h", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
666 "Single layer to get render result for");
672 "Single view to get render result for");
678 func,
"Signal that pixels have been updated and can be redrawn in the user interface");
684 "All pixels in the render result have been set and are final");
691 "Don't mark tile as done, don't merge results unless forced");
692 RNA_def_boolean(func,
"highlight",
false,
"Highlight",
"Don't mark tile as done yet");
694 func,
"do_merge_results",
false,
"Merge Results",
"Merge results even if cancel=true");
699 func,
"name",
nullptr, 0,
"Name",
"Name of the Pass, without view or channel tag");
701 parm =
RNA_def_int(func,
"channels", 0, 0, INT_MAX,
"Channels",
"", 0, INT_MAX);
704 func,
"chan_id",
nullptr, 0,
"Channel IDs",
"Channel names, one character per channel");
711 "Single layer to add render pass to");
720 "Test if the render operation should been canceled, this is a "
721 "fast call that should be used regularly for responsiveness");
725 func =
RNA_def_function(srna,
"pass_by_index_get",
"RE_engine_pass_by_index_get");
727 func,
"layer",
nullptr, 0,
"Layer",
"Name of render layer to get pass for");
729 parm =
RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Index of pass to get", 0, INT_MAX);
731 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"Index",
"Index of pass to get");
734 func =
RNA_def_function(srna,
"active_view_get",
"RE_engine_active_view_get");
735 parm =
RNA_def_string(func,
"view",
nullptr, 0,
"View",
"Single view active");
738 func =
RNA_def_function(srna,
"active_view_set",
"RE_engine_active_view_set");
740 func,
"view",
nullptr, 0,
"View",
"Single view to set as active");
743 func =
RNA_def_function(srna,
"camera_shift_x",
"RE_engine_get_camera_shift_x");
746 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
750 func =
RNA_def_function(srna,
"camera_model_matrix",
"RE_engine_get_camera_model_matrix");
753 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
762 "Normalized camera model matrix",
768 func =
RNA_def_function(srna,
"use_spherical_stereo",
"RE_engine_get_spherical_stereo");
771 parm =
RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
781 func =
RNA_def_function(srna,
"frame_set",
"rna_RenderEngine_engine_frame_set");
783 parm =
RNA_def_int(func,
"frame", 0, INT_MIN, INT_MAX,
"Frame",
"", INT_MIN, INT_MAX);
785 parm =
RNA_def_float(func,
"subframe", 0.0f, 0.0f, 1.0f,
"Subframe",
"", 0.0f, 1.0f);
788 func =
RNA_def_function(srna,
"update_progress",
"RE_engine_update_progress");
791 func,
"progress", 0, 0.0f, 1.0f,
"",
"Percentage of render that's done", 0.0f, 1.0f);
794 func =
RNA_def_function(srna,
"update_memory_stats",
"RE_engine_update_memory_stats");
802 "Current memory usage in megabytes",
806 func,
"memory_peak", 0, 0.0f,
FLT_MAX,
"",
"Peak memory usage in megabytes", 0.0f,
FLT_MAX);
812 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
817 "Set error message displaying after the render is finished");
818 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
821 func =
RNA_def_function(srna,
"bind_display_space_shader",
"engine_bind_display_space_shader");
823 "Bind GLSL fragment shader that converts linear colors to "
824 "display space colors using scene color management settings");
829 srna,
"unbind_display_space_shader",
"engine_unbind_display_space_shader");
831 func,
"Unbind GLSL display space shader, must always be called after binding the shader");
834 srna,
"support_display_space_shader",
"engine_support_display_space_shader");
836 "Test if GLSL display space shader is supported for the "
837 "combination of graphics card and scene settings");
843 func =
RNA_def_function(srna,
"get_preview_pixel_size",
"engine_get_preview_pixel_size");
845 "Get the pixel size that should be used for preview rendering");
848 parm =
RNA_def_int(func,
"pixel_size", 0, 1, 8,
"Pixel Size",
"", 1, 8);
851 func =
RNA_def_function(srna,
"free_blender_memory",
"RE_engine_free_blender_memory");
854 func =
RNA_def_function(srna,
"tile_highlight_set",
"RE_engine_tile_highlight_set");
856 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
858 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
860 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
862 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
867 func =
RNA_def_function(srna,
"tile_highlight_clear_all",
"RE_engine_tile_highlight_clear_all");
880 prop,
"rna_RenderEngine_camera_override_get",
nullptr,
nullptr,
nullptr);
898 prop,
"rna_RenderEngine_tempdir_get",
"rna_RenderEngine_tempdir_length",
nullptr);
912 func,
"Register a render pass that will be part of the render with the current settings");
919 parm =
RNA_def_int(func,
"channels", 1, 1, 8,
"Channels",
"", 1, 4);
921 parm =
RNA_def_string(func,
"chanid",
nullptr, 8,
"Channel IDs",
"");
942 "Use Preview Render",
943 "Render engine supports being used for rendering previews of materials, lights and worlds");
954 "Use EEVEE Viewport",
955 "Uses EEVEE for viewport shading in Material Preview shading mode");
962 "Use Custom Freestyle",
963 "Handles freestyle rendering on its own, instead of delegating it to EEVEE");
972 "Save images/movie to disk while rendering an animation. "
973 "Disabling image saving is only supported when bl_use_postprocess is also disabled.");
981 "Enable OpenGL context for the render method, for engines that render using OpenGL");
988 "Use Custom Shading Nodes",
989 "Don't expose Cycles and EEVEE shading nodes in the node editor user "
990 "interface, so separate nodes can be used instead");
1006 prop,
"Use Alembic Procedural",
"Support loading Alembic data at render time");
1012 prop,
"Use MaterialX",
"Use MaterialX for exporting materials to Hydra");
1035 srna,
"Render Result",
"Result of rendering, including all layers and passes");
1037 func =
RNA_def_function(srna,
"load_from_file",
"RE_result_load_from_file");
1039 "Copies the pixels of this render result from an image file");
1047 "Filename to load into this render tile, must be no smaller than "
1048 "the render result");
1051 func =
RNA_def_function(srna,
"stamp_data_add_field",
"rna_RenderResult_stamp_data_add_field");
1053 parm =
RNA_def_string(func,
"field",
nullptr, 1024,
"Field",
"Name of the stamp field to add");
1055 parm =
RNA_def_string(func,
"value",
nullptr, 0,
"Value",
"Value of the stamp data");
1071 "rna_RenderResult_layers_begin",
1072 "rna_iterator_listbase_next",
1073 "rna_iterator_listbase_end",
1074 "rna_iterator_listbase_get",
1083 "rna_RenderResult_views_begin",
1084 "rna_iterator_listbase_next",
1085 "rna_iterator_listbase_end",
1086 "rna_iterator_listbase_get",
1125 func =
RNA_def_function(srna,
"find_by_type",
"rna_RenderPass_find_by_type");
1131 func,
"view",
nullptr, 0,
"View",
"Render view to get pass from");
1133 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"",
"The matching render pass");
1136 func =
RNA_def_function(srna,
"find_by_name",
"rna_RenderPass_find_by_name");
1141 func,
"view",
nullptr, 0,
"View",
"Render view to get pass from");
1143 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"",
"The matching render pass");
1158 func =
RNA_def_function(srna,
"load_from_file",
"RE_layer_load_from_file");
1160 "Copies the pixels of this renderlayer from an image file");
1168 "File path to load into this render tile, must be no smaller than the renderlayer");
1176 "Offset the position to copy from if the image is larger than the render layer",
1185 "Offset the position to copy from if the image is larger than the render layer",
1196 "rna_RenderLayer_passes_begin",
1197 "rna_iterator_listbase_next",
1198 "rna_iterator_listbase_end",
1199 "rna_iterator_listbase_get",
1241 prop,
"rna_RenderPass_rect_get",
"rna_RenderPass_rect_set",
nullptr);
void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
int BKE_render_preview_pixel_size(const RenderData *r)
void BLI_kdtree_nd_ free(KDTree *tree)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define BPy_BEGIN_ALLOW_THREADS
#define BPy_END_ALLOW_THREADS
Object * DEG_get_evaluated_object(const Depsgraph *depsgraph, Object *object)
Object is a sort of wrapper for general info.
#define RE_PASSNAME_COMBINED
@ SCE_PASS_SUBSURFACE_INDIRECT
@ SCE_PASS_SUBSURFACE_COLOR
@ SCE_PASS_DIFFUSE_DIRECT
@ SCE_PASS_GLOSSY_INDIRECT
@ SCE_PASS_TRANSM_INDIRECT
@ SCE_PASS_DIFFUSE_INDIRECT
@ SCE_PASS_SUBSURFACE_DIRECT
void ED_render_engine_changed(Main *bmain, bool update_scene_data)
void GPU_shader_bind(GPUShader *shader)
GPUShader * GPU_shader_get_builtin_shader(eGPUBuiltinShader shader)
bool IMB_colormanagement_support_glsl_draw(const ColorManagedViewSettings *view_settings)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
@ RE_USE_CUSTOM_FREESTYLE
@ RE_USE_SHADING_NODES_CUSTOM
@ RE_USE_ALEMBIC_PROCEDURAL
@ RE_USE_SPHERICAL_STEREO
@ RE_ENGINE_HIGHLIGHT_TILES
#define RNA_MAX_ARRAY_DIMENSION
int(*)(PointerRNA *ptr, void *data, bool *have_function) StructValidateFunc
void(*)(void *data) StructFreeFunc
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
struct GPUShader GPUShader
const Depsgraph * depsgraph
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
Object * RE_GetCamera(Render *re)
void RE_engine_frame_set(RenderEngine *engine, int frame, float subframe)
void RE_engines_register(RenderEngineType *render_type)
RenderData * RE_engine_get_render_data(Render *re)
void *(* MEM_mallocN)(size_t len, const char *str)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, ListBase *lb, IteratorSkipFunc skip)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
PointerRNA rna_pointer_inherit_refine(const PointerRNA *ptr, StructRNA *type, void *data)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_define_verify_sdna(bool verify)
void RNA_def_property_enum_native_type(PropertyRNA *prop, const char *native_enum_type)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
PropertyRNA * RNA_def_float_matrix(StructOrFunctionRNA *cont_, const char *identifier, const int rows, const int columns, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength)
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
PropertyRNA * RNA_def_string_file_name(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_struct_free_extension(StructRNA *srna, ExtensionRNA *rna_ext)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void rna_RenderPass_rect_set(PointerRNA *ptr, const float *values)
void rna_def_view_layer_common(BlenderRNA *brna, StructRNA *srna, bool scene)
const EnumPropertyItem rna_enum_bake_pass_type_items[]
static void rna_def_render_pass(BlenderRNA *brna)
static void rna_def_render_view(BlenderRNA *brna)
static void rna_def_render_engine(BlenderRNA *brna)
static void rna_def_render_passes(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_hydra_render_engine(BlenderRNA *brna)
void RNA_def_render(BlenderRNA *brna)
const EnumPropertyItem rna_enum_render_pass_type_items[]
static void rna_def_render_layer(BlenderRNA *brna)
static void rna_def_render_result(BlenderRNA *brna)
const EnumPropertyItem rna_enum_wm_report_items[]
RenderPass * RE_pass_find_by_type(RenderLayer *rl, int passtype, const char *viewname)
RenderPass * RE_pass_find_by_name(RenderLayer *rl, const char *name, const char *viewname)
void RE_FreeAllPersistentData()
void(* render)(struct RenderEngine *engine, struct Depsgraph *depsgraph)
void(* view_draw)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)
void(* update)(struct RenderEngine *engine, struct Main *bmain, struct Depsgraph *depsgraph)
void(* view_update)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)
void(* draw)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)
void(* render_frame_finish)(struct RenderEngine *engine)
void(* update_script_node)(struct RenderEngine *engine, struct bNodeTree *ntree, struct bNode *node)
void(* update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
void(* bake)(struct RenderEngine *engine, struct Depsgraph *depsgraph, struct Object *object, int pass_type, int pass_filter, int width, int height)
struct Depsgraph * depsgraph
struct Object * camera_override
void * BKE_tempdir_session