54 {0,
nullptr, 0,
nullptr,
nullptr},
70 {0,
nullptr, 0,
nullptr,
nullptr},
123static void engine_unbind_display_space_shader(
RenderEngine * )
135 func = &rna_RenderEngine_update_func;
152 func = &rna_RenderEngine_render_func;
161static void engine_render_frame_finish(
RenderEngine *engine)
163 extern FunctionRNA rna_RenderEngine_render_frame_finish_func;
168 func = &rna_RenderEngine_render_frame_finish_func;
183 func = &rna_RenderEngine_draw_func;
197 const int pass_filter,
206 func = &rna_RenderEngine_bake_func;
222 extern FunctionRNA rna_RenderEngine_view_update_func;
227 func = &rna_RenderEngine_view_update_func;
239 extern FunctionRNA rna_RenderEngine_view_draw_func;
244 func = &rna_RenderEngine_view_draw_func;
256 extern FunctionRNA rna_RenderEngine_update_script_node_func;
262 func = &rna_RenderEngine_update_script_node_func;
273 extern FunctionRNA rna_RenderEngine_update_render_passes_func;
278 func = &rna_RenderEngine_update_render_passes_func;
290 extern FunctionRNA rna_RenderEngine_update_custom_camera_func;
295 func = &rna_RenderEngine_update_custom_camera_func;
306static bool rna_RenderEngine_unregister(
Main *bmain,
StructRNA *type)
327 const char *identifier,
332 const char *error_prefix =
"Registering render engine class:";
335 bool have_function[10];
338 dummy_engine.
type = &dummy_et;
341 nullptr, &RNA_RenderEngine, &dummy_engine);
344 if (validate(&dummy_engine_ptr,
data, have_function) != 0) {
348 if (strlen(identifier) >=
sizeof(dummy_et.
idname)) {
351 "%s '%s' is too long, maximum length is %d",
354 int(
sizeof(dummy_et.
idname)));
364 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
370 if (!(srna && rna_RenderEngine_unregister(bmain, srna))) {
373 "%s '%s', bl_idname '%s' %s",
377 srna ?
"is built-in" :
"could not be unregistered");
384 memcpy(et, &dummy_et,
sizeof(dummy_et));
395 et->
draw = (have_function[3]) ? engine_draw :
nullptr;
396 et->
bake = (have_function[4]) ? engine_bake :
nullptr;
421static void rna_RenderEngine_tempdir_get(
PointerRNA * ,
char *value)
426static int rna_RenderEngine_tempdir_length(
PointerRNA * )
457static void rna_RenderEngine_engine_frame_set(
RenderEngine *engine,
int frame,
float subframe)
482static void rna_RenderResult_stamp_data_add_field(
RenderResult *rr,
495static int rna_RenderPass_rect_get_length(
const PointerRNA *
ptr,
500 length[0] = rpass->rectx * rpass->recty;
501 length[1] = rpass->channels;
506static void rna_RenderPass_rect_get(
PointerRNA *
ptr,
float *values)
509 const size_t size_in_bytes =
sizeof(float) * rpass->rectx * rpass->recty * rpass->channels;
510 const float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
514 memset(values, 0, size_in_bytes);
518 memcpy(values, buffer, size_in_bytes);
524 float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
531 const size_t size_in_bytes =
sizeof(float) * rpass->rectx * rpass->recty * rpass->channels;
532 memcpy(buffer, values, size_in_bytes);
559 {0,
nullptr, 0,
nullptr,
nullptr},
567 "rna_RenderEngine_register",
568 "rna_RenderEngine_unregister",
569 "rna_RenderEngine_instance");
586 func,
"Perform finishing operations after all view layers in a frame were rendered");
612 "Filter to combined, diffuse, glossy and transmission passes",
616 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"Image width", 0, INT_MAX);
618 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"Image height", 0, INT_MAX);
666 func,
"Create render result to write linear floating-point render layers and passes");
667 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
669 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
671 parm =
RNA_def_int(func,
"w", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
673 parm =
RNA_def_int(func,
"h", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
680 "Single layer to get render result for");
686 "Single view to get render result for");
692 func,
"Signal that pixels have been updated and can be redrawn in the user interface");
698 "All pixels in the render result have been set and are final");
705 "Don't mark tile as done, don't merge results unless forced");
706 RNA_def_boolean(func,
"highlight",
false,
"Highlight",
"Don't mark tile as done yet");
708 func,
"do_merge_results",
false,
"Merge Results",
"Merge results even if cancel=true");
713 func,
"name",
nullptr, 0,
"Name",
"Name of the Pass, without view or channel tag");
715 parm =
RNA_def_int(func,
"channels", 0, 0, INT_MAX,
"Channels",
"", 0, INT_MAX);
718 func,
"chan_id",
nullptr, 0,
"Channel IDs",
"Channel names, one character per channel");
725 "Single layer to add render pass to");
734 "Test if the render operation should been canceled, this is a "
735 "fast call that should be used regularly for responsiveness");
739 func =
RNA_def_function(srna,
"pass_by_index_get",
"RE_engine_pass_by_index_get");
741 func,
"layer",
nullptr, 0,
"Layer",
"Name of render layer to get pass for");
743 parm =
RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Index of pass to get", 0, INT_MAX);
745 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"Index",
"Index of pass to get");
748 func =
RNA_def_function(srna,
"active_view_get",
"RE_engine_active_view_get");
749 parm =
RNA_def_string(func,
"view",
nullptr, 0,
"View",
"Single view active");
752 func =
RNA_def_function(srna,
"active_view_set",
"RE_engine_active_view_set");
754 func,
"view",
nullptr, 0,
"View",
"Single view to set as active");
757 func =
RNA_def_function(srna,
"camera_shift_x",
"RE_engine_get_camera_shift_x");
760 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
764 func =
RNA_def_function(srna,
"camera_model_matrix",
"RE_engine_get_camera_model_matrix");
767 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
776 "Normalized camera model matrix",
782 func =
RNA_def_function(srna,
"use_spherical_stereo",
"RE_engine_get_spherical_stereo");
785 parm =
RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
795 func =
RNA_def_function(srna,
"frame_set",
"rna_RenderEngine_engine_frame_set");
797 parm =
RNA_def_int(func,
"frame", 0, INT_MIN, INT_MAX,
"Frame",
"", INT_MIN, INT_MAX);
799 parm =
RNA_def_float(func,
"subframe", 0.0f, 0.0f, 1.0f,
"Subframe",
"", 0.0f, 1.0f);
802 func =
RNA_def_function(srna,
"update_progress",
"RE_engine_update_progress");
805 func,
"progress", 0, 0.0f, 1.0f,
"",
"Percentage of render that's done", 0.0f, 1.0f);
808 func =
RNA_def_function(srna,
"update_memory_stats",
"RE_engine_update_memory_stats");
816 "Current memory usage in megabytes",
820 func,
"memory_peak", 0, 0.0f,
FLT_MAX,
"",
"Peak memory usage in megabytes", 0.0f,
FLT_MAX);
826 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
831 "Set error message displaying after the render is finished");
832 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
835 func =
RNA_def_function(srna,
"bind_display_space_shader",
"engine_bind_display_space_shader");
837 "Bind GLSL fragment shader that converts linear colors to "
838 "display space colors using scene color management settings");
843 srna,
"unbind_display_space_shader",
"engine_unbind_display_space_shader");
845 func,
"Unbind GLSL display space shader, must always be called after binding the shader");
848 srna,
"support_display_space_shader",
"engine_support_display_space_shader");
850 "Test if GLSL display space shader is supported for the "
851 "combination of graphics card and scene settings");
857 func =
RNA_def_function(srna,
"get_preview_pixel_size",
"engine_get_preview_pixel_size");
859 "Get the pixel size that should be used for preview rendering");
862 parm =
RNA_def_int(func,
"pixel_size", 0, 1, 8,
"Pixel Size",
"", 1, 8);
865 func =
RNA_def_function(srna,
"free_blender_memory",
"RE_engine_free_blender_memory");
868 func =
RNA_def_function(srna,
"tile_highlight_set",
"RE_engine_tile_highlight_set");
870 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
872 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
874 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
876 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
881 func =
RNA_def_function(srna,
"tile_highlight_clear_all",
"RE_engine_tile_highlight_clear_all");
894 prop,
"rna_RenderEngine_camera_override_get",
nullptr,
nullptr,
nullptr);
912 prop,
"rna_RenderEngine_tempdir_get",
"rna_RenderEngine_tempdir_length",
nullptr);
926 func,
"Register a render pass that will be part of the render with the current settings");
933 parm =
RNA_def_int(func,
"channels", 1, 1, 8,
"Channels",
"", 1, 4);
935 parm =
RNA_def_string(func,
"chanid",
nullptr, 8,
"Channel IDs",
"");
956 "Use Preview Render",
957 "Render engine supports being used for rendering previews of materials, lights and worlds");
968 "Use EEVEE Viewport",
969 "Uses EEVEE for viewport shading in Material Preview shading mode");
976 "Use Custom Freestyle",
977 "Handles freestyle rendering on its own, instead of delegating it to EEVEE");
986 "Save images/movie to disk while rendering an animation. "
987 "Disabling image saving is only supported when bl_use_postprocess is also disabled.");
995 "Enable OpenGL context for the render method, for engines that render using OpenGL");
1002 "Use Custom Shading Nodes",
1003 "Don't expose Cycles and EEVEE shading nodes in the node editor user "
1004 "interface, so separate nodes can be used instead");
1020 prop,
"Use Alembic Procedural",
"Support loading Alembic data at render time");
1026 prop,
"Use MaterialX",
"Use MaterialX for exporting materials to Hydra");
1049 srna,
"Render Result",
"Result of rendering, including all layers and passes");
1051 func =
RNA_def_function(srna,
"load_from_file",
"RE_result_load_from_file");
1053 "Copies the pixels of this render result from an image file");
1061 "Filename to load into this render tile, must be no smaller than "
1062 "the render result");
1065 func =
RNA_def_function(srna,
"stamp_data_add_field",
"rna_RenderResult_stamp_data_add_field");
1067 parm =
RNA_def_string(func,
"field",
nullptr, 1024,
"Field",
"Name of the stamp field to add");
1069 parm =
RNA_def_string(func,
"value",
nullptr, 0,
"Value",
"Value of the stamp data");
1085 "rna_RenderResult_layers_begin",
1086 "rna_iterator_listbase_next",
1087 "rna_iterator_listbase_end",
1088 "rna_iterator_listbase_get",
1097 "rna_RenderResult_views_begin",
1098 "rna_iterator_listbase_next",
1099 "rna_iterator_listbase_end",
1100 "rna_iterator_listbase_get",
1139 func =
RNA_def_function(srna,
"find_by_type",
"rna_RenderPass_find_by_type");
1145 func,
"view",
nullptr, 0,
"View",
"Render view to get pass from");
1147 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"",
"The matching render pass");
1150 func =
RNA_def_function(srna,
"find_by_name",
"rna_RenderPass_find_by_name");
1155 func,
"view",
nullptr, 0,
"View",
"Render view to get pass from");
1157 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"",
"The matching render pass");
1172 func =
RNA_def_function(srna,
"load_from_file",
"RE_layer_load_from_file");
1174 "Copies the pixels of this renderlayer from an image file");
1182 "File path to load into this render tile, must be no smaller than the renderlayer");
1190 "Offset the position to copy from if the image is larger than the render layer",
1199 "Offset the position to copy from if the image is larger than the render layer",
1210 "rna_RenderLayer_passes_begin",
1211 "rna_iterator_listbase_next",
1212 "rna_iterator_listbase_end",
1213 "rna_iterator_listbase_get",
1255 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 ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define BPy_BEGIN_ALLOW_THREADS
#define BPy_END_ALLOW_THREADS
T * DEG_get_evaluated(const Depsgraph *depsgraph, T *id)
#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, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
GPUShader * GPU_shader_get_builtin_shader(eGPUBuiltinShader shader)
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
int(*)(bContext *C, PointerRNA *ptr, FunctionRNA *func, ParameterList *list) StructCallbackFunc
void(*)(void *data) StructFreeFunc
BMesh const char void * data
BPy_StructRNA * depsgraph
float length(VecOp< float, D >) RET
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)
const PointerRNA PointerRNA_NULL
void * RNA_struct_blender_type_get(StructRNA *srna)
void RNA_parameter_list_free(ParameterList *parms)
void rna_iterator_listbase_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, ListBase *lb, IteratorSkipFunc skip)
void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, const void *value)
ParameterList * RNA_parameter_list_create(ParameterList *parms, PointerRNA *, FunctionRNA *func)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, StructRNA *type, void *data)
PointerRNA RNA_id_pointer_create(ID *id)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
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_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)
void(* update_custom_camera)(struct RenderEngine *engine, struct Camera *cam)
struct Depsgraph * depsgraph
struct Object * camera_override
void * BKE_tempdir_session