Blender  V2.93
RE_pipeline.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) 2006 Blender Foundation.
17  * All rights reserved.
18  */
19 
24 #pragma once
25 
26 #include "DEG_depsgraph.h"
27 #include "DNA_listBase.h"
28 #include "DNA_vec_types.h"
29 
30 struct Image;
31 struct ImageFormatData;
32 struct Main;
33 struct Object;
34 struct RenderData;
35 struct RenderResult;
36 struct ReportList;
37 struct Scene;
38 struct StampData;
39 struct ViewLayer;
40 struct bMovieHandle;
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
47 /* this include is what is exposed of render to outside world */
48 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
49 
50 /* length of the scene name + passname */
51 #define RE_MAXNAME ((MAX_ID_NAME - 2) + 10)
52 
53 /* only used as handle */
54 typedef struct Render Render;
55 
56 /* Render Result usage:
57  *
58  * - render engine allocates/frees and delivers raw floating point rects
59  * - right now it's full rects, but might become tiles or file
60  * - the display client has to allocate display rects, sort out what to display,
61  * and how it's converted
62  */
63 
64 typedef struct RenderView {
65  struct RenderView *next, *prev;
66  char name[64]; /* EXR_VIEW_MAXNAME */
67 
68  /* if this exists, result of composited layers */
69  float *rectf;
70  /* if this exists, result of composited layers */
71  float *rectz;
72  /* optional, 32 bits version of picture, used for sequencer, ogl render and image curves */
73  int *rect32;
74 
76 
77 typedef struct RenderPass {
78  struct RenderPass *next, *prev;
79  int channels;
80  char name[64]; /* amount defined in openexr_multi.h */
81  char chan_id[8]; /* amount defined in openexr_multi.h */
82  float *rect;
83  int rectx, recty;
84 
85  char fullname[64]; /* EXR_PASS_MAXNAME */
86  char view[64]; /* EXR_VIEW_MAXNAME */
87  int view_id; /* quick lookup */
88 
89  int pad;
91 
92 /* a renderlayer is a full image, but with all passes and samples */
93 /* size of the rects is defined in RenderResult */
94 /* after render, the Combined pass is in combined,
95  * for renderlayers read from files it is a real pass */
96 typedef struct RenderLayer {
97  struct RenderLayer *next, *prev;
98 
102 
103  int rectx, recty;
104 
106  void *exrhandle;
107 
109 
111 
112 typedef struct RenderResult {
113  struct RenderResult *next, *prev;
114 
115  /* target image size */
116  int rectx, recty;
117  short sample_nr;
118 
119  /* The following rect32, rectf and rectz buffers are for temporary storage only,
120  * for RenderResult structs created in #RE_AcquireResultImage - which do not have RenderView */
121 
122  /* optional, 32 bits version of picture, used for ogl render and image curves */
123  int *rect32;
124  /* if this exists, a copy of one of layers, or result of composited layers */
125  float *rectf;
126  /* if this exists, a copy of one of layers, or result of composited layers */
127  float *rectz;
128 
129  /* coordinates within final image (after cropping) */
131  /* offset to apply to get a border render in full image */
132  int xof, yof;
133 
134  /* the main buffers */
136 
137  /* multiView maps to a StringVector in OpenEXR */
138  ListBase views; /* RenderView */
139 
140  /* allowing live updates: */
141  volatile rcti renrect;
142  volatile RenderLayer *renlay;
143 
144  /* optional saved endresult on disk */
146 
147  /* for render results in Image, verify validity for sequences */
148  int framenr;
149 
150  /* for acquire image, to indicate if it there is a combined layer */
152 
153  /* render info text */
154  char *text;
155  char *error;
156 
159 
160 typedef struct RenderStats {
161  int cfra;
162  bool localview;
164  const char *infostr, *statstr;
168 
169 /* *********************** API ******************** */
170 
171 /* the name is used as identifier, so elsewhere in blender the result can retrieved */
172 /* calling a new render with same name, frees automatic existing render */
173 struct Render *RE_NewRender(const char *name);
174 struct Render *RE_GetRender(const char *name);
175 
176 struct Scene;
177 struct Render *RE_NewSceneRender(const struct Scene *scene);
178 struct Render *RE_GetSceneRender(const struct Scene *scene);
179 
180 /* assign default dummy callbacks */
181 void RE_InitRenderCB(struct Render *re);
182 
183 /* use free render as signal to do everything over (previews) */
184 void RE_FreeRender(struct Render *re);
185 /* only called on exit */
186 void RE_FreeAllRender(void);
187 
188 /* On file load, free render results. */
189 void RE_FreeAllRenderResults(void);
190 /* On file load or changes engines, free persistent render data.
191  * Assumes no engines are currently rendering. */
192 void RE_FreeAllPersistentData(void);
193 /* Free persistent render data, optionally only for the given scene. */
194 void RE_FreePersistentData(const Scene *scene);
195 
196 /* get results and statistics */
197 void RE_FreeRenderResult(struct RenderResult *rr);
198 struct RenderResult *RE_AcquireResultRead(struct Render *re);
199 struct RenderResult *RE_AcquireResultWrite(struct Render *re);
200 void RE_ReleaseResult(struct Render *re);
201 void RE_AcquireResultImageViews(struct Render *re, struct RenderResult *rr);
202 void RE_ReleaseResultImageViews(struct Render *re, struct RenderResult *rr);
203 void RE_AcquireResultImage(struct Render *re, struct RenderResult *rr, const int view_id);
204 void RE_ReleaseResultImage(struct Render *re);
205 void RE_SwapResult(struct Render *re, struct RenderResult **rr);
206 void RE_ClearResult(struct Render *re);
207 struct RenderStats *RE_GetStats(struct Render *re);
208 
209 void RE_ResultGet32(struct Render *re, unsigned int *rect);
210 void RE_AcquiredResultGet32(struct Render *re,
211  struct RenderResult *result,
212  unsigned int *rect,
213  const int view_id);
214 
216  struct RenderData *rd,
217  struct ImBuf *ibuf,
218  const int view_id);
219 
220 struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name);
221 float *RE_RenderLayerGetPass(volatile struct RenderLayer *rl,
222  const char *name,
223  const char *viewname);
224 
225 bool RE_HasSingleLayer(struct Render *re);
226 
227 /* add passes for grease pencil */
228 struct RenderPass *RE_create_gp_pass(struct RenderResult *rr,
229  const char *layername,
230  const char *viewname);
231 
232 void RE_create_render_pass(struct RenderResult *rr,
233  const char *name,
234  int channels,
235  const char *chan_id,
236  const char *layername,
237  const char *viewname);
238 
239 /* obligatory initialize call, disprect is optional */
240 void RE_InitState(struct Render *re,
241  struct Render *source,
242  struct RenderData *rd,
243  struct ListBase *render_layers,
244  struct ViewLayer *single_layer,
245  int winx,
246  int winy,
247  rcti *disprect);
248 
249 /* set up the viewplane/perspective matrix, three choices */
250 struct Object *RE_GetCamera(struct Render *re); /* return camera override if set */
251 void RE_SetOverrideCamera(struct Render *re, struct Object *cam_ob);
252 void RE_SetCamera(struct Render *re, struct Object *cam_ob);
253 
254 /* get current view and window transform */
255 void RE_GetViewPlane(struct Render *re, rctf *r_viewplane, rcti *r_disprect);
256 
257 /* Set the render threads based on the command-line and auto-threads setting. */
258 void RE_init_threadcount(Render *re);
259 
260 bool RE_WriteRenderViewsImage(struct ReportList *reports,
261  struct RenderResult *rr,
262  struct Scene *scene,
263  const bool stamp,
264  char *name);
265 bool RE_WriteRenderViewsMovie(struct ReportList *reports,
266  struct RenderResult *rr,
267  struct Scene *scene,
268  struct RenderData *rd,
269  struct bMovieHandle *mh,
270  void **movie_ctx_arr,
271  const int totvideos,
272  bool preview);
273 
274 /* only RE_NewRender() needed, main Blender render calls */
275 void RE_RenderFrame(struct Render *re,
276  struct Main *bmain,
277  struct Scene *scene,
278  struct ViewLayer *single_layer,
279  struct Object *camera_override,
280  int frame,
281  const bool write_still);
282 void RE_RenderAnim(struct Render *re,
283  struct Main *bmain,
284  struct Scene *scene,
285  struct ViewLayer *single_layer,
286  struct Object *camera_override,
287  int sfra,
288  int efra,
289  int tfra);
290 #ifdef WITH_FREESTYLE
291 void RE_RenderFreestyleStrokes(struct Render *re,
292  struct Main *bmain,
293  struct Scene *scene,
294  int render);
295 void RE_RenderFreestyleExternal(struct Render *re);
296 #endif
297 
298 void RE_SetActiveRenderView(struct Render *re, const char *viewname);
299 const char *RE_GetActiveRenderView(struct Render *re);
300 
301 /* error reporting */
302 void RE_SetReports(struct Render *re, struct ReportList *reports);
303 
304 /* main preview render call */
305 void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene);
306 
307 bool RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
308 bool RE_WriteRenderResult(struct ReportList *reports,
309  RenderResult *rr,
310  const char *filename,
311  struct ImageFormatData *imf,
312  const char *view,
313  int layer);
315  void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty);
316 
317 /* display and event callbacks */
318 void RE_display_init_cb(struct Render *re,
319  void *handle,
320  void (*f)(void *handle, RenderResult *rr));
321 void RE_display_clear_cb(struct Render *re,
322  void *handle,
323  void (*f)(void *handle, RenderResult *rr));
324 void RE_display_update_cb(struct Render *re,
325  void *handle,
326  void (*f)(void *handle, RenderResult *rr, volatile struct rcti *rect));
327 void RE_stats_draw_cb(struct Render *re, void *handle, void (*f)(void *handle, RenderStats *rs));
328 void RE_progress_cb(struct Render *re, void *handle, void (*f)(void *handle, float));
329 void RE_draw_lock_cb(struct Render *re, void *handle, void (*f)(void *handle, bool lock));
330 void RE_test_break_cb(struct Render *re, void *handle, int (*f)(void *handle));
332  void *handle,
333  void (*f)(void *handle, struct Scene *scene));
334 
335 void RE_gl_context_create(Render *re);
336 void RE_gl_context_destroy(Render *re);
337 void *RE_gl_context_get(Render *re);
338 void *RE_gpu_context_get(Render *re);
339 
340 /* should move to kernel once... still unsure on how/where */
341 float RE_filter_value(int type, float x);
342 
343 int RE_seq_render_active(struct Scene *scene, struct RenderData *rd);
344 
346 bool RE_passes_have_name(struct RenderLayer *rl);
347 
348 struct RenderPass *RE_pass_find_by_name(volatile struct RenderLayer *rl,
349  const char *name,
350  const char *viewname);
351 struct RenderPass *RE_pass_find_by_type(volatile struct RenderLayer *rl,
352  int passtype,
353  const char *viewname);
354 
355 /* shaded view or baking options */
356 #define RE_BAKE_NORMALS 0
357 #define RE_BAKE_DISPLACEMENT 1
358 #define RE_BAKE_AO 2
359 
360 void RE_GetCameraWindow(struct Render *re, struct Object *camera, float mat[4][4]);
361 void RE_GetCameraWindowWithOverscan(struct Render *re, float overscan, float r_winmat[4][4]);
362 void RE_GetCameraModelMatrix(struct Render *re, struct Object *camera, float r_modelmat[4][4]);
363 struct Scene *RE_GetScene(struct Render *re);
364 void RE_SetScene(struct Render *re, struct Scene *sce);
365 
366 bool RE_is_rendering_allowed(struct Scene *scene,
367  struct ViewLayer *single_layer,
368  struct Object *camera_override,
369  struct ReportList *reports);
370 
371 bool RE_allow_render_generic_object(struct Object *ob);
372 
373 /******* defined in render_result.c *********/
374 
378 struct RenderView *RE_RenderViewGetById(struct RenderResult *rr, const int view_id);
379 struct RenderView *RE_RenderViewGetByName(struct RenderResult *rr, const char *viewname);
380 
382 
383 #ifdef __cplusplus
384 }
385 #endif
#define MAX_ID_NAME
Definition: DNA_ID.h:269
These structs are the foundation for all linked lists in the library system.
static AppView * view
_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
void RE_current_scene_update_cb(struct Render *re, void *handle, void(*f)(void *handle, struct Scene *scene))
void RE_ResultGet32(struct Render *re, unsigned int *rect)
Definition: pipeline.c:520
struct Object * RE_GetCamera(struct Render *re)
Definition: initrender.c:169
void RE_FreeRender(struct Render *re)
Definition: pipeline.c:627
struct RenderLayer RenderLayer
void RE_GetCameraWindow(struct Render *re, struct Object *camera, float mat[4][4])
Definition: initrender.c:205
bool RE_RenderResult_is_stereo(RenderResult *res)
bool RE_layers_have_name(struct RenderResult *result)
Definition: pipeline.c:2740
void * RE_gpu_context_get(Render *re)
Definition: pipeline.c:996
void * RE_gl_context_get(Render *re)
Definition: pipeline.c:991
void RE_FreePersistentData(const Scene *scene)
Definition: pipeline.c:700
struct Scene * RE_GetScene(struct Render *re)
Definition: pipeline.c:387
void RE_ReleaseResult(struct Render *re)
Definition: pipeline.c:379
void RE_test_break_cb(struct Render *re, void *handle, int(*f)(void *handle))
Definition: pipeline.c:959
void RE_AcquiredResultGet32(struct Render *re, struct RenderResult *result, unsigned int *rect, const int view_id)
Definition: pipeline.c:538
void RE_SetScene(struct Render *re, struct Scene *sce)
Definition: pipeline.c:395
struct RenderView * RE_RenderViewGetByName(struct RenderResult *rr, const char *viewname)
void RE_draw_lock_cb(struct Render *re, void *handle, void(*f)(void *handle, bool lock))
Definition: pipeline.c:953
struct RenderStats RenderStats
void RE_AcquireResultImage(struct Render *re, struct RenderResult *rr, const int view_id)
Definition: pipeline.c:466
struct RenderLayer * RE_GetRenderLayer(struct RenderResult *rr, const char *name)
Definition: pipeline.c:276
bool RE_passes_have_name(struct RenderLayer *rl)
Definition: pipeline.c:2753
void RE_RenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, int sfra, int efra, int tfra)
Definition: pipeline.c:2314
void RE_FreeAllPersistentData(void)
Definition: pipeline.c:679
void RE_InitState(struct Render *re, struct Render *source, struct RenderData *rd, struct ListBase *render_layers, struct ViewLayer *single_layer, int winx, int winy, rcti *disprect)
Definition: pipeline.c:788
struct Render * RE_GetRender(const char *name)
Definition: pipeline.c:328
struct RenderResult * RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
Definition: pipeline.c:290
struct RenderResult * RE_AcquireResultWrite(struct Render *re)
Definition: pipeline.c:353
void RE_gl_context_destroy(Render *re)
Definition: pipeline.c:975
struct RenderResult RenderResult
bool RE_WriteRenderViewsMovie(struct ReportList *reports, struct RenderResult *rr, struct Scene *scene, struct RenderData *rd, struct bMovieHandle *mh, void **movie_ctx_arr, const int totvideos, bool preview)
Definition: pipeline.c:2133
float * RE_RenderLayerGetPass(volatile struct RenderLayer *rl, const char *name, const char *viewname)
void RE_SetCamera(struct Render *re, struct Object *cam_ob)
Definition: initrender.c:185
void RE_ReleaseResultImage(struct Render *re)
Definition: pipeline.c:512
void RE_SetActiveRenderView(struct Render *re, const char *viewname)
Definition: pipeline.c:1741
struct Render * RE_NewSceneRender(const struct Scene *scene)
void RE_GetCameraWindowWithOverscan(struct Render *re, float overscan, float r_winmat[4][4])
Definition: initrender.c:212
void RE_InitRenderCB(struct Render *re)
Definition: pipeline.c:607
struct RenderView * RE_RenderViewGetById(struct RenderResult *rr, const int view_id)
void RE_SwapResult(struct Render *re, struct RenderResult **rr)
Definition: pipeline.c:371
void RE_SetReports(struct Render *re, struct ReportList *reports)
Definition: pipeline.c:1831
void RE_ClearResult(struct Render *re)
Definition: pipeline.c:363
void RE_FreeRenderResult(struct RenderResult *rr)
Definition: pipeline.c:265
bool RE_HasCombinedLayer(RenderResult *res)
#define RE_MAXNAME
Definition: RE_pipeline.h:51
void RE_ReleaseResultImageViews(struct Render *re, struct RenderResult *rr)
Definition: pipeline.c:453
struct Render * RE_NewRender(const char *name)
Definition: pipeline.c:557
void RE_display_update_cb(struct Render *re, void *handle, void(*f)(void *handle, RenderResult *rr, volatile struct rcti *rect))
bool RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode)
Definition: pipeline.c:2611
bool RE_allow_render_generic_object(struct Object *ob)
Definition: pipeline.c:2848
void RE_stats_draw_cb(struct Render *re, void *handle, void(*f)(void *handle, RenderStats *rs))
Definition: pipeline.c:942
bool RE_WriteRenderResult(struct ReportList *reports, RenderResult *rr, const char *filename, struct ImageFormatData *imf, const char *view, int layer)
struct RenderPass * RE_pass_find_by_type(volatile struct RenderLayer *rl, int passtype, const char *viewname)
bool RE_HasFloatPixels(RenderResult *res)
void RE_GetCameraModelMatrix(struct Render *re, struct Object *camera, float r_modelmat[4][4])
Definition: initrender.c:230
void RE_gl_context_create(Render *re)
Definition: pipeline.c:967
bool RE_is_rendering_allowed(struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, struct ReportList *reports)
Definition: pipeline.c:1645
void RE_display_clear_cb(struct Render *re, void *handle, void(*f)(void *handle, RenderResult *rr))
Definition: pipeline.c:925
void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene)
Definition: pipeline.c:2583
struct RenderView RenderView
void RE_RenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewLayer *single_layer, struct Object *camera_override, int frame, const bool write_still)
Definition: pipeline.c:1877
void RE_GetViewPlane(struct Render *re, rctf *r_viewplane, rcti *r_disprect)
Definition: initrender.c:235
struct RenderPass * RE_create_gp_pass(struct RenderResult *rr, const char *layername, const char *viewname)
Definition: pipeline.c:2822
struct RenderStats * RE_GetStats(struct Render *re)
Definition: pipeline.c:552
void RE_create_render_pass(struct RenderResult *rr, const char *name, int channels, const char *chan_id, const char *layername, const char *viewname)
struct RenderPass * RE_pass_find_by_name(volatile struct RenderLayer *rl, const char *name, const char *viewname)
void RE_FreeAllRender(void)
Definition: pipeline.c:653
bool RE_HasSingleLayer(struct Render *re)
Definition: pipeline.c:285
void RE_display_init_cb(struct Render *re, void *handle, void(*f)(void *handle, RenderResult *rr))
Definition: pipeline.c:920
struct RenderPass RenderPass
void RE_render_result_rect_from_ibuf(struct RenderResult *rr, struct RenderData *rd, struct ImBuf *ibuf, const int view_id)
void RE_AcquireResultImageViews(struct Render *re, struct RenderResult *rr)
Definition: pipeline.c:407
float RE_filter_value(int type, float x)
Definition: initrender.c:128
void RE_FreeAllRenderResults(void)
Definition: pipeline.c:666
int RE_seq_render_active(struct Scene *scene, struct RenderData *rd)
Definition: pipeline.c:1313
void RE_SetOverrideCamera(struct Render *re, struct Object *cam_ob)
Definition: initrender.c:175
const char * RE_GetActiveRenderView(struct Render *re)
Definition: pipeline.c:1746
void RE_progress_cb(struct Render *re, void *handle, void(*f)(void *handle, float))
Definition: pipeline.c:947
bool RE_WriteRenderViewsImage(struct ReportList *reports, struct RenderResult *rr, struct Scene *scene, const bool stamp, char *name)
Definition: pipeline.c:2010
struct RenderResult * RE_AcquireResultRead(struct Render *re)
Definition: pipeline.c:343
RenderResult * RE_DuplicateRenderResult(RenderResult *rr)
void RE_init_threadcount(Render *re)
Definition: pipeline.c:2657
struct Render * RE_GetSceneRender(const struct Scene *scene)
Scene scene
Definition: BKE_main.h:116
ustring name
Definition: node.h:174
struct PreviewImage * preview
ListBase passes
Definition: RE_pipeline.h:108
char name[RE_MAXNAME]
Definition: RE_pipeline.h:100
struct RenderLayer * next
Definition: RE_pipeline.h:97
void * exrhandle
Definition: RE_pipeline.h:106
struct RenderLayer * prev
Definition: RE_pipeline.h:97
char chan_id[8]
Definition: RE_pipeline.h:81
char name[64]
Definition: RE_pipeline.h:80
char fullname[64]
Definition: RE_pipeline.h:85
char view[64]
Definition: RE_pipeline.h:86
int channels
Definition: RE_pipeline.h:79
float * rect
Definition: RE_pipeline.h:82
struct RenderPass * prev
Definition: RE_pipeline.h:78
struct RenderPass * next
Definition: RE_pipeline.h:78
struct RenderResult * next
Definition: RE_pipeline.h:113
ListBase views
Definition: RE_pipeline.h:138
short sample_nr
Definition: RE_pipeline.h:117
ListBase layers
Definition: RE_pipeline.h:135
volatile RenderLayer * renlay
Definition: RE_pipeline.h:142
float * rectz
Definition: RE_pipeline.h:127
volatile rcti renrect
Definition: RE_pipeline.h:141
struct RenderResult * prev
Definition: RE_pipeline.h:113
char * error
Definition: RE_pipeline.h:155
struct StampData * stamp_data
Definition: RE_pipeline.h:157
float * rectf
Definition: RE_pipeline.h:125
const char * statstr
Definition: RE_pipeline.h:164
char scene_name[MAX_ID_NAME - 2]
Definition: RE_pipeline.h:165
float mem_peak
Definition: RE_pipeline.h:166
double starttime
Definition: RE_pipeline.h:163
float mem_used
Definition: RE_pipeline.h:166
double lastframetime
Definition: RE_pipeline.h:163
const char * infostr
Definition: RE_pipeline.h:164
bool localview
Definition: RE_pipeline.h:162
struct RenderView * prev
Definition: RE_pipeline.h:65
float * rectf
Definition: RE_pipeline.h:69
float * rectz
Definition: RE_pipeline.h:71
int * rect32
Definition: RE_pipeline.h:73
struct RenderView * next
Definition: RE_pipeline.h:65
char name[64]
Definition: RE_pipeline.h:66
char name[RE_MAXNAME]
Definition: render_types.h:72