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
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.
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py4
-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
5 files changed, 48 insertions, 8 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 5e022aee0ed..af032a7e75d 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -46,10 +46,6 @@ class VIEW3D_HT_header(Header):
# Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode...
row = layout
layout.template_header_3D()
- row.prop(view, "viewport_shade", text="", icon_only=True)
-
- if view.viewport_shade == "SOLID":
- row.prop(view, "viewport_shade_solid", text="")
if obj:
mode = obj.mode
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;