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>2018-06-28 15:09:48 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-06-28 15:39:15 +0300
commit2b4c7600b763f252a0e7f54d80cd8e3005871f5e (patch)
tree7b3e6ea752f40f9f2dd3ff3027ed791a7a6e28ea /source/blender/draw/engines/workbench/workbench_forward.c
parentdaa47e5e80d276dff74d27c6675f29c8e3e1ed76 (diff)
Workbench: Anti-aliasing refactor
- TAA is also enabled for Forward rendering - Uses less GPU memory (removed one history buffer) - TAA is done after the color management - consolidated the aa code between forward and deferred rendering (workbench_effects_aa.c)
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_forward.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_forward.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c
index dd57bec05f6..41d16780d33 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -287,7 +287,6 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata)
forward_vert, NULL,
forward_depth_frag, defines_hair);
- workbench_fxaa_engine_init();
e_data.checker_depth_sh = DRW_shader_create_fullscreen(
datatoc_workbench_checkerboard_depth_frag_glsl, NULL);
@@ -296,6 +295,9 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata)
MEM_freeN(defines);
MEM_freeN(defines_hair);
}
+ workbench_fxaa_engine_init();
+ workbench_taa_engine_init(vedata);
+
select_forward_shaders(wpd);
const float *viewport_size = DRW_viewport_size_get();
@@ -359,7 +361,7 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata)
}
{
- psl->effect_aa_pass = workbench_fxaa_create_pass(&e_data.effect_buffer_tx);
+ workbench_aa_create_pass(vedata, &e_data.effect_buffer_tx);
}
/* Checker Depth */
@@ -582,6 +584,10 @@ void workbench_forward_draw_scene(WORKBENCH_Data *vedata)
WORKBENCH_PrivateData *wpd = stl->g_data;
DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
+ if (TAA_ENABLED(wpd)) {
+ workbench_taa_draw_scene_start(vedata);
+ }
+
/* Write Depth + Object ID */
const float clear_outline[4] = {0.0f};
GPU_framebuffer_bind(fbl->object_outline_fb);
@@ -606,8 +612,8 @@ void workbench_forward_draw_scene(WORKBENCH_Data *vedata)
GPU_framebuffer_bind(fbl->composite_fb);
DRW_draw_pass(psl->composite_pass);
- /* Color correct */
- workbench_fxaa_draw_pass(wpd, fbl->effect_fb, e_data.composite_buffer_tx, psl->effect_aa_pass);
+ /* Color correct and Anti aliasing */
+ workbench_aa_draw_pass(vedata, e_data.composite_buffer_tx);
/* Apply checker pattern */
GPU_framebuffer_bind(dfbl->depth_only_fb);