Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/ED_screen.h3
-rw-r--r--source/blender/editors/include/ED_view3d.h15
-rw-r--r--source/blender/editors/render/render_internal.c8
-rw-r--r--source/blender/editors/render/render_opengl.c11
-rw-r--r--source/blender/editors/render/render_preview.c18
-rw-r--r--source/blender/editors/render/render_update.c4
-rw-r--r--source/blender/editors/screen/workspace_edit.c6
-rw-r--r--source/blender/editors/sculpt_paint/paint_image_proj.c10
-rw-r--r--source/blender/editors/space_node/node_edit.c12
-rw-r--r--source/blender/editors/space_node/node_templates.c3
-rw-r--r--source/blender/editors/space_node/space_node.c5
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c9
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c46
-rw-r--r--source/blender/editors/space_view3d/view3d_draw_legacy.c8
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c1
-rw-r--r--source/blender/editors/transform/transform.h1
-rw-r--r--source/blender/editors/transform/transform_generics.c2
17 files changed, 76 insertions, 86 deletions
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index db19bc48fb3..0a1ddabb294 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -157,8 +157,7 @@ struct WorkSpace *ED_workspace_add(
struct Main *bmain,
const char *name,
Scene *scene,
- ViewLayer *act_render_layer,
- struct ViewRender *view_render) ATTR_NONNULL();
+ ViewLayer *act_render_layer) ATTR_NONNULL();
bool ED_workspace_change(
struct WorkSpace *workspace_new,
struct bContext *C,
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index c394060dfba..9cc4cb692e3 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -78,7 +78,6 @@ typedef struct ViewContext {
struct Depsgraph *depsgraph;
struct Scene *scene;
struct ViewLayer *view_layer;
- struct RenderEngineType *engine_type;
struct Object *obact;
struct Object *obedit;
struct ARegion *ar;
@@ -380,14 +379,16 @@ void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, s
void ED_draw_object_facemap(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, const float col[4], const int facemap);
+struct RenderEngineType *ED_view3d_engine_type(struct Scene *scene, int drawtype);
+
bool ED_view3d_context_activate(struct bContext *C);
void ED_view3d_draw_offscreen_init(
struct Depsgraph *depsgraph, struct Scene *scene,
- struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
- struct View3D *v3d);
+ struct ViewLayer *view_layer, struct View3D *v3d,
+ int drawtype);
void ED_view3d_draw_offscreen(
struct Depsgraph *depsgraph, struct Scene *scene,
- struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+ struct ViewLayer *view_layer, int drawtype,
struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
struct GPUFXSettings *fx_settings,
@@ -410,16 +411,16 @@ enum {
struct ImBuf *ED_view3d_draw_offscreen_imbuf(
struct Depsgraph *depsgraph, struct Scene *scene,
- struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+ struct ViewLayer *view_layer, int drawtype,
struct View3D *v3d, struct ARegion *ar,
int sizex, int sizey, unsigned int flag, unsigned int draw_flags,
int alpha_mode, int samples, const char *viewname,
struct GPUOffScreen *ofs, char err_out[256]);
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
struct Depsgraph *depsgraph, struct Scene *scene,
- struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+ struct ViewLayer *view_layer, int drawtype,
struct Object *camera, int width, int height,
- unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
+ unsigned int flag, unsigned int draw_flags, int alpha_mode,
int samples, const char *viewname,
struct GPUOffScreen *ofs, char err_out[256]);
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 965e213631d..22e62c9ba0a 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -298,7 +298,7 @@ static void screen_render_view_layer_set(wmOperator *op, Main *mainp, Scene **sc
static int screen_render_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
- RenderEngineType *re_type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *re_type = RE_engines_find(scene->r.engine);
ViewLayer *view_layer = NULL;
Render *re;
Image *ima;
@@ -863,7 +863,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, const wmEvent *even
Main *mainp;
ViewLayer *view_layer = NULL;
Scene *scene = CTX_data_scene(C);
- RenderEngineType *re_type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *re_type = RE_engines_find(scene->r.engine);
Render *re;
wmJob *wm_job;
RenderJob *rj;
@@ -1310,10 +1310,10 @@ static void render_view3d_startjob(void *customdata, short *stop, short *do_upda
/* initalize always */
if (use_border) {
rdata.mode |= R_BORDER;
- RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, &rp->scene->view_render, NULL, rp->ar->winx, rp->ar->winy, &cliprct);
+ RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, NULL, rp->ar->winx, rp->ar->winy, &cliprct);
}
else
- RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, &rp->scene->view_render, NULL, rp->ar->winx, rp->ar->winy, NULL);
+ RE_InitState(re, NULL, &rdata, &rp->scene->view_layers, rp->scene->active_view_layer, NULL, rp->ar->winx, rp->ar->winy, NULL);
}
if (orth)
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index a334d3abc68..840c5c2b5aa 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -351,7 +351,6 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
char err_out[256] = "unknown";
ImBuf *ibuf_view;
const int alpha_mode = (draw_sky) ? R_ADDSKY : R_ALPHAPREMUL;
- struct RenderEngineType *engine_type = CTX_data_engine_type(C);
unsigned int draw_flags = V3D_OFSDRAW_NONE;
draw_flags |= (oglrender->ofs_full_samples) ? V3D_OFSDRAW_USE_FULL_SAMPLE : 0;
@@ -360,7 +359,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
draw_flags |= (draw_bgpic) ? V3D_OFSDRAW_USE_BACKGROUND : 0;
ibuf_view = ED_view3d_draw_offscreen_imbuf(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, v3d->drawtype,
v3d, ar, sizex, sizey,
IB_rectfloat, draw_flags, alpha_mode, oglrender->ofs_samples, viewname,
oglrender->ofs, err_out);
@@ -373,9 +372,9 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
else {
draw_flags |= (V3D_OFSDRAW_USE_GPENCIL | V3D_OFSDRAW_USE_BACKGROUND);
ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, OB_SOLID,
scene->camera, oglrender->sizex, oglrender->sizey,
- IB_rectfloat, draw_flags, OB_SOLID,
+ IB_rectfloat, draw_flags,
alpha_mode, oglrender->ofs_samples, viewname,
oglrender->ofs, err_out);
camera = scene->camera;
@@ -708,8 +707,6 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op)
/* create render */
oglrender->re = RE_NewSceneRender(scene);
- ViewRender *view_render = BKE_viewrender_get(scene, workspace);
- RE_SetEngineByID(oglrender->re, view_render->engine_id);
/* create image and image user */
oglrender->ima = BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result");
@@ -720,7 +717,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op)
oglrender->iuser.ok = 1;
/* create render result */
- RE_InitState(oglrender->re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, view_render, NULL, sizex, sizey, NULL);
+ RE_InitState(oglrender->re, NULL, &scene->r, &scene->view_layers, scene->active_view_layer, NULL, sizex, sizey, NULL);
/* create render views */
screen_opengl_views_setup(oglrender);
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 4297d4fa316..f2f147ab874 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -173,7 +173,6 @@ typedef struct ShaderPreview {
Main *bmain;
Main *pr_main;
- ViewRender *view_render;
} ShaderPreview;
typedef struct IconPreviewSize {
@@ -188,7 +187,6 @@ typedef struct IconPreview {
void *owner;
ID *id;
ListBase sizes;
- ViewRender *view_render;
} IconPreview;
/* *************************** Preview for buttons *********************** */
@@ -231,7 +229,7 @@ void ED_preview_ensure_dbase(void)
static bool check_engine_supports_textures(Scene *scene)
{
- RenderEngineType *type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *type = RE_engines_find(scene->r.engine);
return type->flag & RE_USE_TEXTURE_PREVIEW;
}
@@ -384,10 +382,10 @@ static Scene *preview_prepare_scene(Main *bmain, Scene *scene, ID *id, int id_ty
* seems commonly used render engines does not support
* such kind of rendering.
*/
- BLI_strncpy(sce->view_render.engine_id, RE_engine_id_BLENDER_RENDER, sizeof(sce->view_render.engine_id));
+ BLI_strncpy(sce->r.engine, RE_engine_id_BLENDER_RENDER, sizeof(sce->r.engine));
}
else {
- BLI_strncpy(sce->view_render.engine_id, scene->view_render.engine_id, sizeof(sce->view_render.engine_id));
+ BLI_strncpy(sce->r.engine, scene->r.engine, sizeof(sce->r.engine));
}
if (id_type == ID_MA) {
@@ -872,7 +870,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs
((Camera *)sce->camera->data)->lens *= (float)sp->sizey / (float)sizex;
/* entire cycle for render engine */
- RE_PreviewRender(re, pr_main, sce, sp->view_render);
+ RE_PreviewRender(re, pr_main, sce);
((Camera *)sce->camera->data)->lens = oldlens;
@@ -1199,7 +1197,6 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short
/* construct shader preview from image size and previewcustomdata */
sp->scene = ip->scene;
- sp->view_render = ip->view_render;
sp->owner = ip->owner;
sp->sizex = cur_size->sizex;
sp->sizey = cur_size->sizey;
@@ -1284,7 +1281,6 @@ void ED_preview_icon_render(Main *bmain, Scene *scene, ID *id, unsigned int *rec
ip.bmain = bmain;
ip.scene = scene;
- ip.view_render = &scene->view_render;
ip.owner = BKE_previewimg_id_ensure(id);
ip.id = id;
@@ -1318,7 +1314,6 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r
/* customdata for preview thread */
ip->bmain = CTX_data_main(C);
ip->scene = CTX_data_scene(C);
- ip->view_render = &ip->scene->view_render;
ip->owner = owner;
ip->id = id;
@@ -1346,12 +1341,10 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M
wmJob *wm_job;
ShaderPreview *sp;
Scene *scene = CTX_data_scene(C);
- WorkSpace *workspace = CTX_wm_workspace(C);
short id_type = GS(id->name);
/* Use workspace render only for buttons Window, since the other previews are related to the datablock. */
- ViewRender *view_render = (method == PR_BUTS_RENDER) ? BKE_viewrender_get(scene, workspace) : &scene->view_render;
- bool use_new_shading = BKE_viewrender_use_new_shading_nodes(view_render);
+ bool use_new_shading = BKE_scene_use_new_shading_nodes(scene);
/* Only texture node preview is supported with Cycles. */
if (use_new_shading && method == PR_NODE_RENDER && id_type != ID_TE) {
@@ -1374,7 +1367,6 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M
sp->parent = parent;
sp->slot = slot;
sp->bmain = CTX_data_main(C);
- sp->view_render = view_render;
/* hardcoded preview .blend for Eevee + cycles/internal, this should be solved
* once with custom preview .blend path for external engines */
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c
index d29985041c6..9ae103ae017 100644
--- a/source/blender/editors/render/render_update.c
+++ b/source/blender/editors/render/render_update.c
@@ -120,8 +120,6 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update
ARegion *ar;
CTX_wm_window_set(C, win);
- WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook);
- ViewRender *view_render = BKE_viewrender_get(win->scene, workspace);
for (sa = sc->areabase.first; sa; sa = sa->next) {
if (sa->spacetype != SPACE_VIEW3D)
@@ -147,7 +145,7 @@ void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, int update
}
else {
- RenderEngineType *engine_type = RE_engines_find(view_render->engine_id);
+ RenderEngineType *engine_type = RE_engines_find(win->scene->r.engine);
if ((engine_type->flag & RE_USE_LEGACY_PIPELINE) == 0) {
if (updated) {
DRW_notify_view_update(
diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c
index b4aea54c66d..b40eef8a38f 100644
--- a/source/blender/editors/screen/workspace_edit.c
+++ b/source/blender/editors/screen/workspace_edit.c
@@ -76,12 +76,11 @@
WorkSpace *ED_workspace_add(
Main *bmain, const char *name, Scene *scene,
- ViewLayer *act_view_layer, ViewRender *view_render)
+ ViewLayer *act_view_layer)
{
WorkSpace *workspace = BKE_workspace_add(bmain, name);
BKE_workspace_view_layer_set(workspace, act_view_layer, scene);
- BKE_viewrender_copy(&workspace->view_render, view_render);
return workspace;
}
@@ -223,8 +222,7 @@ WorkSpace *ED_workspace_duplicate(
Scene *scene = WM_window_get_active_scene(win);
WorkSpace *workspace_new = ED_workspace_add(
bmain, workspace_old->id.name + 2, scene,
- BKE_workspace_view_layer_get(workspace_old, scene),
- &workspace_old->view_render);
+ BKE_workspace_view_layer_get(workspace_old, scene));
workspace_new->tool = workspace_old->tool;
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 084b3dfbf09..469498f927a 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -5436,11 +5436,12 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
ImBuf *ibuf;
char filename[FILE_MAX];
- struct RenderEngineType *engine_type = CTX_data_engine_type(C);
Depsgraph *depsgraph = CTX_data_depsgraph(C);
Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C);
ToolSettings *settings = scene->toolsettings;
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d = CTX_wm_region_view3d(C);
int w = settings->imapaint.screen_grab_size[0];
int h = settings->imapaint.screen_grab_size[1];
int maxsize;
@@ -5454,8 +5455,8 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
if (h > maxsize) h = maxsize;
ibuf = ED_view3d_draw_offscreen_imbuf(
- depsgraph, scene, view_layer, engine_type,
- CTX_wm_view3d(C), CTX_wm_region(C),
+ depsgraph, scene, view_layer, v3d->drawtype,
+ v3d, CTX_wm_region(C),
w, h, IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL,
NULL, err_out);
if (!ibuf) {
@@ -5473,9 +5474,6 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
if (image) {
/* now for the trickiness. store the view projection here!
* re-projection will reuse this */
- View3D *v3d = CTX_wm_view3d(C);
- RegionView3D *rv3d = CTX_wm_region_view3d(C);
-
IDPropertyTemplate val;
IDProperty *idgroup = IDP_GetProperties(&image->id, 1);
IDProperty *view_data;
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 94c31a7ddb7..b6680d8560f 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -383,7 +383,7 @@ bool ED_node_is_texture(struct SpaceNode *snode)
/* called from shading buttons or header */
void ED_node_shader_default(const bContext *C, ID *id)
{
- ViewRender *view_render = CTX_data_view_render(C);
+ Scene *scene = CTX_data_scene(C);
bNode *in, *out;
bNodeSocket *fromsock, *tosock, *sock;
bNodeTree *ntree;
@@ -398,11 +398,11 @@ void ED_node_shader_default(const bContext *C, ID *id)
Material *ma = (Material *)id;
ma->nodetree = ntree;
- if (BKE_viewrender_uses_blender_eevee(view_render)) {
+ if (BKE_scene_uses_blender_eevee(scene)) {
output_type = SH_NODE_OUTPUT_MATERIAL;
shader_type = SH_NODE_BSDF_PRINCIPLED;
}
- else if (BKE_viewrender_use_new_shading_nodes(view_render)) {
+ else if (BKE_scene_use_new_shading_nodes(scene)) {
output_type = SH_NODE_OUTPUT_MATERIAL;
shader_type = SH_NODE_BSDF_DIFFUSE;
}
@@ -460,7 +460,7 @@ void ED_node_shader_default(const bContext *C, ID *id)
nodeAddLink(ntree, in, fromsock, out, tosock);
/* default values */
- if (BKE_viewrender_use_new_shading_nodes(view_render)) {
+ if (BKE_scene_use_new_shading_nodes(scene)) {
PointerRNA sockptr;
sock = in->inputs.first;
RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &sockptr);
@@ -2353,7 +2353,7 @@ void NODE_OT_tree_socket_move(wmOperatorType *ot)
static int node_shader_script_update_poll(bContext *C)
{
Scene *scene = CTX_data_scene(C);
- RenderEngineType *type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *type = RE_engines_find(scene->r.engine);
SpaceNode *snode = CTX_wm_space_node(C);
bNode *node;
Text *text;
@@ -2423,7 +2423,7 @@ static int node_shader_script_update_exec(bContext *C, wmOperator *op)
bool found = false;
/* setup render engine */
- type = RE_engines_find(scene->view_render.engine_id);
+ type = RE_engines_find(scene->r.engine);
engine = RE_engine_create(type);
engine->reports = op->reports;
diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c
index 241ab60fe43..173c919e38c 100644
--- a/source/blender/editors/space_node/node_templates.c
+++ b/source/blender/editors/space_node/node_templates.c
@@ -559,7 +559,6 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_
{
Main *bmain = CTX_data_main(C);
Scene *scene = CTX_data_scene(C);
- ViewRender *view_render = CTX_data_view_render(C);
uiBlock *block = uiLayoutGetBlock(layout);
uiBut *but = (uiBut *)but_p;
uiLayout *split, *column;
@@ -576,7 +575,7 @@ static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_
arg->layout = split;
if (ntreetype && ntreetype->foreach_nodeclass)
- ntreetype->foreach_nodeclass(view_render, arg, node_menu_column_foreach_cb);
+ ntreetype->foreach_nodeclass(scene, arg, node_menu_column_foreach_cb);
column = uiLayoutColumn(split, false);
UI_block_layout_set_current(block, column);
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index e1765e39f7a..6fc5ac62949 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -383,13 +383,12 @@ static void node_init(struct wmWindowManager *UNUSED(wm), ScrArea *UNUSED(sa))
}
static void node_area_listener(bScreen *UNUSED(sc), ScrArea *sa, wmNotifier *wmn, Scene *scene,
- WorkSpace *workspace)
+ WorkSpace *UNUSED(workspace))
{
/* note, ED_area_tag_refresh will re-execute compositor */
SpaceNode *snode = sa->spacedata.first;
- ViewRender *view_render = BKE_viewrender_get(scene, workspace);
/* shaderfrom is only used for new shading nodes, otherwise all shaders are from objects */
- short shader_type = BKE_viewrender_use_new_shading_nodes(view_render) ? snode->shaderfrom : SNODE_SHADER_OBJECT;
+ short shader_type = BKE_scene_use_new_shading_nodes(scene) ? snode->shaderfrom : SNODE_SHADER_OBJECT;
/* preview renders */
switch (wmn->category) {
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 5a5d1df3a08..883722105ee 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -1062,7 +1062,7 @@ static void view3d_main_region_listener(
static void view3d_main_region_message_subscribe(
const struct bContext *UNUSED(C),
- struct WorkSpace *workspace, struct Scene *scene,
+ struct WorkSpace *UNUSED(workspace), struct Scene *scene,
struct bScreen *UNUSED(screen), struct ScrArea *UNUSED(sa), struct ARegion *ar,
struct wmMsgBus *mbus)
{
@@ -1071,7 +1071,6 @@ static void view3d_main_region_message_subscribe(
* accepting some redundant redraws.
*
* For other space types we might try avoid this, keep the 3D view as an exceptional case! */
- ViewRender *view_render = BKE_viewrender_get(scene, workspace);
wmMsgParams_RNA msg_key_params = {{{0}}};
/* Only subscribe to types. */
@@ -1089,7 +1088,6 @@ static void view3d_main_region_message_subscribe(
&RNA_Object,
&RNA_UnitSettings, /* grid-floor */
- &RNA_ViewRenderSettings,
&RNA_World,
};
@@ -1111,6 +1109,7 @@ static void view3d_main_region_message_subscribe(
/* Subscribe to a handful of other properties. */
RegionView3D *rv3d = ar->regiondata;
+ WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, engine, &msg_sub_value_region_tag_redraw);
WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, resolution_x, &msg_sub_value_region_tag_redraw);
WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, resolution_y, &msg_sub_value_region_tag_redraw);
WM_msg_subscribe_rna_anon_prop(mbus, RenderSettings, pixel_aspect_x, &msg_sub_value_region_tag_redraw);
@@ -1121,12 +1120,12 @@ static void view3d_main_region_message_subscribe(
/* Each engine could be responsible for its own engine data types.
* For now this is simplest. */
- if (STREQ(view_render->engine_id, RE_engine_id_BLENDER_EEVEE)) {
+ if (STREQ(scene->r.engine, RE_engine_id_BLENDER_EEVEE)) {
extern StructRNA RNA_ViewLayerEngineSettingsEevee;
WM_msg_subscribe_rna_anon_type(mbus, ViewLayerEngineSettingsEevee, &msg_sub_value_region_tag_redraw);
}
#ifdef WITH_CLAY_ENGINE
- else if (STREQ(view_render->engine_id, RE_engine_id_BLENDER_CLAY)) {
+ else if (STREQ(scene->r.engine, RE_engine_id_BLENDER_CLAY)) {
extern StructRNA RNA_ViewLayerEngineSettingsClay;
WM_msg_subscribe_rna_anon_type(mbus, ViewLayerEngineSettingsClay, &msg_sub_value_region_tag_redraw);
}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index b2115aa2b75..1910f7e27c0 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1893,14 +1893,26 @@ static void view3d_draw_view(const bContext *C, ARegion *ar)
DRW_draw_view(C);
}
+RenderEngineType *ED_view3d_engine_type(Scene *scene, int drawtype)
+{
+ /* Tempory viewport draw modes until we have a proper system. */
+ if (drawtype == OB_RENDER) {
+ return RE_engines_find(scene->r.engine);
+ }
+ else if (drawtype == OB_MATERIAL) {
+ return RE_engines_find(RE_engine_id_BLENDER_EEVEE);
+ }
+ else {
+ return RE_engines_find(RE_engine_id_BLENDER_WORKBENCH);
+ }
+}
+
void view3d_main_region_draw(const bContext *C, ARegion *ar)
{
Scene *scene = CTX_data_scene(C);
- WorkSpace *workspace = CTX_wm_workspace(C);
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = ar->regiondata;
- ViewRender *view_render = BKE_viewrender_get(scene, workspace);
- RenderEngineType *type = RE_engines_find(view_render->engine_id);
+ RenderEngineType *type = ED_view3d_engine_type(scene, v3d->drawtype);
/* Provisory Blender Internal drawing */
if (type->flag & RE_USE_LEGACY_PIPELINE) {
@@ -1956,12 +1968,14 @@ static void view3d_stereo3d_setup_offscreen(
void ED_view3d_draw_offscreen_init(Depsgraph *depsgraph,
Scene *scene,
ViewLayer *view_layer,
- RenderEngineType *engine_type,
- View3D *v3d)
+ View3D *v3d,
+ int drawtype)
{
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, drawtype);
+
if (engine_type->flag & RE_USE_LEGACY_PIPELINE) {
/* shadow buffers, before we setup matrices */
- if (draw_glsl_material(scene, view_layer, NULL, v3d, v3d->drawtype)) {
+ if (draw_glsl_material(scene, view_layer, NULL, v3d, drawtype)) {
VP_deprecated_gpu_update_lamps_shadows_world(depsgraph, scene, v3d);
}
}
@@ -1987,7 +2001,7 @@ static void view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar)
*/
void ED_view3d_draw_offscreen(
Depsgraph *depsgraph, Scene *scene,
- ViewLayer *view_layer, RenderEngineType *engine_type,
+ ViewLayer *view_layer, int drawtype,
View3D *v3d, ARegion *ar, int winx, int winy,
float viewmat[4][4], float winmat[4][4],
bool do_bgpic, bool do_sky, bool UNUSED(is_persp), const char *viewname,
@@ -2032,6 +2046,8 @@ void ED_view3d_draw_offscreen(
view3d_main_region_setup_view(depsgraph, scene, v3d, ar, viewmat, winmat, NULL);
/* main drawing call */
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, drawtype);
+
if (engine_type->flag & RE_USE_LEGACY_PIPELINE) {
VP_deprecated_view3d_draw_objects(NULL, depsgraph, scene, v3d, ar, NULL, do_bgpic, true);
@@ -2075,7 +2091,7 @@ void ED_view3d_draw_offscreen(
*/
ImBuf *ED_view3d_draw_offscreen_imbuf(
Depsgraph *depsgraph, Scene *scene,
- ViewLayer *view_layer, RenderEngineType *engine_type,
+ ViewLayer *view_layer, int drawtype,
View3D *v3d, ARegion *ar, int sizex, int sizey,
unsigned int flag, unsigned int draw_flags,
int alpha_mode, int samples, const char *viewname,
@@ -2109,7 +2125,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
}
}
- ED_view3d_draw_offscreen_init(depsgraph, scene, view_layer, engine_type, v3d);
+ ED_view3d_draw_offscreen_init(depsgraph, scene, view_layer, v3d, drawtype);
GPU_offscreen_bind(ofs, true);
@@ -2151,7 +2167,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
if ((samples && use_full_sample) == 0) {
/* Single-pass render, common case */
ED_view3d_draw_offscreen(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, drawtype,
v3d, ar, sizex, sizey, NULL, winmat,
draw_background, draw_sky, !is_ortho, viewname,
&fx_settings, ofs, NULL);
@@ -2176,7 +2192,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
/* first sample buffer, also initializes 'rv3d->persmat' */
ED_view3d_draw_offscreen(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, drawtype,
v3d, ar, sizex, sizey, NULL, winmat,
draw_background, draw_sky, !is_ortho, viewname,
&fx_settings, ofs, viewport);
@@ -2191,7 +2207,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
(jit_ofs[j][1] * 2.0f) / sizey);
ED_view3d_draw_offscreen(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, drawtype,
v3d, ar, sizex, sizey, NULL, winmat_jitter,
draw_background, draw_sky, !is_ortho, viewname,
&fx_settings, ofs, viewport);
@@ -2256,9 +2272,9 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
*/
ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
Depsgraph *depsgraph, Scene *scene,
- ViewLayer *view_layer, RenderEngineType *engine_type,
+ ViewLayer *view_layer, int drawtype,
Object *camera, int width, int height,
- unsigned int flag, unsigned int draw_flags, int drawtype,
+ unsigned int flag, unsigned int draw_flags,
int alpha_mode, int samples, const char *viewname,
GPUOffScreen *ofs, char err_out[256])
{
@@ -2318,7 +2334,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
return ED_view3d_draw_offscreen_imbuf(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, drawtype,
&v3d, &ar, width, height, flag,
draw_flags, alpha_mode, samples, viewname, ofs, err_out);
}
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index 807a4f212f6..51adcc47b6c 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -1417,11 +1417,9 @@ static void gpu_update_lamps_shadows_world(Depsgraph *depsgraph, Scene *scene, V
mul_m4_m4m4(rv3d.persmat, rv3d.winmat, rv3d.viewmat);
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
- RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
-
/* no need to call ED_view3d_draw_offscreen_init since shadow buffers were already updated */
ED_view3d_draw_offscreen(
- depsgraph, scene, view_layer, engine_type,
+ depsgraph, scene, view_layer, v3d->drawtype,
v3d, &ar, winsize, winsize, viewmat, winmat,
false, false, true,
NULL, NULL, NULL, NULL);
@@ -1758,7 +1756,7 @@ void ED_scene_draw_fps(Scene *scene, const rcti *rect)
static bool view3d_main_region_do_render_draw(const Scene *scene)
{
- RenderEngineType *type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *type = RE_engines_find(scene->r.engine);
return (type && type->view_update && type->render_to_view);
}
@@ -1819,7 +1817,7 @@ static bool view3d_main_region_draw_engine(
/* create render engine */
if (!rv3d->render_engine) {
RenderEngine *engine;
- type = RE_engines_find(scene->view_render.engine_id);
+ type = RE_engines_find(scene->r.engine);
if (!(type->view_update && type->render_to_view))
return false;
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index adf41fcf5af..555bb0e70de 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -119,7 +119,6 @@ void ED_view3d_viewcontext_init(bContext *C, ViewContext *vc)
vc->depsgraph = CTX_data_depsgraph(C);
vc->scene = CTX_data_scene(C);
vc->view_layer = CTX_data_view_layer(C);
- vc->engine_type = CTX_data_engine_type(C);
vc->v3d = CTX_wm_view3d(C);
vc->win = CTX_wm_window(C);
vc->rv3d = CTX_wm_region_view3d(C);
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index f1daa831869..4a53bb2360d 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -517,7 +517,6 @@ typedef struct TransInfo {
struct Depsgraph *depsgraph;
struct Scene *scene;
struct ViewLayer *view_layer;
- struct RenderEngineType *engine_type;
struct ToolSettings *settings;
struct wmTimer *animtimer;
struct wmKeyMap *keymap; /* so we can do lookups for header text */
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 2fdb34e125a..4bcc8fe9e71 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1204,13 +1204,11 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
ScrArea *sa = CTX_wm_area(C);
bGPdata *gpd = CTX_data_gpencil_data(C);
- RenderEngineType *engine_type = CTX_data_engine_type(C);
PropertyRNA *prop;
t->depsgraph = depsgraph;
t->scene = sce;
t->view_layer = view_layer;
- t->engine_type = engine_type;
t->sa = sa;
t->ar = ar;
t->settings = ts;