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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-18 12:51:20 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-18 17:35:38 +0300
commit15850a8740ed95afdc5779e224bf40f7540a7d62 (patch)
treeaf4b6f85d6ff7bb3a857106ed5397ed5c3190e03 /source/blender
parent34dbe7ff33a3f565772ac6f0d60bbf955e07983c (diff)
Workbench: don't change to workbench drawtype for files saved in 2.8.
Assume files saved in 2.8 were intended for Eevee and set them to material viewport shading. In Eevee this is equal to rendered draw mode, in Cycles this will draw with Eevee. This way Eevee demo files still show something interesting when opened.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenloader/intern/versioning_280.c6
-rw-r--r--source/blender/draw/intern/draw_manager.c5
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c6
-rw-r--r--source/blender/makesrna/intern/rna_space.c35
4 files changed, 48 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index b3cd1a6a1b7..490344d30fa 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -934,6 +934,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
View3D *v3d = (View3D *)sl;
v3d->drawtype_solid = OB_LIGHTING_STUDIO;
v3d->drawtype_wireframe = OB_LIGHTING_STUDIO;
+
+ /* Assume (demo) files written with 2.8 want to show
+ * Eevee renders in the viewport. */
+ if (MAIN_VERSION_ATLEAST(main, 280, 0)) {
+ v3d->drawtype = OB_MATERIAL;
+ }
}
}
}
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index a147aed308c..2ab661aa5dd 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -915,6 +915,11 @@ static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int dr
case OB_TEXTURE:
break;
+ case OB_MATERIAL:
+ engine_type = RE_engines_find("BLENDER_EEVEE");
+ use_drw_engine(engine_type->draw_engine);
+ break;
+
default:
case OB_RENDER:
/* TODO layers */
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 1f47f44f2f6..563ff188f0d 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -303,6 +303,12 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
/* other buttons: */
UI_block_emboss_set(block, UI_EMBOSS);
+ /* Draw type */
+ uiItemR(layout, &v3dptr, "viewport_shade", UI_ITEM_R_ICON_ONLY, "", ICON_NONE);
+ if (v3d->drawtype == OB_SOLID) {
+ uiItemR(layout, &v3dptr, "viewport_shade_solid", 0, "", ICON_NONE);
+ }
+
row = uiLayoutRow(layout, true);
uiItemR(row, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY, "", ICON_NONE);
if (!ob || ELEM(ob->mode, OB_MODE_OBJECT, OB_MODE_POSE, OB_MODE_WEIGHT_PAINT)) {
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 601a8bffcfa..2d7dc477fe3 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -668,9 +668,23 @@ static void rna_RegionView3D_view_matrix_set(PointerRNA *ptr, const float *value
static int rna_SpaceView3D_viewport_shade_get(PointerRNA *ptr)
{
+ bScreen *screen = ptr->id.data;
+ Scene *scene = WM_windows_scene_get_from_screen(G.main->wm.first, screen);
+ RenderEngineType *type = RE_engines_find(scene->view_render.engine_id);
View3D *v3d = (View3D *)ptr->data;
- int drawtype = v3d->drawtype;
- return drawtype;
+
+ if (BKE_scene_uses_blender_eevee(scene)) {
+ if (v3d->drawtype == OB_MATERIAL) {
+ return OB_RENDER;
+ }
+ }
+ else if (v3d->drawtype == OB_RENDER) {
+ if (!(type && type->render_to_view)) {
+ return OB_MATERIAL;
+ }
+ }
+
+ return v3d->drawtype;
}
static void rna_SpaceView3D_viewport_shade_set(PointerRNA *ptr, int value)
@@ -683,14 +697,27 @@ static void rna_SpaceView3D_viewport_shade_set(PointerRNA *ptr, int value)
}
static const EnumPropertyItem *rna_SpaceView3D_viewport_shade_itemf(
- bContext *UNUSED(C), PointerRNA *UNUSED(ptr),
+ bContext *C, PointerRNA *UNUSED(ptr),
PropertyRNA *UNUSED(prop), bool *r_free)
{
+ wmWindow *win = CTX_wm_window(C);
+ Scene *scene = WM_window_get_active_scene(win);
+ RenderEngineType *type = RE_engines_find(scene->view_render.engine_id);
+
EnumPropertyItem *item = NULL;
int totitem = 0;
RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_SOLID);
- RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
+
+ if (BKE_scene_uses_blender_eevee(scene)) {
+ RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
+ }
+ else {
+ RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_MATERIAL);
+ if (type && type->render_to_view) {
+ RNA_enum_items_add_value(&item, &totitem, rna_enum_viewport_shade_items, OB_RENDER);
+ }
+ }
RNA_enum_item_end(&item, &totitem);
*r_free = true;