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:
authorMike Erwin <significant.bit@gmail.com>2017-02-28 10:18:52 +0300
committerMike Erwin <significant.bit@gmail.com>2017-02-28 10:18:52 +0300
commit8a76049e84c79c6267c3c51fe32145f0ebf7805c (patch)
tree4adbfad5728d98aeb64bebec5a8cb3a69086844f /source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl
parente7d57628c955c1843c70c8fc5023f5d8954847bd (diff)
rename built-in point shaders, SMOOTH --> AA
Updated shader names and code that uses them. All of these shaders produce round points that are anti-aliased and blended against the background. These were initially named SMOOTH because they replace glEnable(GL_POINT_SMOOTH). But SMOOTH in shader-land refers to vertex attribute interpolation (like glShadeModel(GL_SMOOTH)). Using SMOOTH to mean two things is confusing, so we now use AA to mean "the point is anti-aliased".
Diffstat (limited to 'source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl36
1 files changed, 36 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl b/source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl
new file mode 100644
index 00000000000..f83785de95e
--- /dev/null
+++ b/source/blender/gpu/shaders/gpu_shader_point_uniform_color_outline_aa_frag.glsl
@@ -0,0 +1,36 @@
+
+uniform vec4 color;
+uniform vec4 outlineColor;
+
+#if __VERSION__ == 120
+ varying vec4 radii;
+ #define fragColor gl_FragColor
+#else
+ in vec4 radii;
+ out vec4 fragColor;
+#endif
+
+void main() {
+ float dist = length(gl_PointCoord - vec2(0.5));
+
+// transparent outside of point
+// --- 0 ---
+// smooth transition
+// --- 1 ---
+// pure outline color
+// --- 2 ---
+// smooth transition
+// --- 3 ---
+// pure point color
+// ...
+// dist = 0 at center of point
+
+ float midStroke = 0.5 * (radii[1] + radii[2]);
+
+ if (dist > midStroke) {
+ fragColor.rgb = outlineColor.rgb;
+ fragColor.a = mix(outlineColor.a, 0.0, smoothstep(radii[1], radii[0], dist));
+ }
+ else
+ fragColor = mix(color, outlineColor, smoothstep(radii[3], radii[2], dist));
+}