diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 4 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 6 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 5 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 35 |
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; |