Blender
V3.3
|
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
#include "BLI_hash_md5.h"
#include "BLI_listbase.h"
#include "BLI_path_util.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_string_utils.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BKE_appdir.h"
#include "BKE_camera.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_image_format.h"
#include "BKE_image_save.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_openexr.h"
#include "RE_engine.h"
#include "render_result.h"
#include "render_types.h"
Go to the source code of this file.
Macros | |
#define | RENDER_LAYER_ADD_PASS_SAFE(rr, rl, channels, name, viewname, chan_id) |
#define | CHECK_PASS(NAME) |
|
static |
Definition at line 790 of file render_result.c.
References float(), RenderResult::rectx, RenderResult::recty, tile, RenderResult::tilerect, rcti::xmin, y, and rcti::ymin.
Referenced by render_result_merge().
|
static |
Definition at line 1222 of file render_result.c.
References BLI_addtail(), duplicate_render_pass(), RenderLayer::exrhandle, ListBase::first, ListBase::last, MEM_mallocN, RenderLayer::next, NULL, RenderLayer::passes, and RenderLayer::prev.
Referenced by RE_DuplicateRenderResult().
|
static |
Definition at line 1211 of file render_result.c.
References MEM_dupallocN, MEM_mallocN, RenderPass::next, NULL, RenderPass::prev, and RenderPass::rect.
Referenced by duplicate_render_layer().
|
static |
Definition at line 1236 of file render_result.c.
References MEM_dupallocN, MEM_mallocN, NULL, RenderView::rect32, RenderView::rectf, and RenderView::rectz.
Referenced by RE_DuplicateRenderResult().
Definition at line 588 of file render_result.c.
References BLI_addtail(), BLI_strncpy(), EXR_LAY_MAXNAME, RenderResult::layers, MEM_callocN, RenderLayer::name, and str.
Referenced by render_result_new_from_exr().
|
static |
Definition at line 600 of file render_result.c.
References BLI_addtail(), BLI_findstringindex(), BLI_strncpy(), RenderPass::chan_id, RenderPass::channels, EXR_PASS_MAXNAME, RenderPass::fullname, MEM_callocN, RenderPass::name, NULL, RenderLayer::passes, RenderLayer::passflag, passtype_from_name(), RE_render_result_full_channel_name(), RenderPass::rect, view, RenderPass::view, RenderPass::view_id, and RenderResult::views.
Referenced by render_result_new_from_exr().
Definition at line 632 of file render_result.c.
References BLI_addhead(), BLI_addtail(), BLI_findstring(), BLI_insertlinkafter(), BLI_strncpy(), EXR_VIEW_MAXNAME, MEM_callocN, RenderView::name, NULL, STEREO_LEFT_NAME, STEREO_RIGHT_NAME, str, STREQ, and RenderResult::views.
Referenced by render_result_new_from_exr().
Definition at line 664 of file render_result.c.
References Freestyle::a, usdtokens::b(), EXR_PASS_MAXNAME, RenderPass::name, passtype_from_name(), STEREO_LEFT_NAME, STEREO_RIGHT_NAME, STREQ, RenderPass::view, and RenderPass::view_id.
Referenced by render_result_new_from_exr().
|
static |
Definition at line 546 of file render_result.c.
References BLI_str_partition(), CHECK_PASS, len, NORMAL, and Z.
Referenced by ml_addpass_cb(), and order_render_passes().
void RE_create_render_pass | ( | RenderResult * | rr, |
const char * | name, | ||
int | channels, | ||
const char * | chan_id, | ||
const char * | layername, | ||
const char * | viewname, | ||
const bool | allocate | ||
) |
Definition at line 474 of file render_result.c.
References channels(), ListBase::first, RenderResult::layers, RenderView::name, RenderPass::name, RenderLayer::name, RenderView::next, RenderPass::next, RenderLayer::next, RenderLayer::passes, render_layer_add_pass(), STREQ, view, RenderPass::view, and RenderResult::views.
Referenced by FRS_composite_result(), and RE_engine_add_pass().
RenderResult* RE_DuplicateRenderResult | ( | RenderResult * | rr | ) |
Definition at line 1252 of file render_result.c.
References BKE_stamp_data_copy(), BLI_addtail(), duplicate_render_layer(), duplicate_render_view(), ListBase::first, ListBase::last, RenderResult::layers, MEM_dupallocN, MEM_mallocN, RenderResult::next, NULL, RenderResult::prev, RenderResult::rect32, RenderResult::rectf, RenderResult::rectz, RenderResult::stamp_data, and RenderResult::views.
Referenced by screen_opengl_render_anim_step().
bool RE_HasCombinedLayer | ( | const RenderResult * | rr | ) |
Definition at line 1159 of file render_result.c.
References ListBase::first, NULL, RenderView::rect32, RenderView::rectf, and RenderResult::views.
Referenced by BKE_image_multilayer_index(), render_image_restore_layer(), ui_imageuser_layer_menu_step(), and ui_imageuser_pass_menu_step().
bool RE_HasFloatPixels | ( | const RenderResult * | rr | ) |
Definition at line 1173 of file render_result.c.
References ListBase::first, and RenderResult::views.
Referenced by BKE_image_render_write(), and image_save_single().
void RE_render_result_full_channel_name | ( | char * | fullname, |
const char * | layname, | ||
const char * | passname, | ||
const char * | viewname, | ||
const char * | chan_id, | ||
const int | channel | ||
) |
Definition at line 516 of file render_result.c.
References ARRAY_SET_ITEMS, BLI_string_join_array_by_sep_char(), and EXR_PASS_MAXNAME.
Referenced by BKE_image_render_write_exr(), ml_addpass_cb(), render_layer_add_pass(), and render_result_exr_file_read_path().
void RE_render_result_rect_from_ibuf | ( | RenderResult * | rr, |
const ImBuf * | ibuf, | ||
const int | view_id | ||
) |
Definition at line 1082 of file render_result.c.
References RenderResult::have_combined, MEM_mallocN, MEM_SAFE_FREE, RE_RenderViewGetById(), ImBuf::rect, RenderView::rect32, ImBuf::rect_float, RenderView::rectf, RenderResult::rectx, and RenderResult::recty.
Referenced by do_render_sequencer(), and screen_opengl_render_doit().
ImBuf* RE_render_result_rect_to_ibuf | ( | RenderResult * | rr, |
const ImageFormatData * | imf, | ||
const float | dither, | ||
const int | view_id | ||
) |
Definition at line 1034 of file render_result.c.
References BKE_imtype_valid_depths(), ImageFormatData::depth, ImBuf::dither, if(), IMB_allocImBuf(), IMB_color_to_bw(), IMB_dupImBuf(), IMB_float_from_rect(), IMB_freeImBuf(), ImageFormatData::imtype, NULL, ImageFormatData::planes, R_IMF_CHAN_DEPTH_12, R_IMF_CHAN_DEPTH_16, R_IMF_CHAN_DEPTH_24, R_IMF_CHAN_DEPTH_32, R_IMF_CHAN_DEPTH_8, R_IMF_PLANES_BW, RE_RenderViewGetById(), ImBuf::rect, RenderView::rect32, ImBuf::rect_float, RenderView::rectf, RenderResult::rectx, RenderResult::recty, RenderView::rectz, and ImBuf::zbuf_float.
Referenced by BKE_image_render_write(), and RE_WriteRenderViewsMovie().
bool RE_RenderResult_is_stereo | ( | const RenderResult * | rr | ) |
Definition at line 1184 of file render_result.c.
References BLI_findstring(), STEREO_LEFT_NAME, STEREO_RIGHT_NAME, and RenderResult::views.
Referenced by BKE_image_multilayer_index(), and uiblock_layer_pass_buttons().
RenderView* RE_RenderViewGetById | ( | RenderResult * | rr, |
const int | view_id | ||
) |
Definition at line 1197 of file render_result.c.
References BLI_assert, BLI_findlink(), ListBase::first, and RenderResult::views.
Referenced by do_render_sequencer(), ed_preview_draw_rect(), image_buffer_rect_update(), RE_AcquireResultImage(), RE_render_result_rect_from_ibuf(), RE_render_result_rect_to_ibuf(), render_result_rect_fill_zero(), render_result_rect_get_pixels(), screen_opengl_render_doit(), and ui_imageuser_layer_fake_name().
RenderView* RE_RenderViewGetByName | ( | RenderResult * | rr, |
const char * | viewname | ||
) |
Definition at line 1204 of file render_result.c.
References BLI_assert, BLI_findstring(), ListBase::first, and RenderResult::views.
Referenced by blender::compositor::CompositorOperation::deinit_execution().
RenderPass* render_layer_add_pass | ( | struct RenderResult * | rr, |
struct RenderLayer * | rl, | ||
int | channels, | ||
const char * | name, | ||
const char * | viewname, | ||
const char * | chan_id, | ||
bool | allocate | ||
) |
Render pass wrapper for grease-pencil.
Definition at line 191 of file render_result.c.
References Freestyle::a, BLI_addtail(), BLI_findstringindex(), BLI_strncpy(), RenderPass::chan_id, channels(), RenderPass::channels, EXR_PASS_MAXNAME, RenderLayer::exrhandle, RenderPass::fullname, IMB_exr_add_channel(), MEM_callocN, RenderPass::name, RenderLayer::name, NULL, RenderLayer::passes, RenderResult::passes_allocated, RE_render_result_full_channel_name(), RenderPass::rectx, RenderLayer::rectx, RenderPass::recty, RenderLayer::recty, render_layer_allocate_pass(), RenderPass::view, RenderPass::view_id, and RenderResult::views.
Referenced by RE_create_gp_pass(), RE_create_render_pass(), render_result_clone_passes(), render_result_from_bake(), and render_result_new().
|
static |
Definition at line 167 of file render_result.c.
References RenderPass::channels, MEM_callocN, RenderPass::name, NULL, PASS_VECTOR_MAX, RE_PASSNAME_VECTOR, RE_PASSNAME_Z, RenderPass::rect, RenderResult::rectx, RenderResult::recty, STREQ, and x.
Referenced by render_layer_add_pass(), and render_result_passes_allocated_ensure().
void render_result_clone_passes | ( | Render * | re, |
RenderResult * | rr, | ||
const char * | viewname | ||
) |
Definition at line 446 of file render_result.c.
References BLI_findstring(), RenderPass::chan_id, RenderPass::channels, ListBase::first, RenderPass::fullname, RenderResult::layers, RenderPass::name, RenderLayer::name, RenderPass::next, RenderLayer::next, RenderLayer::passes, render_layer_add_pass(), Render::result, STREQ, and RenderPass::view.
Referenced by RE_engine_begin_result(), and render_result_uncrop().
|
static |
Definition at line 954 of file render_result.c.
References BKE_main_blendfile_path_from_global(), BKE_tempdir_base(), BLI_hash_md5_buffer(), BLI_hash_md5_to_hexdigest(), BLI_make_file_string(), BLI_path_extension_replace(), BLI_snprintf(), BLI_split_dirfile(), BLI_strncpy(), dirname(), FILE_MAX, FILE_MAXDIR, FILE_MAXFILE, Scene::id, MAX_ID_NAME, and ID::name.
Referenced by render_result_exr_file_cache_read(), and render_result_exr_file_cache_write().
For cache, makes exact copy of render result.
Definition at line 1001 of file render_result.c.
References COLOR_ROLE_SCENE_LINEAR, FILE_MAXFILE, IMB_colormanagement_role_colorspace_name_get(), IMB_exr_begin_read(), IMB_exr_close(), IMB_exr_get_handle(), IMB_exr_read_channels(), MAX_ID_NAME, RE_FreeRenderResult(), render_result_exr_file_cache_path(), render_result_new_from_exr(), Render::result, and Render::scene.
Referenced by RE_ReadRenderResult().
Definition at line 987 of file render_result.c.
References BKE_image_render_write_exr(), FILE_MAXFILE, MAX_ID_NAME, NULL, RenderResult::rectx, RenderResult::recty, render_result_exr_file_cache_path(), render_result_passes_allocated_ensure(), Render::result, Render::scene, and str.
Referenced by RE_engine_render().
int render_result_exr_file_read_path | ( | struct RenderResult * | rr, |
struct RenderLayer * | rl_single, | ||
const char * | filepath | ||
) |
Called for reading temp files, and for external engines.
Definition at line 899 of file render_result.c.
References Freestyle::a, RenderPass::chan_id, RenderPass::channels, EXR_PASS_MAXNAME, ListBase::first, RenderPass::fullname, IMB_exr_begin_read(), IMB_exr_close(), IMB_exr_get_handle(), IMB_exr_read_channels(), IMB_exr_set_channel(), RenderResult::layers, RenderPass::name, RenderLayer::name, RenderPass::next, RenderLayer::next, NULL, RenderLayer::passes, RE_render_result_full_channel_name(), RenderPass::rect, RenderResult::rectx, RenderResult::recty, and RenderPass::view.
Referenced by RE_result_load_from_file().
void render_result_free | ( | RenderResult * | rr | ) |
Definition at line 70 of file render_result.c.
References BKE_stamp_data_free(), BLI_remlink(), RenderResult::error, ListBase::first, RenderResult::layers, MEM_freeN, NULL, RenderLayer::passes, RenderPass::rect, RenderResult::rect32, RenderResult::rectf, RenderResult::rectz, render_result_views_free(), RenderResult::stamp_data, and RenderResult::text.
Referenced by do_render_compositor(), RE_ClearResult(), RE_engine_end_result(), RE_engine_render(), RE_FreeAllRenderResults(), RE_FreeRender(), RE_FreeRenderResult(), RE_InitState(), render_result_free_list(), and render_result_uncrop().
void render_result_free_list | ( | struct ListBase * | lb, |
struct RenderResult * | rr | ||
) |
Version that's compatible with full-sample buffers.
Definition at line 114 of file render_result.c.
References BLI_remlink(), ListBase::first, RenderResult::next, and render_result_free().
Referenced by RE_engine_render().
void render_result_merge | ( | struct RenderResult * | rr, |
struct RenderResult * | rrpart | ||
) |
Used when rendering to a full buffer, or when reading the EXR part-layer-pass file. no test happens here if it fits... we also assume layers are in sync.
Definition at line 813 of file render_result.c.
References RenderPass::channels, do_merge_tile(), ListBase::first, RenderPass::fullname, RenderResult::layers, RenderLayer::name, RenderPass::next, RenderLayer::next, NULL, RenderLayer::passes, RE_GetRenderLayer(), RenderPass::rect, and STREQ.
Referenced by RE_engine_end_result(), RE_engine_update_result(), and render_result_uncrop().
RenderResult* render_result_new | ( | struct Render * | re, |
struct rcti * | partrct, | ||
const char * | layername, | ||
const char * | viewname | ||
) |
Called by main render as well for parts will read info from Render *re to define layers.
re->winx
, re->winy
is coordinate space of entire image, partrct
the part within.
Definition at line 235 of file render_result.c.
References Render::active_view_layer, BLI_addtail(), BLI_listbase_is_empty(), BLI_rcti_cent_x(), BLI_rcti_cent_y(), BLI_rcti_size_x(), BLI_rcti_size_y(), BLI_strncpy(), Render::disprect, ListBase::first, FOREACH_VIEW_LAYER_TO_RENDER_BEGIN, FOREACH_VIEW_LAYER_TO_RENDER_END, RenderResult::layers, RenderLayer::layflag, MEM_callocN, RenderView::name, RenderLayer::name, RenderView::next, NULL, RenderResult::passes_allocated, RenderLayer::passflag, Render::r, R_BUTS_PREVIEW, RE_PASSNAME_AO, RE_PASSNAME_COMBINED, RE_PASSNAME_DIFFUSE_COLOR, RE_PASSNAME_DIFFUSE_DIRECT, RE_PASSNAME_DIFFUSE_INDIRECT, RE_PASSNAME_EMIT, RE_PASSNAME_ENVIRONMENT, RE_PASSNAME_GLOSSY_COLOR, RE_PASSNAME_GLOSSY_DIRECT, RE_PASSNAME_GLOSSY_INDIRECT, RE_PASSNAME_INDEXMA, RE_PASSNAME_INDEXOB, RE_PASSNAME_MIST, RE_PASSNAME_NORMAL, RE_PASSNAME_POSITION, RE_PASSNAME_SHADOW, RE_PASSNAME_SUBSURFACE_COLOR, RE_PASSNAME_SUBSURFACE_DIRECT, RE_PASSNAME_SUBSURFACE_INDIRECT, RE_PASSNAME_TRANSM_COLOR, RE_PASSNAME_TRANSM_DIRECT, RE_PASSNAME_TRANSM_INDIRECT, RE_PASSNAME_UV, RE_PASSNAME_VECTOR, RE_PASSNAME_Z, RenderLayer::rectx, RenderResult::rectx, RenderLayer::recty, RenderResult::recty, render_layer_add_pass(), RENDER_LAYER_ADD_PASS_SAFE, render_result_passes_allocated_ensure(), render_result_views_new(), RenderResult::renrect, SCE_LAY_FLAG_DEFAULT, SCE_PASS_AO, SCE_PASS_COMBINED, SCE_PASS_DIFFUSE_COLOR, SCE_PASS_DIFFUSE_DIRECT, SCE_PASS_DIFFUSE_INDIRECT, SCE_PASS_EMIT, SCE_PASS_ENVIRONMENT, SCE_PASS_GLOSSY_COLOR, SCE_PASS_GLOSSY_DIRECT, SCE_PASS_GLOSSY_INDIRECT, SCE_PASS_INDEXMA, SCE_PASS_INDEXOB, SCE_PASS_MIST, SCE_PASS_NORMAL, SCE_PASS_POSITION, SCE_PASS_SHADOW, SCE_PASS_SUBSURFACE_COLOR, SCE_PASS_SUBSURFACE_DIRECT, SCE_PASS_SUBSURFACE_INDIRECT, SCE_PASS_TRANSM_COLOR, SCE_PASS_TRANSM_DIRECT, SCE_PASS_TRANSM_INDIRECT, SCE_PASS_UV, SCE_PASS_VECTOR, SCE_PASS_Z, RenderData::scemode, STREQ, RenderResult::tilerect, view, RenderResult::views, Render::winx, Render::winy, rcti::xmax, rcti::xmin, RenderResult::xof, rcti::ymax, rcti::ymin, and RenderResult::yof.
Referenced by do_render_compositor(), RE_engine_begin_result(), RE_engine_render(), and render_result_uncrop().
RenderResult* render_result_new_from_exr | ( | void * | exrhandle, |
const char * | colorspace, | ||
bool | predivide, | ||
int | rectx, | ||
int | recty | ||
) |
From imbuf
, if a handle was returned and it's not a single-layer multi-view we convert this to render result.
Definition at line 719 of file render_result.c.
References BLI_listbase_sort(), RenderPass::channels, COLOR_ROLE_SCENE_LINEAR, ListBase::first, IMB_colormanagement_role_colorspace_name_get(), IMB_colormanagement_transform(), IMB_exr_multilayer_convert(), RenderResult::layers, MEM_callocN, ml_addlayer_cb(), ml_addpass_cb(), ml_addview_cb(), RenderPass::next, RenderLayer::next, order_render_passes(), RenderLayer::passes, RenderPass::rect, RenderPass::rectx, RenderLayer::rectx, RenderResult::rectx, RenderPass::recty, RenderLayer::recty, and RenderResult::recty.
Referenced by RE_MultilayerConvert(), and render_result_exr_file_cache_read().
void render_result_passes_allocated_ensure | ( | RenderResult * | rr | ) |
Definition at line 425 of file render_result.c.
References RenderResult::layers, LISTBASE_FOREACH, NULL, RenderResult::passes_allocated, RE_PASSNAME_COMBINED, render_layer_allocate_pass(), and STREQ.
Referenced by RE_AcquireResultWrite(), RE_engine_begin_result(), re_ensure_passes_allocated_thread_safe(), render_result_exr_file_cache_write(), render_result_new(), and render_result_uncrop().
void render_result_rect_fill_zero | ( | RenderResult * | rr, |
const int | view_id | ||
) |
Definition at line 1113 of file render_result.c.
References MEM_callocN, RE_RenderViewGetById(), RenderView::rect32, RenderView::rectf, RenderResult::rectx, and RenderResult::recty.
Referenced by do_render_sequencer().
void render_result_rect_get_pixels | ( | RenderResult * | rr, |
unsigned int * | rect, | ||
int | rectx, | ||
int | recty, | ||
const ColorManagedViewSettings * | view_settings, | ||
const ColorManagedDisplaySettings * | display_settings, | ||
const int | view_id | ||
) |
Definition at line 1128 of file render_result.c.
References IMB_display_buffer_transform_apply(), RE_RenderViewGetById(), RenderView::rect32, RenderView::rectf, RenderResult::rectx, and RenderResult::recty.
Referenced by RE_AcquiredResultGet32(), and RE_ResultGet32().
Definition at line 844 of file render_result.c.
References NULL, Render::pushedresult, RE_FreeRenderResult(), and Render::result.
Referenced by render_init_from_main().
If RenderData.scemode is R_SINGLE_LAYER, at end of rendering, merge the both render results.
Definition at line 855 of file render_result.c.
References Render::active_view_layer, BLI_addtail(), BLI_remlink(), ListBase::first, RenderResult::layers, ViewLayer::name, ViewLayer::next, NULL, Render::pushedresult, RE_FreeRenderResult(), RE_GetRenderLayer(), RenderResult::rectx, RenderResult::recty, Render::result, and Render::view_layers.
Referenced by do_render_compositor().
void render_result_view_new | ( | RenderResult * | rr, |
const char * | viewname | ||
) |
Definition at line 758 of file render_result.c.
References BLI_addtail(), BLI_strncpy(), MEM_callocN, RenderView::name, and RenderResult::views.
Referenced by RE_InitState(), and render_result_views_new().
|
static |
Definition at line 46 of file render_result.c.
References BLI_remlink(), ListBase::first, RenderResult::have_combined, MEM_freeN, RenderView::rect32, RenderView::rectf, RenderView::rectz, and RenderResult::views.
Referenced by render_result_free(), and render_result_views_new().
void render_result_views_new | ( | RenderResult * | rr, |
const RenderData * | rd | ||
) |
Definition at line 765 of file render_result.c.
References BKE_scene_multiview_is_render_view_active(), BLI_listbase_count_at_most(), ListBase::first, SceneRenderView::name, SceneRenderView::next, R_MULTIVIEW, render_result_view_new(), render_result_views_free(), RenderData::scemode, RenderData::views, and RenderResult::views.
Referenced by do_render_sequencer(), and render_result_new().
void render_result_views_shallowcopy | ( | struct RenderResult * | dst, |
struct RenderResult * | src | ||
) |
Create a new views ListBase in rr without duplicating the memory pointers.
Definition at line 131 of file render_result.c.
References BLI_addtail(), BLI_strncpy(), MEM_mallocN, RenderView::name, RenderView::next, NULL, RenderView::rect32, RenderView::rectf, RenderView::rectz, src, and RenderResult::views.
Referenced by RE_AcquireResultImageViews().
void render_result_views_shallowdelete | ( | struct RenderResult * | rr | ) |
Free the views created temporarily.
Definition at line 152 of file render_result.c.
References BLI_remlink(), ListBase::first, MEM_freeN, NULL, and RenderResult::views.
Referenced by RE_ReleaseResultImageViews().