diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-05-22 15:12:47 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-05-22 15:55:50 +0300 |
commit | dfe088c5d9c819e7266e8e88fb31e92ac2ee8592 (patch) | |
tree | 893d823c1957624257c3ef128422c3fa132e9049 /source/blender/draw/intern/draw_manager.c | |
parent | ff19b527e85ec5144efbd663bf9b4c338e179358 (diff) |
Workbench: SeeThrough draw option
Option to see through all meshes (transparency)
Works for OB_SOLID and OB_TEXTURED. Does not work for
V3D_SHADING_SHADOW.
TODO: Fresnel effect
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 95256a2b1c8..c91c4536fa4 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1015,7 +1015,7 @@ 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 drawtype) +static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int drawtype, int shading_flags) { switch (drawtype) { case OB_WIRE: @@ -1023,7 +1023,12 @@ static void drw_engines_enable_from_engine(RenderEngineType *engine_type, int dr case OB_SOLID: case OB_TEXTURE: - use_drw_engine(&draw_engine_workbench_solid); + if (shading_flags & V3D_SHADING_SEE_THROUGH) { + use_drw_engine(&draw_engine_workbench_transparent); + } + else { + use_drw_engine(&draw_engine_workbench_solid); + } break; case OB_MATERIAL: @@ -1118,7 +1123,7 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t View3D * v3d = DST.draw_ctx.v3d; const int drawtype = v3d->drawtype; - drw_engines_enable_from_engine(engine_type, drawtype); + drw_engines_enable_from_engine(engine_type, drawtype, v3d->shading.flag); if (DRW_state_draw_support()) { drw_engines_enable_from_overlays(v3d->overlay.flag); |