91 if (
type->rna_ext.free) {
92 type->rna_ext.free(
type->rna_ext.data);
148 if (use_gpu_context) {
155 if (use_gpu_context) {
203 for (
int ty = 0; ty < h; ty++) {
204 size_t offset = ty *
w * 4;
205 float *primitive = primitive_pass->
rect + offset;
208 size_t bake_offset = (
y + ty) * engine->
bake.
width +
x;
211 for (
int tx = 0; tx <
w; tx++) {
219 primitive[2] = bake_pixel->uv[0];
220 primitive[3] = bake_pixel->uv[1];
235 for (
int ty = 0; ty < h; ty++) {
260 for (
int ty = 0; ty < h; ty++) {
280 RenderEngine *engine,
int x,
int y,
int w,
int h,
const char *layername,
const char *viewname)
309 disprect.
ymax =
y + h;
363 const char *layername)
401 fprintf(stderr,
"RenderEngine.end_result: dimensions do not match any OpenEXR tile.\n");
405 if (!cancel || merge_results) {
407 if (!cancel && merge_results) {
462 engine->
text[0] =
'\0';
464 if (stats && stats[0] && info && info[0]) {
467 else if (info && info[0]) {
470 else if (stats && stats[0]) {
480 CLAMP(progress, 0.0f, 1.0f);
539 if (use_spherical_stereo || re ==
NULL) {
548 bool use_spherical_stereo,
554 if (use_spherical_stereo || re ==
NULL) {
573 rcti *tiles = tiles_static;
578 *r_needs_free =
false;
590 if (total_tiles >= allocation_size) {
594 allocation_size += allocation_step;
595 if (tiles == tiles_static) {
599 tiles =
MEM_mallocN(allocation_size *
sizeof(
rcti),
"current engine tiles");
604 *r_needs_free =
true;
612 *r_total_tiles = total_tiles;
642 bool reuse_depsgraph =
false;
658 reuse_depsgraph =
true;
678 if (use_gpu_context) {
684 if (use_gpu_context) {
721 double cfra = (
double)frame + (
double)subframe;
751 const int pass_filter,
791 for (
int i = 0; i < targets->
num_images; i++) {
804 memset(&engine->
bake, 0,
sizeof(engine->
bake));
837 const bool use_engine,
838 const bool use_grease_pencil)
864 if (use_gpu_context) {
870 if (use_gpu_context) {
991 bool delay_grease_pencil =
false;
1023 if (delay_grease_pencil) {
1062 #ifdef WITH_FREESTYLE
1064 RE_RenderFreestyleExternal(re);
1075 void *callback_data)
typedef float(TangentPoint)[2]
Camera data-block and utility functions.
float BKE_camera_multiview_shift_x(const struct RenderData *rd, const struct Object *camera, const char *viewname)
void BKE_camera_multiview_model_matrix(const struct RenderData *rd, const struct Object *camera, const char *viewname, float r_modelmat[4][4])
bool BKE_camera_multiview_spherical_stereo(const struct RenderData *rd, const struct Object *camera)
void BKE_report(ReportList *reports, ReportType type, const char *message)
bool BKE_reports_contain(ReportList *reports, ReportType level)
void BKE_scene_frame_set(struct Scene *scene, double cfra)
bool BKE_scene_camera_switch_update(struct Scene *scene)
void BKE_scene_graph_update_for_newframe_ex(struct Depsgraph *depsgraph, const bool clear_recalc)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
#define GHASH_ITER(gh_iter_, ghash_)
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE float int_as_float(int i)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void BLI_mutex_end(ThreadMutex *mutex)
void BLI_mutex_init(ThreadMutex *mutex)
#define THREAD_LOCK_WRITE
void BLI_rw_mutex_lock(ThreadRWMutex *mutex, int mode)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
#define BLENDER_MAX_THREADS
void BLI_rw_mutex_unlock(ThreadRWMutex *mutex)
void BPY_DECREF_RNA_INVALIDATE(void *pyob_ptr)
typedef double(DMatrix)[4][4]
Depsgraph * DEG_graph_new(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, eEvaluationMode mode)
struct Depsgraph Depsgraph
void DEG_ids_clear_recalc(Depsgraph *depsgraph, const bool backup)
void DEG_evaluate_on_framechange(Depsgraph *graph, float ctime)
void DEG_graph_replace_owners(struct Depsgraph *depsgraph, struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
void DEG_graph_free(Depsgraph *graph)
void DEG_graph_tag_relations_update(struct Depsgraph *graph)
void DEG_graph_relations_update(struct Depsgraph *graph)
void DEG_debug_name_set(struct Depsgraph *depsgraph, const char *name)
struct Scene * DEG_get_input_scene(const Depsgraph *graph)
struct Main * DEG_get_bmain(const Depsgraph *graph)
struct ViewLayer * DEG_get_input_view_layer(const Depsgraph *graph)
Object is a sort of wrapper for general info.
#define RE_PASSNAME_COMBINED
#define R_PERSISTENT_DATA
#define R_NO_FRAME_UPDATE
bool DRW_render_check_grease_pencil(struct Depsgraph *depsgraph)
void DRW_engines_free(void)
void DRW_engines_register(void)
void DRW_render_gpencil(struct RenderEngine *engine, struct Depsgraph *depsgraph)
void DRW_engine_register(struct DrawEngineType *draw_engine_type)
bool DRW_engine_render_support(struct DrawEngineType *draw_engine_type)
void DRW_render_context_disable(struct Render *render)
void DRW_render_context_enable(struct Render *render)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
Group RGB to Bright Vector Camera CLAMP
#define RE_ENGINE_ANIMATION
#define RE_USE_SAVE_BUFFERS
#define RE_USE_GPU_CONTEXT
#define RE_ENGINE_PREVIEW
#define RE_ENGINE_RENDERING
#define RE_ENGINE_HIGHLIGHT_TILES
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)
#define RE_USE_POSTPROCESS
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
RenderEngine * RE_engine_create(RenderEngineType *type)
RenderEngineType * RE_engines_find(const char *idname)
bool RE_engine_is_external(const Render *re)
bool RE_engine_is_opengl(RenderEngineType *render_type)
bool RE_bake_engine(Render *re, Depsgraph *depsgraph, Object *object, const int object_id, const BakePixel pixel_array[], const BakeTargets *targets, const eScenePassType pass_type, const int pass_filter, float result[])
void RE_engine_frame_set(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)
static void engine_depsgraph_exit(RenderEngine *engine)
void RE_engine_add_pass(RenderEngine *engine, const char *name, int channels, const char *chan_id, const char *layername)
static void engine_depsgraph_init(RenderEngine *engine, ViewLayer *view_layer)
void RE_engine_report(RenderEngine *engine, int type, const char *msg)
static RenderResult * render_result_from_bake(RenderEngine *engine, int x, int y, int w, int h)
void RE_engine_active_view_set(RenderEngine *engine, const char *viewname)
bool RE_engine_use_persistent_data(RenderEngine *engine)
void RE_engine_get_camera_model_matrix(RenderEngine *engine, Object *camera, bool use_spherical_stereo, float *r_modelmat)
float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera, bool use_spherical_stereo)
void RE_engine_update_result(RenderEngine *engine, RenderResult *result)
static void engine_render_view_layer(Render *re, RenderEngine *engine, ViewLayer *view_layer_iter, const bool use_engine, const bool use_grease_pencil)
void RE_engine_update_memory_stats(RenderEngine *engine, float mem_used, float mem_peak)
void RE_engines_init(void)
bool RE_engine_get_spherical_stereo(RenderEngine *engine, Object *camera)
bool RE_engine_render(Render *re, bool do_all)
bool RE_engine_test_break(RenderEngine *engine)
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)
void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char *info)
void RE_bake_engine_set_engine_parameters(Render *re, Main *bmain, Scene *scene)
static void engine_depsgraph_free(RenderEngine *engine)
void RE_engines_exit(void)
void RE_engines_register(RenderEngineType *render_type)
void RE_engine_free(RenderEngine *engine)
void RE_engine_free_blender_memory(RenderEngine *engine)
RenderResult * RE_engine_get_result(RenderEngine *engine)
void RE_engine_set_error_message(RenderEngine *engine, const char *msg)
const char * RE_engine_active_view_get(RenderEngine *engine)
RenderData * RE_engine_get_render_data(Render *re)
void RE_engine_end_result(RenderEngine *engine, RenderResult *result, bool cancel, bool highlight, bool merge_results)
RenderResult * RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h, const char *layername, const char *viewname)
static bool engine_keep_depsgraph(RenderEngine *engine)
bool RE_bake_has_engine(Render *re)
static void render_result_to_bake(RenderEngine *engine, RenderResult *rr)
static RenderPart * get_part_from_result(Render *re, RenderResult *result)
void RE_engine_update_progress(RenderEngine *engine, float progress)
rcti * RE_engine_get_current_tiles(Render *re, int *r_total_tiles, bool *r_needs_free)
void RE_parts_free(Render *re)
void RE_parts_init(Render *re)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
RenderResult * RE_AcquireResultRead(Render *re)
void render_copy_renderdata(RenderData *to, RenderData *from)
void RE_FreePersistentData(const Scene *scene)
void render_update_anim_renderdata(Render *re, RenderData *rd, ListBase *render_layers)
void RE_ReleaseResult(Render *re)
RenderPass * RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, const char *viewname)
const char * RE_GetActiveRenderView(Render *re)
void RE_SetActiveRenderView(Render *re, const char *viewname)
void render_result_exr_file_cache_write(Render *re)
void render_result_exr_file_end(Render *re, RenderEngine *engine)
void RE_create_render_pass(RenderResult *rr, const char *name, int channels, const char *chan_id, const char *layername, const char *viewname)
void render_result_merge(RenderResult *rr, RenderResult *rrpart)
void render_result_free(RenderResult *rr)
RenderPass * render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id)
void render_result_clone_passes(Render *re, RenderResult *rr, const char *viewname)
void render_result_exr_file_begin(Render *re, RenderEngine *engine)
void render_result_free_list(ListBase *lb, RenderResult *rr)
RenderResult * render_result_new(Render *re, rcti *partrct, int savebuffers, const char *layername, const char *viewname)
void render_result_exr_file_merge(RenderResult *rr, RenderResult *rrpart, const char *viewname)
#define FOREACH_VIEW_LAYER_TO_RENDER_END
#define FOREACH_VIEW_LAYER_TO_RENDER_BEGIN(re_, iter_)
@ PART_STATUS_IN_PROGRESS
void(* render)(struct RenderEngine *engine, struct Depsgraph *depsgraph)
void(* update)(struct RenderEngine *engine, struct Main *bmain, struct Depsgraph *depsgraph)
struct DrawEngineType * draw_engine
void(* update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
struct ReportList * reports
struct Depsgraph * depsgraph
const struct BakePixel * pixels
void * update_render_passes_data
struct RenderEngine::@1136 bake
update_render_passes_cb_t update_render_passes_cb
ThreadMutex update_render_passes_mutex
struct Object * camera_override
char scene_name[MAX_ID_NAME - 2]
void(* progress)(void *handle, float i)
struct RenderEngine * engine
ThreadRWMutex resultmutex
void(* draw_lock)(void *handle, bool lock)
void(* stats_draw)(void *handle, RenderStats *ri)
int(* test_break)(void *handle)
struct ReportList * reports
struct Object * camera_override
void(* display_update)(void *handle, RenderResult *rr, volatile rcti *rect)