@@ -656,22 +656,14 @@ class Points2D(object):
656
656
PLUS : """
657
657
float alphaSymbol(vec2 coord, float size) {
658
658
vec2 d = abs(size * (coord - vec2(0.5, 0.5)));
659
- if (min(d.x, d.y) < 0.5) {
660
- return 1.0;
661
- } else {
662
- return 0.0;
663
- }
659
+ return local_smoothstep(1.5, 0.5, min(d.x, d.y));
664
660
}
665
661
""" ,
666
662
X_MARKER : """
667
663
float alphaSymbol(vec2 coord, float size) {
668
664
vec2 pos = floor(size * coord) + 0.5;
669
665
vec2 d_x = abs(pos.x + vec2(- pos.y, pos.y - size));
670
- if (min(d_x.x, d_x.y) <= 0.5) {
671
- return 1.0;
672
- } else {
673
- return 0.0;
674
- }
666
+ return local_smoothstep(1.5, 0.5, min(d_x.x, d_x.y));
675
667
}
676
668
""" ,
677
669
ASTERISK : """
@@ -692,22 +684,14 @@ class Points2D(object):
692
684
""" ,
693
685
H_LINE : """
694
686
float alphaSymbol(vec2 coord, float size) {
695
- float dy = abs(size * (coord.y - 0.5));
696
- if (dy < 0.5) {
697
- return 1.0;
698
- } else {
699
- return 0.0;
700
- }
687
+ float d = abs(size * (coord.y - 0.5));
688
+ return local_smoothstep(1.5, 0.5, d);
701
689
}
702
690
""" ,
703
691
V_LINE : """
704
692
float alphaSymbol(vec2 coord, float size) {
705
- float dx = abs(size * (coord.x - 0.5));
706
- if (dx < 0.5) {
707
- return 1.0;
708
- } else {
709
- return 0.0;
710
- }
693
+ float d = abs(size * (coord.x - 0.5));
694
+ return local_smoothstep(1.5, 0.5, d);
711
695
}
712
696
""" ,
713
697
HEART : """
@@ -721,60 +705,56 @@ class Points2D(object):
721
705
float d = (13.0*h - 22.0*h*h + 10.0*h*h*h)/(6.0-5.0*h);
722
706
float res = clamp(r-d, 0., 1.);
723
707
// antialiasing
724
- res = smoothstep (0.1, 0.001, res);
708
+ res = local_smoothstep (0.1, 0.001, res);
725
709
return res;
726
710
}
727
711
""" ,
728
712
TICK_LEFT : """
729
713
float alphaSymbol(vec2 coord, float size) {
730
714
coord = size * (coord - 0.5);
731
715
float dy = abs(coord.y);
732
- if (dy < 0.5 && coord.x < 0.5) {
733
- return 1.0;
734
- } else {
716
+ if (coord.x > 0.5) {
735
717
return 0.0;
736
718
}
719
+ return local_smoothstep(1.5, 0.5, dy);
737
720
}
738
721
""" ,
739
722
TICK_RIGHT : """
740
723
float alphaSymbol(vec2 coord, float size) {
741
724
coord = size * (coord - 0.5);
742
725
float dy = abs(coord.y);
743
- if (dy < 0.5 && coord.x > -0.5) {
744
- return 1.0;
745
- } else {
726
+ if (coord.x < -0.5) {
746
727
return 0.0;
747
728
}
729
+ return local_smoothstep(1.5, 0.5, dy);
748
730
}
749
731
""" ,
750
732
TICK_UP : """
751
733
float alphaSymbol(vec2 coord, float size) {
752
- coord = size * (coord - 0.5);
734
+ coord = size * (coord - 0.5);
753
735
float dx = abs(coord.x);
754
- if (dx < 0.5 && coord.y < 0.5) {
755
- return 1.0;
756
- } else {
736
+ if (coord.y > 0.5) {
757
737
return 0.0;
758
738
}
739
+ return local_smoothstep(1.5, 0.5, dx);
759
740
}
760
741
""" ,
761
742
TICK_DOWN : """
762
743
float alphaSymbol(vec2 coord, float size) {
763
744
coord = size * (coord - 0.5);
764
745
float dx = abs(coord.x);
765
- if (dx < 0.5 && coord.y > -0.5) {
766
- return 1.0;
767
- } else {
746
+ if (coord.y < -0.5) {
768
747
return 0.0;
769
748
}
749
+ return local_smoothstep(1.5, 0.5, dx);
770
750
}
771
751
""" ,
772
752
CARET_LEFT : """
773
753
float alphaSymbol(vec2 coord, float size) {
774
754
coord = size * (coord - 0.5);
775
755
float d = abs(coord.x) - abs(coord.y);
776
756
if (d >= -0.1 && coord.x > 0.5) {
777
- return smoothstep (-0.1, 0.1, d);
757
+ return local_smoothstep (-0.1, 0.1, d);
778
758
} else {
779
759
return 0.0;
780
760
}
@@ -785,7 +765,7 @@ class Points2D(object):
785
765
coord = size * (coord - 0.5);
786
766
float d = abs(coord.x) - abs(coord.y);
787
767
if (d >= -0.1 && coord.x < 0.5) {
788
- return smoothstep (-0.1, 0.1, d);
768
+ return local_smoothstep (-0.1, 0.1, d);
789
769
} else {
790
770
return 0.0;
791
771
}
@@ -796,7 +776,7 @@ class Points2D(object):
796
776
coord = size * (coord - 0.5);
797
777
float d = abs(coord.y) - abs(coord.x);
798
778
if (d >= -0.1 && coord.y > 0.5) {
799
- return smoothstep (-0.1, 0.1, d);
779
+ return local_smoothstep (-0.1, 0.1, d);
800
780
} else {
801
781
return 0.0;
802
782
}
@@ -807,7 +787,7 @@ class Points2D(object):
807
787
coord = size * (coord - 0.5);
808
788
float d = abs(coord.y) - abs(coord.x);
809
789
if (d >= -0.1 && coord.y < 0.5) {
810
- return smoothstep (-0.1, 0.1, d);
790
+ return local_smoothstep (-0.1, 0.1, d);
811
791
} else {
812
792
return 0.0;
813
793
}
@@ -822,6 +802,13 @@ class Points2D(object):
822
802
823
803
varying vec4 vColor;
824
804
805
+ /* smoothstep function implementation to support GLSL 1.20 */
806
+ float local_smoothstep(float edge0, float edge1, float x) {
807
+ float t;
808
+ t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
809
+ return t * t * (3.0 - 2.0 * t);
810
+ }
811
+
825
812
%s
826
813
827
814
void main(void) {
0 commit comments