40 {0,
nullptr, 0,
nullptr,
nullptr},
93static void engine_unbind_display_space_shader(
RenderEngine * )
105 func = &rna_RenderEngine_update_func;
122 func = &rna_RenderEngine_render_func;
131static void engine_render_frame_finish(
RenderEngine *engine)
133 extern FunctionRNA rna_RenderEngine_render_frame_finish_func;
138 func = &rna_RenderEngine_render_frame_finish_func;
153 func = &rna_RenderEngine_draw_func;
167 const int pass_filter,
176 func = &rna_RenderEngine_bake_func;
192 extern FunctionRNA rna_RenderEngine_view_update_func;
197 func = &rna_RenderEngine_view_update_func;
209 extern FunctionRNA rna_RenderEngine_view_draw_func;
214 func = &rna_RenderEngine_view_draw_func;
226 extern FunctionRNA rna_RenderEngine_update_script_node_func;
232 func = &rna_RenderEngine_update_script_node_func;
243 extern FunctionRNA rna_RenderEngine_update_render_passes_func;
248 func = &rna_RenderEngine_update_render_passes_func;
260 extern FunctionRNA rna_RenderEngine_update_custom_camera_func;
265 func = &rna_RenderEngine_update_custom_camera_func;
276static bool rna_RenderEngine_unregister(
Main *bmain,
StructRNA *type)
297 const char *identifier,
302 const char *error_prefix =
"Registering render engine class:";
305 bool have_function[10];
308 dummy_engine.
type = &dummy_et;
311 nullptr, &RNA_RenderEngine, &dummy_engine);
314 if (validate(&dummy_engine_ptr,
data, have_function) != 0) {
318 if (strlen(identifier) >=
sizeof(dummy_et.
idname)) {
321 "%s '%s' is too long, maximum length is %d",
324 int(
sizeof(dummy_et.
idname)));
334 "%s '%s', bl_idname '%s' has been registered before, unregistering previous",
340 if (!(srna && rna_RenderEngine_unregister(bmain, srna))) {
343 "%s '%s', bl_idname '%s' %s",
347 srna ?
"is built-in" :
"could not be unregistered");
354 memcpy(et, &dummy_et,
sizeof(dummy_et));
365 et->
draw = (have_function[3]) ? engine_draw :
nullptr;
366 et->
bake = (have_function[4]) ? engine_bake :
nullptr;
391static void rna_RenderEngine_tempdir_get(
PointerRNA * ,
char *value)
396static int rna_RenderEngine_tempdir_length(
PointerRNA * )
427static void rna_RenderEngine_engine_frame_set(
RenderEngine *engine,
int frame,
float subframe)
452static void rna_RenderResult_stamp_data_add_field(
RenderResult *rr,
465static int rna_RenderPass_rect_get_length(
const PointerRNA *
ptr,
470 length[0] = rpass->rectx * rpass->recty;
471 length[1] = rpass->channels;
476static void rna_RenderPass_rect_get(
PointerRNA *
ptr,
float *values)
479 const size_t size_in_bytes =
sizeof(
float) * rpass->rectx * rpass->recty * rpass->channels;
480 const float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
484 memset(values, 0, size_in_bytes);
488 memcpy(values, buffer, size_in_bytes);
494 float *buffer = rpass->ibuf ? rpass->ibuf->float_buffer.data :
nullptr;
501 const size_t size_in_bytes =
sizeof(
float) * rpass->rectx * rpass->recty * rpass->channels;
502 memcpy(buffer, values, size_in_bytes);
524 {0,
nullptr, 0,
nullptr,
nullptr},
532 "rna_RenderEngine_register",
533 "rna_RenderEngine_unregister",
534 "rna_RenderEngine_instance");
551 func,
"Perform finishing operations after all view layers in a frame were rendered");
577 "Filter to combined, diffuse, glossy and transmission passes",
581 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"Image width", 0, INT_MAX);
583 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"Image height", 0, INT_MAX);
631 func,
"Create render result to write linear floating-point render layers and passes");
632 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
634 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
636 parm =
RNA_def_int(func,
"w", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
638 parm =
RNA_def_int(func,
"h", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
645 "Single layer to get render result for");
651 "Single view to get render result for");
657 func,
"Signal that pixels have been updated and can be redrawn in the user interface");
663 "All pixels in the render result have been set and are final");
670 "Don't mark tile as done, don't merge results unless forced");
671 RNA_def_boolean(func,
"highlight",
false,
"Highlight",
"Don't mark tile as done yet");
673 func,
"do_merge_results",
false,
"Merge Results",
"Merge results even if cancel=true");
678 func,
"name",
nullptr, 0,
"Name",
"Name of the Pass, without view or channel tag");
680 parm =
RNA_def_int(func,
"channels", 0, 0, INT_MAX,
"Channels",
"", 0, INT_MAX);
683 func,
"chan_id",
nullptr, 0,
"Channel IDs",
"Channel names, one character per channel");
690 "Single layer to add render pass to");
699 "Test if the render operation should been canceled, this is a "
700 "fast call that should be used regularly for responsiveness");
704 func =
RNA_def_function(srna,
"pass_by_index_get",
"RE_engine_pass_by_index_get");
706 func,
"layer",
nullptr, 0,
"Layer",
"Name of render layer to get pass for");
708 parm =
RNA_def_int(func,
"index", 0, 0, INT_MAX,
"Index",
"Index of pass to get", 0, INT_MAX);
710 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"Index",
"Index of pass to get");
713 func =
RNA_def_function(srna,
"active_view_get",
"RE_engine_active_view_get");
714 parm =
RNA_def_string(func,
"view",
nullptr, 0,
"View",
"Single view active");
717 func =
RNA_def_function(srna,
"active_view_set",
"RE_engine_active_view_set");
719 func,
"view",
nullptr, 0,
"View",
"Single view to set as active");
722 func =
RNA_def_function(srna,
"camera_shift_x",
"RE_engine_get_camera_shift_x");
725 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
729 func =
RNA_def_function(srna,
"camera_model_matrix",
"RE_engine_get_camera_model_matrix");
732 RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
741 "Normalized camera model matrix",
747 func =
RNA_def_function(srna,
"use_spherical_stereo",
"RE_engine_get_spherical_stereo");
750 parm =
RNA_def_boolean(func,
"use_spherical_stereo",
false,
"Spherical Stereo",
"");
760 func =
RNA_def_function(srna,
"frame_set",
"rna_RenderEngine_engine_frame_set");
762 parm =
RNA_def_int(func,
"frame", 0, INT_MIN, INT_MAX,
"Frame",
"", INT_MIN, INT_MAX);
764 parm =
RNA_def_float(func,
"subframe", 0.0f, 0.0f, 1.0f,
"Subframe",
"", 0.0f, 1.0f);
767 func =
RNA_def_function(srna,
"update_progress",
"RE_engine_update_progress");
770 func,
"progress", 0, 0.0f, 1.0f,
"",
"Percentage of render that's done", 0.0f, 1.0f);
773 func =
RNA_def_function(srna,
"update_memory_stats",
"RE_engine_update_memory_stats");
781 "Current memory usage in megabytes",
785 func,
"memory_peak", 0, 0.0f,
FLT_MAX,
"",
"Peak memory usage in megabytes", 0.0f,
FLT_MAX);
791 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
796 "Set error message displaying after the render is finished");
797 parm =
RNA_def_string(func,
"message",
nullptr, 0,
"Report Message",
"");
800 func =
RNA_def_function(srna,
"bind_display_space_shader",
"engine_bind_display_space_shader");
802 "Bind GLSL fragment shader that converts linear colors to "
803 "display space colors using scene color management settings");
808 srna,
"unbind_display_space_shader",
"engine_unbind_display_space_shader");
810 func,
"Unbind GLSL display space shader, must always be called after binding the shader");
813 srna,
"support_display_space_shader",
"engine_support_display_space_shader");
815 "Test if GLSL display space shader is supported for the "
816 "combination of graphics card and scene settings");
822 func =
RNA_def_function(srna,
"get_preview_pixel_size",
"engine_get_preview_pixel_size");
824 "Get the pixel size that should be used for preview rendering");
827 parm =
RNA_def_int(func,
"pixel_size", 0, 1, 8,
"Pixel Size",
"", 1, 8);
830 func =
RNA_def_function(srna,
"free_blender_memory",
"RE_engine_free_blender_memory");
833 func =
RNA_def_function(srna,
"tile_highlight_set",
"RE_engine_tile_highlight_set");
835 parm =
RNA_def_int(func,
"x", 0, 0, INT_MAX,
"X",
"", 0, INT_MAX);
837 parm =
RNA_def_int(func,
"y", 0, 0, INT_MAX,
"Y",
"", 0, INT_MAX);
839 parm =
RNA_def_int(func,
"width", 0, 0, INT_MAX,
"Width",
"", 0, INT_MAX);
841 parm =
RNA_def_int(func,
"height", 0, 0, INT_MAX,
"Height",
"", 0, INT_MAX);
846 func =
RNA_def_function(srna,
"tile_highlight_clear_all",
"RE_engine_tile_highlight_clear_all");
859 prop,
"rna_RenderEngine_camera_override_get",
nullptr,
nullptr,
nullptr);
877 prop,
"rna_RenderEngine_tempdir_get",
"rna_RenderEngine_tempdir_length",
nullptr);
891 func,
"Register a render pass that will be part of the render with the current settings");
898 parm =
RNA_def_int(func,
"channels", 1, 1, 8,
"Channels",
"", 1, 4);
900 parm =
RNA_def_string(func,
"chanid",
nullptr, 8,
"Channel IDs",
"");
921 "Use Preview Render",
922 "Render engine supports being used for rendering previews of materials, lights and worlds");
933 "Use EEVEE Viewport",
934 "Uses EEVEE for viewport shading in Material Preview shading mode");
941 "Use Custom Freestyle",
942 "Handles freestyle rendering on its own, instead of delegating it to EEVEE");
951 "Save images/movie to disk while rendering an animation. "
952 "Disabling image saving is only supported when bl_use_postprocess is also disabled.");
960 "Enable OpenGL context for the render method, for engines that render using OpenGL");
967 "Use Custom Shading Nodes",
968 "Don't expose Cycles and EEVEE shading nodes in the node editor user "
969 "interface, so separate nodes can be used instead");
985 prop,
"Use MaterialX",
"Use MaterialX for exporting materials to Hydra");
1008 srna,
"Render Result",
"Result of rendering, including all layers and passes");
1010 func =
RNA_def_function(srna,
"load_from_file",
"RE_result_load_from_file");
1012 "Copies the pixels of this render result from an image file");
1020 "Filename to load into this render tile, must be no smaller than "
1021 "the render result");
1024 func =
RNA_def_function(srna,
"stamp_data_add_field",
"rna_RenderResult_stamp_data_add_field");
1026 parm =
RNA_def_string(func,
"field",
nullptr, 1024,
"Field",
"Name of the stamp field to add");
1028 parm =
RNA_def_string(func,
"value",
nullptr, 0,
"Value",
"Value of the stamp data");
1044 "rna_RenderResult_layers_begin",
1045 "rna_iterator_listbase_next",
1046 "rna_iterator_listbase_end",
1047 "rna_iterator_listbase_get",
1056 "rna_RenderResult_views_begin",
1057 "rna_iterator_listbase_next",
1058 "rna_iterator_listbase_end",
1059 "rna_iterator_listbase_get",
1098 func =
RNA_def_function(srna,
"find_by_name",
"rna_RenderPass_find_by_name");
1103 func,
"view",
nullptr, 0,
"View",
"Render view to get pass from");
1105 parm =
RNA_def_pointer(func,
"render_pass",
"RenderPass",
"",
"The matching render pass");
1120 func =
RNA_def_function(srna,
"load_from_file",
"RE_layer_load_from_file");
1122 "Copies the pixels of this renderlayer from an image file");
1130 "File path to load into this render tile, must be no smaller than the renderlayer");
1138 "Offset the position to copy from if the image is larger than the render layer",
1147 "Offset the position to copy from if the image is larger than the render layer",
1158 "rna_RenderLayer_passes_begin",
1159 "rna_iterator_listbase_next",
1160 "rna_iterator_listbase_end",
1161 "rna_iterator_listbase_get",
1203 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
void ED_render_engine_changed(Main *bmain, bool update_scene_data)
void GPU_shader_bind(blender::gpu::Shader *shader, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
blender::gpu::Shader * GPU_shader_get_builtin_shader(GPUBuiltinShader shader)
Read Guarded memory(de)allocation.
@ RE_USE_CUSTOM_FREESTYLE
@ RE_USE_SHADING_NODES_CUSTOM
@ 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)
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_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