From f65e3c7f1b5aaa9b5376c20a36267aad27ce40ec Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Mon, 23 Mar 2015 18:54:56 +0100 Subject: [PATCH] Fix T44076, SSAO in solid mode will disable antialiasing in wireframe mode. Yes it will, because those modes stay active. So on user side, expose depth of field option always (I don't see why not), but disable SSAO in wireframe/bounding box mode. It is a known limitation that compositing does not support antialiasing yet, but better give users some more control. This could be included in final release but it's not that serious either. --- release/scripts/startup/bl_ui/space_view3d.py | 10 ++++++---- source/blender/editors/space_view3d/view3d_draw.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 128e24a6d68..a5d399ee55e 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -2975,12 +2975,14 @@ class VIEW3D_PT_view3d_shading(Panel): if obj and obj.mode == 'EDIT': col.prop(view, "show_occlude_wire") - fx_settings = view.fx_settings - sub = col.column() - sub.active = view.region_3d.view_perspective == 'CAMERA' - sub.prop(fx_settings, "use_dof") + fx_settings = view.fx_settings + sub = col.column() + sub.active = view.region_3d.view_perspective == 'CAMERA' + sub.prop(fx_settings, "use_dof") + + if view.viewport_shade not in {'BOUNDBOX', 'WIREFRAME'}: col.prop(fx_settings, "use_ssao", text="Ambient Occlusion") if fx_settings.use_ssao: ssao_settings = fx_settings.ssao diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index b8599cf6ea8..116eb48bf88 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -3120,7 +3120,17 @@ void ED_view3d_draw_offscreen( /* framebuffer fx needed, we need to draw offscreen first */ if (v3d->fx_settings.fx_flag && fx) { + GPUSSAOSettings *ssao = NULL; + + if (v3d->drawtype < OB_SOLID) { + ssao = v3d->fx_settings.ssao; + v3d->fx_settings.ssao = NULL; + } + do_compositing = GPU_fx_compositor_initialize_passes(fx, &ar->winrct, NULL, fx_settings); + + if (ssao) + v3d->fx_settings.ssao = ssao; } /* clear opengl buffers */ @@ -3551,6 +3561,10 @@ static void view3d_main_area_draw_objects(const bContext *C, Scene *scene, View3 else { fx_settings.dof = NULL; } + + if (v3d->drawtype < OB_SOLID) + fx_settings.ssao = NULL; + do_compositing = GPU_fx_compositor_initialize_passes(rv3d->compositor, &ar->winrct, &ar->drawrct, &fx_settings); }