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-17 14:35:05 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-18 17:35:38 +0300
commitf9cf2e2f6cc779764f46dae7ceadc4bb2e9ddcb5 (patch)
tree0f409fce181813cab818bfb83a33779e38774684 /source/blender/draw/intern/draw_manager.c
parent15850a8740ed95afdc5779e224bf40f7540a7d62 (diff)
Workspaces: remove workspace engine, use 3D viewport draw mode instead.
ViewRender was removed, which means we can't get the render engine for files saved in 2.8. We assume that any files saved in 2.8 were intended to use Eevee and set the engine to that. A fix included with this is that .blend thumbails now draw with Clay mode, and never Eevee or Cycles. These were drawn with solid mode in 2.7, and should be very fast and not e.g. load heavy image textures. Differential Revision: https://developer.blender.org/D3156
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r--source/blender/draw/intern/draw_manager.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 2ab661aa5dd..66de79314b4 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -895,33 +895,27 @@ static void drw_engines_enable_external(void)
/* TODO revisit this when proper layering is implemented */
/* Gather all draw engines needed and store them in DST.enabled_engines
* That also define the rendering order of engines */
-static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int draw_mode,
- int UNUSED(draw_mode_wireframe), int draw_mode_solid, int UNUSED(draw_mode_texture))
+static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int drawtype,
+ int UNUSED(drawtype_wireframe), int drawtype_solid, int UNUSED(drawtype_texture))
{
- switch (draw_mode) {
+ switch (drawtype) {
case OB_WIRE:
break;
case OB_SOLID:
- if (draw_mode_solid == OB_LIGHTING_FLAT) {
+ if (drawtype_solid == OB_LIGHTING_FLAT) {
use_drw_engine(&draw_engine_workbench_solid_flat);
- } else if (draw_mode_solid == OB_LIGHTING_STUDIO) {
+ } else if (drawtype_solid == OB_LIGHTING_STUDIO) {
use_drw_engine(&draw_engine_workbench_solid_studio);
}
break;
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:
+ default:
/* TODO layers */
if (engine_type->draw_engine != NULL) {
use_drw_engine(engine_type->draw_engine);
@@ -1003,12 +997,12 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t
Object *obact = OBACT(view_layer);
const int mode = CTX_data_mode_enum_ex(DST.draw_ctx.object_edit, obact, DST.draw_ctx.object_mode);
View3D * v3d = DST.draw_ctx.v3d;
- const int draw_mode = v3d->drawtype;
- const int draw_mode_wireframe = v3d->drawtype_wireframe;
- const int draw_mode_solid = v3d->drawtype_solid;
- const int draw_mode_texture = v3d->drawtype_texture;
+ const int drawtype = v3d->drawtype;
+ const int drawtype_wireframe = v3d->drawtype_wireframe;
+ const int drawtype_solid = v3d->drawtype_solid;
+ const int drawtype_texture = v3d->drawtype_texture;
- drw_engines_enable_from_engine(engine_type, draw_mode, draw_mode_wireframe, draw_mode_solid, draw_mode_texture);
+ drw_engines_enable_from_engine(engine_type, drawtype, drawtype_wireframe, drawtype_solid, drawtype_texture);
if (DRW_state_draw_support()) {
drw_engines_enable_from_object_mode();
@@ -1144,9 +1138,10 @@ void DRW_notify_id_update(const DRWUpdateContext *update_ctx, ID *id)
void DRW_draw_view(const bContext *C)
{
Depsgraph *depsgraph = CTX_data_depsgraph(C);
- RenderEngineType *engine_type = CTX_data_engine_type(C);
ARegion *ar = CTX_wm_region(C);
View3D *v3d = CTX_wm_view3d(C);
+ Scene *scene = DEG_get_evaluated_scene(depsgraph);
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype);
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
@@ -1311,7 +1306,7 @@ void DRW_draw_render_loop(
drw_state_prepare_clean_for_draw(&DST);
Scene *scene = DEG_get_evaluated_scene(depsgraph);
- RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype);
DRW_draw_render_loop_ex(depsgraph, engine_type, ar, v3d, NULL);
}
@@ -1506,7 +1501,7 @@ void DRW_draw_select_loop(
DRW_SelectPassFn select_pass_fn, void *select_pass_user_data)
{
Scene *scene = DEG_get_evaluated_scene(depsgraph);
- RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype);
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
Object *obact = OBACT(view_layer);
Object *obedit = OBEDIT_FROM_OBACT(obact);
@@ -1698,7 +1693,7 @@ void DRW_draw_depth_loop(
ARegion *ar, View3D *v3d)
{
Scene *scene = DEG_get_evaluated_scene(depsgraph);
- RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
+ RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->drawtype);
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
RegionView3D *rv3d = ar->regiondata;