[Bf-blender-cvs] [15850a8740e] blender2.8: Workbench: don't change to workbench drawtype for files saved in 2.8.

Brecht Van Lommel noreply at git.blender.org
Wed Apr 18 16:38:06 CEST 2018


Commit: 15850a8740ed95afdc5779e224bf40f7540a7d62
Author: Brecht Van Lommel
Date:   Wed Apr 18 11:51:20 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB15850a8740ed95afdc5779e224bf40f7540a7d62

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.

===================================================================

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/intern/draw_manager.c
M	source/blender/editors/space_view3d/view3d_header.c
M	source/blender/makesrna/intern/rna_space.c

===================================================================

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;



More information about the Bf-blender-cvs mailing list