Blender  V2.93
render_result.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2007 Blender Foundation.
17  * All rights reserved.
18  */
19 
24 #pragma once
25 
26 #define PASS_VECTOR_MAX 10000.0f
27 
28 #define RR_USE_MEM 0
29 #define RR_USE_EXR 1
30 
31 #define RR_ALL_LAYERS NULL
32 #define RR_ALL_VIEWS NULL
33 
36 struct ImBuf;
37 struct ListBase;
38 struct Render;
39 struct RenderData;
40 struct RenderEngine;
41 struct RenderLayer;
42 struct RenderResult;
43 struct Scene;
44 struct rcti;
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 /* New */
51 
52 struct RenderResult *render_result_new(struct Render *re,
53  struct rcti *partrct,
54  int savebuffers,
55  const char *layername,
56  const char *viewname);
57 
59  void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty);
60 
61 void render_result_view_new(struct RenderResult *rr, const char *viewname);
62 void render_result_views_new(struct RenderResult *rr, const struct RenderData *rd);
63 
64 /* Merge */
65 
66 void render_result_merge(struct RenderResult *rr, struct RenderResult *rrpart);
67 
68 /* Add Passes */
69 
70 void render_result_clone_passes(struct Render *re, struct RenderResult *rr, const char *viewname);
71 
72 /* Free */
73 
74 void render_result_free(struct RenderResult *rr);
75 void render_result_free_list(struct ListBase *lb, struct RenderResult *rr);
76 
77 /* Single Layer Render */
78 
80 void render_result_single_layer_end(struct Render *re);
81 
82 /* EXR Tile File Render */
83 
85 void render_result_exr_file_begin(struct Render *re, struct RenderEngine *engine);
86 void render_result_exr_file_end(struct Render *re, struct RenderEngine *engine);
87 
88 /* render pass wrapper for gpencil */
90  struct RenderLayer *rl,
91  int channels,
92  const char *name,
93  const char *viewname,
94  const char *chan_id);
95 
97  struct RenderResult *rrpart,
98  const char *viewname);
99 
101  const char *layname,
102  int sample,
103  char *filepath);
105  struct RenderLayer *rl_single,
106  const char *filepath);
107 
108 /* EXR cache */
109 
112 
113 /* Combined Pixel Rect */
114 
116  const struct RenderData *rd,
117  const int view_id);
118 
119 void render_result_rect_fill_zero(struct RenderResult *rr, const int view_id);
121  unsigned int *rect,
122  int rectx,
123  int recty,
124  const struct ColorManagedViewSettings *view_settings,
125  const struct ColorManagedDisplaySettings *display_settings,
126  const int view_id);
127 
128 void render_result_views_shallowcopy(struct RenderResult *dst, struct RenderResult *src);
130 bool render_result_has_views(struct RenderResult *rr);
131 
132 #define FOREACH_VIEW_LAYER_TO_RENDER_BEGIN(re_, iter_) \
133  { \
134  int nr_; \
135  ViewLayer *iter_; \
136  for (nr_ = 0, iter_ = (re_)->view_layers.first; iter_ != NULL; iter_ = iter_->next, nr_++) { \
137  if (!G.background && (re_)->r.scemode & R_SINGLE_LAYER) { \
138  if (nr_ != re->active_view_layer) { \
139  continue; \
140  } \
141  } \
142  else { \
143  if ((iter_->flag & VIEW_LAYER_RENDER) == 0) { \
144  continue; \
145  } \
146  }
147 
148 #define FOREACH_VIEW_LAYER_TO_RENDER_END \
149  } \
150  } \
151  ((void)0)
152 
153 #ifdef __cplusplus
154 }
155 #endif
Scene scene
static void sample(SocketReader *reader, int x, int y, float color[4])
int render_result_exr_file_read_path(struct RenderResult *rr, struct RenderLayer *rl_single, const char *filepath)
void render_result_exr_file_path(struct Scene *scene, const char *layname, int sample, char *filepath)
void render_result_free_list(struct ListBase *lb, struct RenderResult *rr)
void render_result_rect_get_pixels(struct RenderResult *rr, unsigned int *rect, int rectx, int recty, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, const int view_id)
void render_result_save_empty_result_tiles(struct Render *re)
void render_result_exr_file_cache_write(struct Render *re)
void render_result_rect_fill_zero(struct RenderResult *rr, const int view_id)
struct RenderPass * render_layer_add_pass(struct RenderResult *rr, struct RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id)
struct RenderResult * render_result_new_from_exr(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
void render_result_free(struct RenderResult *rr)
Definition: render_result.c:85
bool render_result_has_views(struct RenderResult *rr)
void render_result_views_shallowcopy(struct RenderResult *dst, struct RenderResult *src)
void render_result_views_new(struct RenderResult *rr, const struct RenderData *rd)
void render_result_merge(struct RenderResult *rr, struct RenderResult *rrpart)
void render_result_exr_file_end(struct Render *re, struct RenderEngine *engine)
void render_result_views_shallowdelete(struct RenderResult *rr)
struct ImBuf * render_result_rect_to_ibuf(struct RenderResult *rr, const struct RenderData *rd, const int view_id)
void render_result_single_layer_end(struct Render *re)
void render_result_clone_passes(struct Render *re, struct RenderResult *rr, const char *viewname)
void render_result_single_layer_begin(struct Render *re)
struct RenderResult * render_result_new(struct Render *re, struct rcti *partrct, int savebuffers, const char *layername, const char *viewname)
void render_result_view_new(struct RenderResult *rr, const char *viewname)
void render_result_exr_file_begin(struct Render *re, struct RenderEngine *engine)
bool render_result_exr_file_cache_read(struct Render *re)
void render_result_exr_file_merge(struct RenderResult *rr, struct RenderResult *rrpart, const char *viewname)
unsigned int * rect
char chan_id[8]
Definition: RE_pipeline.h:81
char name[64]
Definition: RE_pipeline.h:80
int channels
Definition: RE_pipeline.h:79