diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-12-11 01:16:03 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-12-11 01:17:20 +0300 |
commit | 1d230240143a465a197df32754d7c56fab44073a (patch) | |
tree | 79e9b50797de6764e7dc03251c192c5406424fdf /source/blender/draw/modes/shaders/object_loose_points_frag.glsl | |
parent | bfb9680e9e59c6fcbdce935323eceeee2b5349d3 (diff) |
Object Mode: Make point clouds a bit less like uniform blobs
Also this display is optimized. It does not use blending and pixel discard.
Working with scanned data should be more pleasant with this.
A better option would be to use gl_FragDepth to have a better sense of
volume but this discards early depth test.
Diffstat (limited to 'source/blender/draw/modes/shaders/object_loose_points_frag.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/object_loose_points_frag.glsl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source/blender/draw/modes/shaders/object_loose_points_frag.glsl b/source/blender/draw/modes/shaders/object_loose_points_frag.glsl new file mode 100644 index 00000000000..66b3091a41c --- /dev/null +++ b/source/blender/draw/modes/shaders/object_loose_points_frag.glsl @@ -0,0 +1,19 @@ + +uniform vec4 color; +uniform vec4 innerColor; + +out vec4 fragColor; + +void main() +{ + vec2 centered = abs(gl_PointCoord - vec2(0.5)); + float dist = max(centered.x, centered.y); + + float fac = dist * dist * 4.0; + fragColor = mix(innerColor, color, 0.45 + fac * 0.65); + + /* Make the effect more like a fresnel by offsetting + * the depth and creating mini-spheres. + * Disabled as it has performance impact. */ + // gl_FragDepth = gl_FragCoord.z + 1e-6 * fac; +} |