Object Mode : Add Outline FXAA
authorClément Foucault <foucault.clem@gmail.com>
Fri, 22 Sep 2017 15:30:39 +0000 (17:30 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Fri, 22 Sep 2017 15:31:40 +0000 (17:31 +0200)
commitf2ea8e217b0b5bc02d1fbe92c33ee7fe05ae2c46
tree49b1c6639bf288489dd715ee2aa5056051dda024
parent128c7c3ba1d15e08241ec3e90fa694cfb210d2b9
Object Mode : Add Outline FXAA

Adds a FXAA for smoothing out the extracted outlines.
The Post Process Anti Aliasing is only done on the Alpha channel of the outlines.
Because of that we need to add bleed the outline color out of the silouhette so the AA'd alpha can blend the right color and not pick black when the alpha is smoothed out of the silhouette.

Also because of the AA needs to have clear contrast to work with, I decided to ditch the "bluring" or the occluded outlines.

The FXAA adds an overhead of 0.17ms but we gain back 0.22ms * 4 = 0.88ms by removing the blur.

The FXAA Implementation is from Corey Richardson (cmr) (D2717). I had to modify it a bit to only filter the alpha channel.
source/blender/draw/CMakeLists.txt
source/blender/draw/modes/object_mode.c
source/blender/draw/modes/shaders/common_fxaa_lib.glsl [new file with mode: 0644]
source/blender/draw/modes/shaders/object_outline_expand_frag.glsl
source/blender/draw/modes/shaders/object_outline_resolve_frag.glsl