~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to source/blender/render/extern/include/RE_pipeline.h

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2012-07-23 08:54:18 UTC
  • mfrom: (14.2.16 sid)
  • mto: (14.2.19 sid)
  • mto: This revision was merged to the branch mainline in revision 42.
  • Revision ID: package-import@ubuntu.com-20120723085418-9foz30v6afaf5ffs
Tags: 2.63a-2
* debian/: Cycles support added (Closes: #658075)
  For now, this top feature has been enabled only
  on [any-amd64 any-i386] architectures because
  of OpenImageIO failing on all others
* debian/: scripts installation path changed
  from /usr/lib to /usr/share:
  + debian/patches/: patchset re-worked for path changing
  + debian/control: "Breaks" field added on yafaray-exporter

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
 * $Id: RE_pipeline.h 30079 2010-07-07 14:28:22Z blendix $
3
 
 *
 
1
/*
4
2
 * ***** BEGIN GPL LICENSE BLOCK *****
5
3
 *
6
4
 * This program is free software; you can redistribute it and/or
27
25
 * ***** END GPL LICENSE BLOCK *****
28
26
 */
29
27
 
30
 
#ifndef RE_PIPELINE_H
31
 
#define RE_PIPELINE_H
 
28
/** \file RE_pipeline.h
 
29
 *  \ingroup render
 
30
 */
 
31
 
 
32
#ifndef __RE_PIPELINE_H__
 
33
#define __RE_PIPELINE_H__
32
34
 
33
35
#include "DNA_listBase.h"
34
36
#include "DNA_vec_types.h"
35
 
#include "BKE_utildefines.h"
36
 
#include "RNA_types.h"
37
37
 
38
38
struct bNodeTree;
39
39
struct Image;
 
40
struct Main;
40
41
struct NodeBlurData;
41
42
struct Object;
42
 
struct ReportList;
43
43
struct RenderData;
44
 
struct RenderEngine;
45
 
struct RenderEngineType;
46
44
struct RenderResult;
47
45
struct ReportList;
48
46
struct Scene;
49
47
struct SceneRenderLayer;
 
48
struct EnvMap;
50
49
 
51
50
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
52
51
/* this include is what is exposed of render to outside world */
59
58
typedef struct Render Render;
60
59
 
61
60
/* Render Result usage:
62
 
 
63
 
- render engine allocates/frees and delivers raw floating point rects
64
 
- right now it's full rects, but might become tiles or file 
65
 
- the display client has to allocate display rects, sort out what to display, 
66
 
  and how it's converted
67
 
*/
 
61
 *
 
62
 * - render engine allocates/frees and delivers raw floating point rects
 
63
 * - right now it's full rects, but might become tiles or file
 
64
 * - the display client has to allocate display rects, sort out what to display,
 
65
 *   and how it's converted
 
66
 */
68
67
 
69
68
typedef struct RenderPass {
70
69
        struct RenderPass *next, *prev;
142
141
typedef struct RenderStats {
143
142
        int cfra;
144
143
        int totface, totvert, totstrand, tothalo, totlamp, totpart;
145
 
        short curfield, curblur, curpart, partsdone, convertdone;
 
144
        short curfield, curblur, curpart, partsdone, convertdone, curfsa;
146
145
        double starttime, lastframetime;
147
 
        char *infostr, *statstr, scenename[32];
 
146
        const char *infostr, *statstr;
 
147
        char scenename[32];
148
148
        
149
149
} RenderStats;
150
150
 
158
158
/* returns 1 while render is working (or renders called from within render) */
159
159
int RE_RenderInProgress(struct Render *re);
160
160
 
 
161
/* assign default dummy callbacks */
 
162
void RE_InitRenderCB(struct Render *re);
 
163
 
161
164
/* use free render as signal to do everything over (previews) */
162
165
void RE_FreeRender (struct Render *re);
163
166
/* only called on exit */
164
167
void RE_FreeAllRender (void);
 
168
/* only call on file load */
 
169
void RE_FreeAllRenderResults(void);
165
170
 
166
171
/* get results and statistics */
167
172
void RE_FreeRenderResult(struct RenderResult *rr);
179
184
/* obligatory initialize call, disprect is optional */
180
185
void RE_InitState (struct Render *re, struct Render *source, struct RenderData *rd, struct SceneRenderLayer *srl, int winx, int winy, rcti *disprect);
181
186
 
182
 
/* use this to change disprect of active render */
183
 
void RE_SetDispRect (struct Render *re, rcti *disprect);
184
 
 
185
187
/* set up the viewplane/perspective matrix, three choices */
 
188
struct Object *RE_GetCamera(struct Render *re); /* return camera override if set */
186
189
void RE_SetCamera(struct Render *re, struct Object *camera);
 
190
void RE_SetEnvmapCamera(struct Render *re, struct Object *cam_ob, float viewscale, float clipsta, float clipend);
187
191
void RE_SetWindow (struct Render *re, rctf *viewplane, float clipsta, float clipend);
188
192
void RE_SetOrtho (struct Render *re, rctf *viewplane, float clipsta, float clipend);
189
193
void RE_SetPixelSize(struct Render *re, float pixsize);
192
196
void RE_SetView (struct Render *re, float mat[][4]);
193
197
 
194
198
/* make or free the dbase */
195
 
void RE_Database_FromScene(struct Render *re, struct Scene *scene, unsigned int lay, int use_camera_view);
 
199
void RE_Database_FromScene(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int use_camera_view);
196
200
void RE_Database_Free (struct Render *re);
197
201
 
198
202
/* project dbase again, when viewplane/perspective changed */
208
212
void RE_TileProcessor(struct Render *re);
209
213
 
210
214
/* only RE_NewRender() needed, main Blender render calls */
211
 
void RE_BlenderFrame(struct Render *re, struct Scene *scene, struct SceneRenderLayer *srl, unsigned int lay, int frame);
212
 
void RE_BlenderAnim(struct Render *re, struct Scene *scene, unsigned int lay, int sfra, int efra, int tfra, struct ReportList *reports);
 
215
void RE_BlenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene, struct SceneRenderLayer *srl, struct Object *camera_override, unsigned int lay, int frame, const short write_still);
 
216
void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, struct Object *camera_override, unsigned int lay, int sfra, int efra, int tfra);
 
217
 
 
218
/* error reporting */
 
219
void RE_SetReports(struct Render *re, struct ReportList *reports);
213
220
 
214
221
/* main preview render call */
215
 
void RE_PreviewRender(struct Render *re, struct Scene *scene);
 
222
void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene);
216
223
 
217
 
void RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
218
 
void RE_WriteRenderResult(RenderResult *rr, char *filename, int compress);
 
224
int RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode);
 
225
int RE_WriteRenderResult(struct ReportList *reports, RenderResult *rr, const char *filename, int compress);
219
226
struct RenderResult *RE_MultilayerConvert(void *exrhandle, int rectx, int recty);
220
227
 
 
228
extern const float default_envmap_layout[];
 
229
int RE_WriteEnvmapResult(struct ReportList *reports, struct Scene *scene, struct EnvMap *env, const char *relpath, const char imtype, float layout[12]);
 
230
 
221
231
/* do a full sample buffer compo */
222
 
void RE_MergeFullSample(struct Render *re, struct Scene *sce, struct bNodeTree *ntree);
 
232
void RE_MergeFullSample(struct Render *re, struct Main *bmain, struct Scene *sce, struct bNodeTree *ntree);
223
233
 
224
234
/* ancient stars function... go away! */
225
235
void RE_make_stars(struct Render *re, struct Scene *scenev3d, void (*initfunc)(void),
226
 
                                   void (*vertexfunc)(float*),  void (*termfunc)(void));
 
236
                   void (*vertexfunc)(float*),  void (*termfunc)(void));
227
237
 
228
238
/* display and event callbacks */
229
239
void RE_display_init_cb (struct Render *re, void *handle, void (*f)(void *handle, RenderResult *rr));
231
241
void RE_display_draw_cb (struct Render *re, void *handle, void (*f)(void *handle, RenderResult *rr, volatile struct rcti *rect));
232
242
void RE_stats_draw_cb   (struct Render *re, void *handle, void (*f)(void *handle, RenderStats *rs));
233
243
void RE_progress_cb     (struct Render *re, void *handle, void (*f)(void *handle, float));
 
244
void RE_draw_lock_cb            (struct Render *re, void *handle, void (*f)(void *handle, int));
234
245
void RE_test_break_cb   (struct Render *re, void *handle, int (*f)(void *handle));
235
 
void RE_error_cb                (struct Render *re, void *handle, void (*f)(void *handle, char *str));
236
246
 
237
247
/* should move to kernel once... still unsure on how/where */
238
248
float RE_filter_value(int type, float x);
239
249
/* vector blur zbuffer method */
240
250
void RE_zbuf_accumulate_vecblur(struct NodeBlurData *nbd, int xsize, int ysize, float *newrect, float *imgrect, float *vecbufrect, float *zbufrect);
241
251
 
 
252
int RE_seq_render_active(struct Scene *scene, struct RenderData *rd);
 
253
 
242
254
/* shaded view or baking options */
243
 
#define RE_BAKE_LIGHT                   0
244
 
#define RE_BAKE_ALL                             1
245
 
#define RE_BAKE_AO                              2
246
 
#define RE_BAKE_NORMALS                 3
247
 
#define RE_BAKE_TEXTURE                 4
248
 
#define RE_BAKE_DISPLACEMENT    5
249
 
#define RE_BAKE_SHADOW                  6
 
255
#define RE_BAKE_LIGHT                           0       /* not listed in rna_scene.c -> can't be enabled! */
 
256
#define RE_BAKE_ALL                                     1
 
257
#define RE_BAKE_AO                                      2
 
258
#define RE_BAKE_NORMALS                         3
 
259
#define RE_BAKE_TEXTURE                         4
 
260
#define RE_BAKE_DISPLACEMENT            5
 
261
#define RE_BAKE_SHADOW                          6
 
262
#define RE_BAKE_SPEC_COLOR                      7
 
263
#define RE_BAKE_SPEC_INTENSITY          8
 
264
#define RE_BAKE_MIRROR_COLOR            9
 
265
#define RE_BAKE_MIRROR_INTENSITY        10
 
266
#define RE_BAKE_ALPHA                           11
 
267
#define RE_BAKE_EMIT                            12
250
268
 
251
 
void RE_Database_Baking(struct Render *re, struct Scene *scene, unsigned int lay, int type, struct Object *actob);
 
269
void RE_Database_Baking(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, const int type, struct Object *actob);
252
270
 
253
271
void RE_DataBase_GetView(struct Render *re, float mat[][4]);
254
272
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4]);
255
273
struct Scene *RE_GetScene(struct Render *re);
256
274
 
257
 
/* External Engine */
258
 
 
259
 
#define RE_INTERNAL                     1
260
 
#define RE_GAME                         2
261
 
#define RE_DO_PREVIEW           4
262
 
#define RE_DO_ALL                       8
263
 
 
264
 
extern ListBase R_engines;
265
 
 
266
 
typedef struct RenderEngineType {
267
 
        struct RenderEngineType *next, *prev;
268
 
 
269
 
        /* type info */
270
 
        char idname[64]; // best keep the same size as BKE_ST_MAXNAME
271
 
        char name[64];
272
 
        int flag;
273
 
 
274
 
        void (*render)(struct RenderEngine *engine, struct Scene *scene);
275
 
 
276
 
        /* RNA integration */
277
 
        ExtensionRNA ext;
278
 
} RenderEngineType;
279
 
 
280
 
typedef struct RenderEngine {
281
 
        RenderEngineType *type;
282
 
        struct Render *re;
283
 
        ListBase fullresult;
284
 
} RenderEngine;
285
 
 
286
 
void RE_layer_load_from_file(RenderLayer *layer, struct ReportList *reports, char *filename);
287
 
void RE_result_load_from_file(RenderResult *result, struct ReportList *reports, char *filename);
288
 
 
289
 
struct RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h);
290
 
void RE_engine_update_result(RenderEngine *engine, struct RenderResult *result);
291
 
void RE_engine_end_result(RenderEngine *engine, struct RenderResult *result);
292
 
 
293
 
int RE_engine_test_break(RenderEngine *engine);
294
 
void RE_engine_update_stats(RenderEngine *engine, char *stats, char *info);
295
 
 
296
 
void RE_engines_init(void);
297
 
void RE_engines_exit(void);
298
 
 
299
 
#endif /* RE_PIPELINE_H */
 
275
int RE_is_rendering_allowed(struct Scene *scene, struct Object *camera_override, struct ReportList *reports);
 
276
 
 
277
#endif /* __RE_PIPELINE_H__ */
300
278