Blender  V2.93
Macros | Functions
render_result.c File Reference
#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_report.h"
#include "BKE_scene.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "intern/openexr/openexr_multi.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)
 

Functions

static void render_result_views_free (RenderResult *rr)
 
void render_result_free (RenderResult *rr)
 
void render_result_free_list (ListBase *lb, RenderResult *rr)
 
void render_result_views_shallowcopy (RenderResult *dst, RenderResult *src)
 
void render_result_views_shallowdelete (RenderResult *rr)
 
static char * set_pass_name (char *outname, const char *name, int channel, const char *chan_id)
 
static void set_pass_full_name (char *fullname, const char *name, int channel, const char *view, const char *chan_id)
 
RenderPassrender_layer_add_pass (RenderResult *rr, RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id)
 
RenderResultrender_result_new (Render *re, rcti *partrct, int savebuffers, const char *layername, const char *viewname)
 
void render_result_clone_passes (Render *re, RenderResult *rr, const char *viewname)
 
void RE_create_render_pass (RenderResult *rr, const char *name, int channels, const char *chan_id, const char *layername, const char *viewname)
 
static int passtype_from_name (const char *name)
 
static void * ml_addlayer_cb (void *base, const char *str)
 
static void ml_addpass_cb (void *base, void *lay, const char *name, float *rect, int totchan, const char *chan_id, const char *view)
 
static void * ml_addview_cb (void *base, const char *str)
 
static int order_render_passes (const void *a, const void *b)
 
RenderResultrender_result_new_from_exr (void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
 
void render_result_view_new (RenderResult *rr, const char *viewname)
 
void render_result_views_new (RenderResult *rr, const RenderData *rd)
 
bool render_result_has_views (RenderResult *rr)
 
static void do_merge_tile (RenderResult *rr, RenderResult *rrpart, float *target, float *tile, int pixsize)
 
void render_result_merge (RenderResult *rr, RenderResult *rrpart)
 
bool RE_WriteRenderResult (ReportList *reports, RenderResult *rr, const char *filename, ImageFormatData *imf, const char *view, int layer)
 
void render_result_single_layer_begin (Render *re)
 
void render_result_single_layer_end (Render *re)
 
static void save_render_result_tile (RenderResult *rr, RenderResult *rrpart, const char *viewname)
 
void render_result_save_empty_result_tiles (Render *re)
 
static void templates_register_pass_cb (void *userdata, Scene *UNUSED(scene), ViewLayer *UNUSED(view_layer), const char *name, int channels, const char *chan_id, eNodeSocketDatatype UNUSED(type))
 
static void render_result_get_pass_templates (RenderEngine *engine, Render *re, RenderLayer *rl, ListBase *templates)
 
void render_result_exr_file_begin (Render *re, RenderEngine *engine)
 
void render_result_exr_file_end (Render *re, RenderEngine *engine)
 
void render_result_exr_file_merge (RenderResult *rr, RenderResult *rrpart, const char *viewname)
 
void render_result_exr_file_path (Scene *scene, const char *layname, int sample, char *filepath)
 
int render_result_exr_file_read_path (RenderResult *rr, RenderLayer *rl_single, const char *filepath)
 
static void render_result_exr_file_cache_path (Scene *sce, const char *root, char *r_path)
 
void render_result_exr_file_cache_write (Render *re)
 
bool render_result_exr_file_cache_read (Render *re)
 
ImBufrender_result_rect_to_ibuf (RenderResult *rr, const RenderData *rd, const int view_id)
 
void RE_render_result_rect_from_ibuf (RenderResult *rr, RenderData *UNUSED(rd), ImBuf *ibuf, const int view_id)
 
void render_result_rect_fill_zero (RenderResult *rr, const int view_id)
 
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)
 
bool RE_HasCombinedLayer (RenderResult *rr)
 
bool RE_HasFloatPixels (RenderResult *rr)
 
bool RE_RenderResult_is_stereo (RenderResult *rr)
 
RenderViewRE_RenderViewGetById (RenderResult *rr, const int view_id)
 
RenderViewRE_RenderViewGetByName (RenderResult *rr, const char *viewname)
 
static RenderPassduplicate_render_pass (RenderPass *rpass)
 
static RenderLayerduplicate_render_layer (RenderLayer *rl)
 
static RenderViewduplicate_render_view (RenderView *rview)
 
RenderResultRE_DuplicateRenderResult (RenderResult *rr)
 

Macro Definition Documentation

◆ CHECK_PASS

#define CHECK_PASS (   NAME)
Value:
if (STREQLEN(name, RE_PASSNAME_##NAME, len)) { \
return SCE_PASS_##NAME; \
} \
((void)0)
#define STREQLEN(a, b, n)
uint len

◆ RENDER_LAYER_ADD_PASS_SAFE

#define RENDER_LAYER_ADD_PASS_SAFE (   rr,
  rl,
  channels,
  name,
  viewname,
  chan_id 
)
Value:
do { \
if (render_layer_add_pass(rr, rl, channels, name, viewname, chan_id) == NULL) { \
render_result_free(rr); \
return NULL; \
} \
} while (false)
RenderPass * render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id)

Function Documentation

◆ do_merge_tile()

static void do_merge_tile ( RenderResult rr,
RenderResult rrpart,
float target,
float tile,
int  pixsize 
)
static

◆ duplicate_render_layer()

static RenderLayer* duplicate_render_layer ( RenderLayer rl)
static

◆ duplicate_render_pass()

static RenderPass* duplicate_render_pass ( RenderPass rpass)
static

◆ duplicate_render_view()

static RenderView* duplicate_render_view ( RenderView rview)
static

◆ ml_addlayer_cb()

static void* ml_addlayer_cb ( void *  base,
const char *  str 
)
static

◆ ml_addpass_cb()

static void ml_addpass_cb ( void *  base,
void *  lay,
const char *  name,
float rect,
int  totchan,
const char *  chan_id,
const char *  view 
)
static

◆ ml_addview_cb()

static void* ml_addview_cb ( void *  base,
const char *  str 
)
static

◆ order_render_passes()

static int order_render_passes ( const void *  a,
const void *  b 
)
static

◆ passtype_from_name()

static int passtype_from_name ( const char *  name)
static

Definition at line 560 of file render_result.c.

References BLI_str_partition(), CHECK_PASS, len, NORMAL, and Z.

Referenced by ml_addpass_cb(), and order_render_passes().

◆ RE_create_render_pass()

void RE_create_render_pass ( RenderResult rr,
const char *  name,
int  channels,
const char *  chan_id,
const char *  layername,
const char *  viewname 
)

◆ RE_DuplicateRenderResult()

RenderResult* RE_DuplicateRenderResult ( RenderResult rr)

◆ RE_HasCombinedLayer()

bool RE_HasCombinedLayer ( RenderResult rr)

◆ RE_HasFloatPixels()

bool RE_HasFloatPixels ( RenderResult rr)

◆ RE_render_result_rect_from_ibuf()

void RE_render_result_rect_from_ibuf ( RenderResult rr,
RenderData UNUSEDrd,
ImBuf ibuf,
const int  view_id 
)

◆ RE_RenderResult_is_stereo()

bool RE_RenderResult_is_stereo ( RenderResult rr)

◆ RE_RenderViewGetById()

RenderView* RE_RenderViewGetById ( RenderResult rr,
const int  view_id 
)

◆ RE_RenderViewGetByName()

RenderView* RE_RenderViewGetByName ( RenderResult rr,
const char *  viewname 
)

◆ RE_WriteRenderResult()

bool RE_WriteRenderResult ( ReportList reports,
RenderResult rr,
const char *  filename,
ImageFormatData imf,
const char *  view,
int  layer 
)

◆ render_layer_add_pass()

RenderPass* render_layer_add_pass ( RenderResult rr,
RenderLayer rl,
int  channels,
const char *  name,
const char *  viewname,
const char *  chan_id 
)

◆ render_result_clone_passes()

void render_result_clone_passes ( Render re,
RenderResult rr,
const char *  viewname 
)

◆ render_result_exr_file_begin()

void render_result_exr_file_begin ( Render re,
RenderEngine engine 
)

◆ render_result_exr_file_cache_path()

static void render_result_exr_file_cache_path ( Scene sce,
const char *  root,
char *  r_path 
)
static

◆ render_result_exr_file_cache_read()

bool render_result_exr_file_cache_read ( Render re)

◆ render_result_exr_file_cache_write()

void render_result_exr_file_cache_write ( Render re)

◆ render_result_exr_file_end()

void render_result_exr_file_end ( Render re,
RenderEngine engine 
)

◆ render_result_exr_file_merge()

void render_result_exr_file_merge ( RenderResult rr,
RenderResult rrpart,
const char *  viewname 
)

Definition at line 1280 of file render_result.c.

References RenderResult::next, and save_render_result_tile().

Referenced by RE_engine_end_result().

◆ render_result_exr_file_path()

void render_result_exr_file_path ( Scene scene,
const char *  layname,
int  sample,
char *  filepath 
)

◆ render_result_exr_file_read_path()

int render_result_exr_file_read_path ( RenderResult rr,
RenderLayer rl_single,
const char *  filepath 
)

◆ render_result_free()

void render_result_free ( RenderResult rr)

◆ render_result_free_list()

void render_result_free_list ( ListBase lb,
RenderResult rr 
)

Version that's compatible with full-sample buffers.

Definition at line 130 of file render_result.c.

References BLI_remlink(), ListBase::first, RenderResult::next, and render_result_free().

Referenced by RE_engine_render(), and render_result_exr_file_end().

◆ render_result_get_pass_templates()

static void render_result_get_pass_templates ( RenderEngine engine,
Render re,
RenderLayer rl,
ListBase templates 
)
static

◆ render_result_has_views()

bool render_result_has_views ( RenderResult rr)

◆ render_result_merge()

void render_result_merge ( RenderResult rr,
RenderResult rrpart 
)

◆ render_result_new()

RenderResult* render_result_new ( Render re,
rcti partrct,
int  savebuffers,
const char *  layername,
const char *  viewname 
)

Definition at line 288 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, RenderResult::do_exr_tile, RenderLayer::exrhandle, ListBase::first, FOREACH_VIEW_LAYER_TO_RENDER_BEGIN, FOREACH_VIEW_LAYER_TO_RENDER_END, IMB_exr_add_view(), IMB_exr_get_handle(), RenderResult::layers, RenderLayer::layflag, MEM_callocN, RenderView::name, RenderLayer::name, RenderView::next, NULL, RenderLayer::passflag, Render::r, 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_RAYHITS, 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_views_new(), RenderResult::renrect, 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_RAYHITS, 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, 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(), render_result_exr_file_cache_read(), render_result_exr_file_end(), and render_result_uncrop().

◆ render_result_new_from_exr()

RenderResult* render_result_new_from_exr ( void *  exrhandle,
const char *  colorspace,
bool  predivide,
int  rectx,
int  recty 
)

◆ render_result_rect_fill_zero()

void render_result_rect_fill_zero ( RenderResult rr,
const int  view_id 
)

◆ render_result_rect_get_pixels()

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 
)

◆ render_result_rect_to_ibuf()

ImBuf* render_result_rect_to_ibuf ( RenderResult rr,
const RenderData rd,
const int  view_id 
)

◆ render_result_save_empty_result_tiles()

void render_result_save_empty_result_tiles ( Render re)

◆ render_result_single_layer_begin()

void render_result_single_layer_begin ( Render re)

Definition at line 1030 of file render_result.c.

References NULL, Render::pushedresult, RE_FreeRenderResult(), and Render::result.

Referenced by render_init_from_main().

◆ render_result_single_layer_end()

void render_result_single_layer_end ( Render re)

◆ render_result_view_new()

void render_result_view_new ( RenderResult rr,
const char *  viewname 
)

◆ render_result_views_free()

static void render_result_views_free ( RenderResult rr)
static

◆ render_result_views_new()

void render_result_views_new ( RenderResult rr,
const RenderData rd 
)

◆ render_result_views_shallowcopy()

void render_result_views_shallowcopy ( RenderResult dst,
RenderResult src 
)

◆ render_result_views_shallowdelete()

void render_result_views_shallowdelete ( RenderResult rr)

Definition at line 170 of file render_result.c.

References BLI_remlink(), ListBase::first, MEM_freeN, NULL, and RenderResult::views.

Referenced by RE_ReleaseResultImageViews().

◆ save_render_result_tile()

static void save_render_result_tile ( RenderResult rr,
RenderResult rrpart,
const char *  viewname 
)
static

◆ set_pass_full_name()

static void set_pass_full_name ( char *  fullname,
const char *  name,
int  channel,
const char *  view,
const char *  chan_id 
)
static

◆ set_pass_name()

static char* set_pass_name ( char *  outname,
const char *  name,
int  channel,
const char *  chan_id 
)
static

◆ templates_register_pass_cb()

static void templates_register_pass_cb ( void *  userdata,
Scene UNUSEDscene,
ViewLayer UNUSEDview_layer,
const char *  name,
int  channels,
const char *  chan_id,
eNodeSocketDatatype   UNUSEDtype 
)
static