diff options
Diffstat (limited to 'source/blender/render/extern/include')
5 files changed, 47 insertions, 17 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 321eda0175f..f789ab702fe 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -39,6 +39,9 @@ struct bNode; struct bNodeTree; +struct Depsgraph; +struct IDProperty; +struct Main; struct Object; struct Render; struct RenderData; @@ -63,6 +66,7 @@ struct BakePixel; #define RE_USE_TEXTURE_PREVIEW 128 #define RE_USE_SHADING_NODES_CUSTOM 256 #define RE_USE_SPHERICAL_STEREO 512 +#define RE_USE_LEGACY_PIPELINE 1024 /* XXX Temporary flag, to be removed once draw manager is finished. */ /* RenderEngine.flag */ #define RE_ENGINE_ANIMATION 1 @@ -88,15 +92,22 @@ 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, struct Scene *scene); + void (*render_to_image)(struct RenderEngine *engine, struct Depsgraph *depsgraph); + 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 (*view_update)(struct RenderEngine *engine, const struct bContext *context); - void (*view_draw)(struct RenderEngine *engine, const struct bContext *context); + void (*render_to_view)(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); + + void (*collection_settings_create)(struct RenderEngine *engine, struct IDProperty *props); + void (*render_settings_create)(struct RenderEngine *engine, struct IDProperty *props); + + struct DrawEngineType *draw_engine; /* RNA integration */ ExtensionRNA ext; @@ -163,19 +174,25 @@ bool RE_engine_is_external(struct Render *re); void RE_engine_frame_set(struct RenderEngine *engine, int frame, float subframe); -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(struct Main *bmain, 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 Depsgraph *graph, struct Scene *scene); + +struct ViewLayer *RE_engine_get_view_layer(struct Render *re); #endif /* __RE_ENGINE_H__ */ diff --git a/source/blender/render/extern/include/RE_multires_bake.h b/source/blender/render/extern/include/RE_multires_bake.h index c1c5fc4a04d..901c1c1d05d 100644 --- a/source/blender/render/extern/include/RE_multires_bake.h +++ b/source/blender/render/extern/include/RE_multires_bake.h @@ -43,6 +43,12 @@ typedef struct MultiresBakeRender { short mode; bool use_lores_mesh; /* Use low-resolution mesh when baking displacement maps */ + /* material aligned image array (for per-face bake image) */ + struct { + Image **array; + int len; + } ob_image; + int number_of_rays; /* Number of rays to be cast when doing AO baking */ float bias; /* Bias between object and start ray point when doing AO baking */ diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index bb056675887..0557efccc2f 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -37,6 +37,8 @@ struct bMovieHandle; struct bNodeTree; +struct Depsgraph; +struct EvaluationContext; struct Image; struct ImageFormatData; struct Main; @@ -46,9 +48,10 @@ struct RenderData; struct RenderResult; struct ReportList; struct Scene; -struct SceneRenderLayer; +struct ViewLayer; struct EnvMap; struct StampData; +struct ViewRender; /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* this include is what is exposed of render to outside world */ @@ -105,12 +108,8 @@ typedef struct RenderLayer { /* copy of RenderData */ char name[RE_MAXNAME]; - unsigned int lay, lay_zmask, lay_exclude; int layflag, passflag, pass_xor; - struct Material *mat_override; - struct Group *light_override; - /* MULTIVIEW_TODO: acolrect and scolrect are not supported by multiview at the moment. * If they are really required they should be in RenderView instead */ @@ -241,7 +240,8 @@ struct RenderPass *RE_create_gp_pass(struct RenderResult *rr, const char *layern /* obligatory initialize call, disprect is optional */ void RE_InitState(struct Render *re, struct Render *source, struct RenderData *rd, - struct SceneRenderLayer *srl, + struct ListBase *render_layers, const int active_layer, + struct ViewRender *view_render, struct ViewLayer *view_layer, int winx, int winy, rcti *disprect); void RE_ChangeResolution(struct Render *re, int winx, int winy, rcti *disprect); void RE_ChangeModeFlag(struct Render *re, int flag, bool clear); @@ -250,6 +250,7 @@ void RE_ChangeModeFlag(struct Render *re, int flag, bool clear); struct Object *RE_GetCamera(struct Render *re); /* return camera override if set */ void RE_SetOverrideCamera(struct Render *re, struct Object *camera); void RE_SetCamera(struct Render *re, struct Object *camera); +void RE_SetDepsgraph(struct Render *re, struct Depsgraph *graph); void RE_SetEnvmapCamera(struct Render *re, struct Object *cam_ob, float viewscale, float clipsta, float clipend); void RE_SetWindow(struct Render *re, const rctf *viewplane, float clipsta, float clipend); void RE_SetOrtho(struct Render *re, const rctf *viewplane, float clipsta, float clipend); @@ -289,7 +290,7 @@ bool RE_WriteRenderViewsMovie( /* only RE_NewRender() needed, main Blender render calls */ void RE_BlenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene, - struct SceneRenderLayer *srl, struct Object *camera_override, + struct ViewLayer *view_layer, struct Object *camera_override, unsigned int lay_override, int frame, const bool write_still); void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, struct Object *camera_override, unsigned int lay_override, int sfra, int efra, int tfra); @@ -301,11 +302,13 @@ void RE_RenderFreestyleExternal(struct Render *re); void RE_SetActiveRenderView(struct Render *re, const char *viewname); const char *RE_GetActiveRenderView(struct Render *re); +void RE_SetEngineByID(struct Render *re, const char *engine_id); + /* error reporting */ void RE_SetReports(struct Render *re, struct ReportList *reports); /* main preview render call */ -void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene); +void RE_PreviewRender(struct Render *re, struct Main *bmain, struct Scene *scene, struct ViewRender *render_view); bool RE_ReadRenderResult(struct Scene *scene, struct Scene *scenode); bool RE_WriteRenderResult( @@ -372,6 +375,7 @@ void RE_DataBase_GetView(struct Render *re, float mat[4][4]); void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[4][4]); void RE_GetCameraModelMatrix(struct Render *re, struct Object *camera, float r_mat[4][4]); struct Scene *RE_GetScene(struct Render *re); +struct EvaluationContext *RE_GetEvalCtx(struct Render *re); bool RE_force_single_renderlayer(struct Scene *scene); bool RE_is_rendering_allowed(struct Scene *scene, struct Object *camera_override, struct ReportList *reports); diff --git a/source/blender/render/extern/include/RE_render_ext.h b/source/blender/render/extern/include/RE_render_ext.h index 1779ccc5d19..17b321fd3b4 100644 --- a/source/blender/render/extern/include/RE_render_ext.h +++ b/source/blender/render/extern/include/RE_render_ext.h @@ -41,6 +41,8 @@ struct DerivedMesh; struct ImagePool; struct MTex; struct Scene; +struct ViewLayer; +struct Render; /* render_texture.c */ /* used by particle.c, effect.c, editmesh_modes.c and brush.c, returns 1 if rgb, 0 otherwise */ @@ -70,17 +72,20 @@ struct PointDensity; void RE_point_density_cache( struct Scene *scene, + struct ViewLayer *view_layer, struct PointDensity *pd, const bool use_render_params); void RE_point_density_minmax( struct Scene *scene, + struct ViewLayer *view_layer, struct PointDensity *pd, const bool use_render_params, float r_min[3], float r_max[3]); void RE_point_density_sample( struct Scene *scene, + struct ViewLayer *view_layer, struct PointDensity *pd, const int resolution, const bool use_render_params, diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h index b64c0c8fc52..0b392c122db 100644 --- a/source/blender/render/extern/include/RE_shader_ext.h +++ b/source/blender/render/extern/include/RE_shader_ext.h @@ -179,8 +179,6 @@ typedef struct ShadeInput { unsigned int lay; int layflag, passflag, combinedflag; short object_pass_index; - struct Group *light_override; - struct Material *mat_override; #ifdef RE_RAYCOUNTER RayCounter raycounter; |