Merge branch 'blender2.7'
[blender.git] / source / blender / render / extern / include / RE_engine.h
index e23d881..8a6282a 100644 (file)
 
 struct bNode;
 struct bNodeTree;
+struct BakePixel;
+struct Depsgraph;
+struct IDProperty;
+struct Main;
 struct Object;
 struct Render;
 struct RenderData;
@@ -50,13 +54,13 @@ struct RenderLayer;
 struct RenderResult;
 struct ReportList;
 struct Scene;
-struct BakePixel;
+struct ViewLayer;
 
 /* External Engine */
 
 /* RenderEngineType.flag */
 #define RE_INTERNAL                            1
-#define RE_GAME                                        2
+/* #define RE_FLAG_DEPRECATED  2 */
 #define RE_USE_PREVIEW                 4
 #define RE_USE_POSTPROCESS             8
 #define RE_USE_SHADING_NODES   16
@@ -90,21 +94,26 @@ typedef struct RenderEngineType {
        char name[64];
        int flag;
 
-       void (*update)(struct RenderEngine *engine, struct Main *bmain, struct Scene *scene);
-       void (*render)(struct RenderEngine *engine, struct Scene *scene);
-       void (*bake)(struct RenderEngine *engine, struct Scene *scene, struct Object *object, const int pass_type, const int pass_filter, const int object_id, const struct BakePixel *pixel_array, const int num_pixels, const int depth, void *result);
+       void (*update)(struct RenderEngine *engine, struct Main *bmain, struct Depsgraph *depsgraph);
+       void (*render)(struct RenderEngine *engine, struct Depsgraph *depsgraph);
+       void (*bake)(struct RenderEngine *engine, struct Depsgraph *depsgraph,
+                    struct Object *object, const int pass_type,
+                    const int pass_filter, const int object_id, const struct BakePixel *pixel_array, const int num_pixels,
+                    const int depth, void *result);
 
        void (*view_update)(struct RenderEngine *engine, const struct bContext *context);
        void (*view_draw)(struct RenderEngine *engine, const struct bContext *context);
 
        void (*update_script_node)(struct RenderEngine *engine, struct bNodeTree *ntree, struct bNode *node);
-       void (*update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl);
+       void (*update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer);
+
+       struct DrawEngineType *draw_engine;
 
        /* RNA integration */
        ExtensionRNA ext;
 } RenderEngineType;
 
-typedef void (*update_render_passes_cb_t)(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+typedef void (*update_render_passes_cb_t)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
                                           const char *name, int channels, const char *chanid, int type);
 
 typedef struct RenderEngine {
@@ -126,6 +135,9 @@ typedef struct RenderEngine {
 
        struct ReportList *reports;
 
+       /* Depsgraph */
+       struct Depsgraph *depsgraph;
+
        /* for blender internal only */
        int update_flag;
        int job_update_flag;
@@ -172,20 +184,26 @@ bool RE_engine_is_external(struct Render *re);
 
 void RE_engine_frame_set(struct RenderEngine *engine, int frame, float subframe);
 
-void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
                                     update_render_passes_cb_t callback);
-void RE_engine_register_pass(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+void RE_engine_register_pass(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
                              const char *name, int channels, const char *chanid, int type);
 
 /* Engine Types */
 
 void RE_engines_init(void);
 void RE_engines_exit(void);
+void RE_engines_register(RenderEngineType *render_type);
+
+bool RE_engine_is_opengl(RenderEngineType *render_type);
 
 RenderEngineType *RE_engines_find(const char *idname);
 
 rcti* RE_engine_get_current_tiles(struct Render *re, int *r_total_tiles, bool *r_needs_free);
 struct RenderData *RE_engine_get_render_data(struct Render *re);
-void RE_bake_engine_set_engine_parameters(struct Render *re, struct Main *bmain, struct Scene *scene);
+void RE_bake_engine_set_engine_parameters(
+        struct Render *re, struct Main *bmain, struct Scene *scene);
+
+void RE_engine_free_blender_memory(struct RenderEngine *engine);
 
 #endif /* __RE_ENGINE_H__ */