diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-08 16:38:11 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-05-09 15:45:45 +0300 |
commit | 0764cfe3deea2d39376a660ff06e8dc17f6401ba (patch) | |
tree | f12eab97bb5a227c9f2ace59edaad37f90e3062a /source/blender/draw | |
parent | 54ec0559c8ef203f2c029fc0e43373538ae5515f (diff) |
Workbench: Viewport AA Preferences
In recent changes the viewport_quality setting was not working what
users expected. This change will separate the anti-aliasing method that
is being used.
We now have three settings:
* scene.display.render_aa: Will be used during `Render Image`.
* scene.display.viewport_aa: Will be used during `Viewport Render Image`.
* userpref.viewport_aa: Will be used in the 3d view.
The viewport_quality setting has been replaced by the viewport_aa
setting as it was the only thing in currently controlled.
Reviewed By: brecht
Maniphest Tasks: T64132
Differential Revision: https://developer.blender.org/D4828
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_effect_taa.c | 22 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_private.h | 23 |
2 files changed, 25 insertions, 20 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_effect_taa.c b/source/blender/draw/engines/workbench/workbench_effect_taa.c index 7c411135634..4b54b0772d3 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_taa.c +++ b/source/blender/draw/engines/workbench/workbench_effect_taa.c @@ -91,23 +91,19 @@ int workbench_taa_calculate_num_iterations(WORKBENCH_Data *vedata) WORKBENCH_StorageList *stl = vedata->stl; WORKBENCH_PrivateData *wpd = stl->g_data; const Scene *scene = DRW_context_state_get()->scene; - int result = scene->display.viewport_aa; + int result; if (workbench_is_taa_enabled(wpd)) { if (DRW_state_is_image_render()) { - result = scene->display.render_aa; - } - else if (IN_RANGE_INCL(wpd->preferences->gpu_viewport_quality, - GPU_VIEWPORT_QUALITY_TAA8, - GPU_VIEWPORT_QUALITY_TAA16)) { - result = MIN2(result, 8); - } - else if (IN_RANGE_INCL(wpd->preferences->gpu_viewport_quality, - GPU_VIEWPORT_QUALITY_TAA16, - GPU_VIEWPORT_QUALITY_TAA32)) { - result = MIN2(result, 16); + const DRWContextState *draw_ctx = DRW_context_state_get(); + if (draw_ctx->v3d) { + result = scene->display.viewport_aa; + } + else { + result = scene->display.render_aa; + } } else { - result = MIN2(result, 32); + result = wpd->preferences->viewport_aa; } } else { diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h index e25503aef6e..09d9ad65717 100644 --- a/source/blender/draw/engines/workbench/workbench_private.h +++ b/source/blender/draw/engines/workbench/workbench_private.h @@ -319,23 +319,32 @@ typedef struct WORKBENCH_ObjectData { BLI_INLINE bool workbench_is_taa_enabled(WORKBENCH_PrivateData *wpd) { if (DRW_state_is_image_render()) { - return DRW_context_state_get()->scene->display.render_aa > SCE_DISPLAY_AA_FXAA; + const DRWContextState *draw_ctx = DRW_context_state_get(); + if (draw_ctx->v3d) { + return draw_ctx->scene->display.viewport_aa > SCE_DISPLAY_AA_FXAA; + } + else { + return draw_ctx->scene->display.render_aa > SCE_DISPLAY_AA_FXAA; + } } else { - return DRW_context_state_get()->scene->display.viewport_aa > SCE_DISPLAY_AA_FXAA && - wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8 && - !wpd->is_playback; + return wpd->preferences->viewport_aa > SCE_DISPLAY_AA_FXAA && !wpd->is_playback; } } BLI_INLINE bool workbench_is_fxaa_enabled(WORKBENCH_PrivateData *wpd) { if (DRW_state_is_image_render()) { - return DRW_context_state_get()->scene->display.render_aa == SCE_DISPLAY_AA_FXAA; + const DRWContextState *draw_ctx = DRW_context_state_get(); + if (draw_ctx->v3d) { + return draw_ctx->scene->display.viewport_aa == SCE_DISPLAY_AA_FXAA; + } + else { + return draw_ctx->scene->display.render_aa == SCE_DISPLAY_AA_FXAA; + } } else { - if (wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_FXAA && - DRW_context_state_get()->scene->display.viewport_aa == SCE_DISPLAY_AA_FXAA) { + if (wpd->preferences->viewport_aa == SCE_DISPLAY_AA_FXAA) { return true; } |