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:
authorJeroen Bakker <j.bakker@atmind.nl>2019-05-02 16:18:53 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-05-02 17:19:12 +0300
commitb52a0c78aff3afd49c0712ee35ba01f6b48662f7 (patch)
tree3dadc3f008de4c77962299777357a6075732ce41 /source/blender/draw/engines/workbench/workbench_private.h
parent76193106d2e3d1d211af33f39a3714e22944cb18 (diff)
Workbench,EEVEE: Viewport Render Samples
- Add `render_aa` and `viewport_aa` sampling setting for workbench. 0 samples means no AA, 1 sample uses FXAA and more samples will use TAA. The viewport `gpu_viewport_quality` can still limit viewport anti-aliasing method. - Use TAA when rendering images. (this used to be CPU based FSAA) - Removed `R_OSA` related settings. Reviewers: fclem, brecht Maniphest Tasks: T60847 Differential Revision: https://developer.blender.org/D4773
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_private.h')
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h43
1 files changed, 31 insertions, 12 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 3cfb1283416..e25503aef6e 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -75,18 +75,7 @@
#define IS_NAVIGATING(wpd) \
((DRW_context_state_get()->rv3d) && (DRW_context_state_get()->rv3d->rflag & RV3D_NAVIGATING))
-#define FXAA_ENABLED(wpd) \
- ((!DRW_state_is_opengl_render()) && \
- (IN_RANGE(wpd->preferences->gpu_viewport_quality, \
- GPU_VIEWPORT_QUALITY_FXAA, \
- GPU_VIEWPORT_QUALITY_TAA8) || \
- ((IS_NAVIGATING(wpd) || wpd->is_playback) && \
- (wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8))))
-#define TAA_ENABLED(wpd) \
- ((DRW_state_is_image_render() && DRW_context_state_get()->scene->r.mode & R_OSA) || \
- (!DRW_state_is_image_render() && \
- wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_TAA8 && !IS_NAVIGATING(wpd) && \
- !wpd->is_playback))
+
#define SPECULAR_HIGHLIGHT_ENABLED(wpd) \
(STUDIOLIGHT_ENABLED(wpd) && (wpd->shading.flag & V3D_SHADING_SPECULAR_HIGHLIGHT) && \
(!STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd)))
@@ -326,6 +315,35 @@ typedef struct WORKBENCH_ObjectData {
int object_id;
} WORKBENCH_ObjectData;
+/* inline helper functions */
+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;
+ }
+ 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;
+ }
+}
+
+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;
+ }
+ else {
+ if (wpd->preferences->gpu_viewport_quality >= GPU_VIEWPORT_QUALITY_FXAA &&
+ DRW_context_state_get()->scene->display.viewport_aa == SCE_DISPLAY_AA_FXAA) {
+ return true;
+ }
+
+ /* when navigating or animation playback use FXAA. */
+ return (IS_NAVIGATING(wpd) || wpd->is_playback) && workbench_is_taa_enabled(wpd);
+ }
+}
+
/* workbench_deferred.c */
void workbench_deferred_engine_init(WORKBENCH_Data *vedata);
void workbench_deferred_engine_free(void);
@@ -375,6 +393,7 @@ void workbench_taa_draw_scene_start(WORKBENCH_Data *vedata);
void workbench_taa_draw_scene_end(WORKBENCH_Data *vedata);
void workbench_taa_view_updated(WORKBENCH_Data *vedata);
int workbench_taa_calculate_num_iterations(WORKBENCH_Data *vedata);
+int workbench_num_viewport_rendering_iterations(WORKBENCH_Data *vedata);
/* workbench_effect_dof.c */
void workbench_dof_engine_init(WORKBENCH_Data *vedata, Object *camera);