summaryrefslogtreecommitdiffstats
path: root/glow/src/shader
diff options
context:
space:
mode:
authorLibravatar Richard <richardsoncusto@gmail.com>2021-11-11 01:10:47 -0300
committerLibravatar Richard <richardsoncusto@gmail.com>2022-01-19 17:40:17 -0300
commite31566d430093fb084da2e7f4f4ed1b66326edef (patch)
tree328c599dd2d62a32e17e95e792c74054d822537e /glow/src/shader
parentafdf3e799a7610444208c9568a7cf7531d0c2ef3 (diff)
downloadiced-e31566d430093fb084da2e7f4f4ed1b66326edef.tar.gz
iced-e31566d430093fb084da2e7f4f4ed1b66326edef.tar.bz2
iced-e31566d430093fb084da2e7f4f4ed1b66326edef.zip
Improve shader version selection
Diffstat (limited to 'glow/src/shader')
-rw-r--r--glow/src/shader/common/triangle.frag18
-rw-r--r--glow/src/shader/common/triangle.vert (renamed from glow/src/shader/core/triangle.vert)4
-rw-r--r--glow/src/shader/compatibility/quad.frag9
-rw-r--r--glow/src/shader/compatibility/quad.vert2
-rw-r--r--glow/src/shader/compatibility/triangle.frag8
-rw-r--r--glow/src/shader/compatibility/triangle.vert13
-rw-r--r--glow/src/shader/core/quad.frag25
-rw-r--r--glow/src/shader/core/quad.vert4
-rw-r--r--glow/src/shader/core/triangle.frag9
9 files changed, 44 insertions, 48 deletions
diff --git a/glow/src/shader/common/triangle.frag b/glow/src/shader/common/triangle.frag
new file mode 100644
index 00000000..e8689f2e
--- /dev/null
+++ b/glow/src/shader/common/triangle.frag
@@ -0,0 +1,18 @@
+#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+#else
+precision mediump float;
+#endif
+#endif
+
+#ifdef HIGHER_THAN_300
+out vec4 fragColor;
+#define gl_FragColor fragColor
+#endif
+
+in vec4 v_Color;
+
+void main() {
+ gl_FragColor = v_Color;
+} \ No newline at end of file
diff --git a/glow/src/shader/core/triangle.vert b/glow/src/shader/common/triangle.vert
index 895652ea..d0494a5f 100644
--- a/glow/src/shader/core/triangle.vert
+++ b/glow/src/shader/common/triangle.vert
@@ -1,5 +1,3 @@
-#version 130
-
uniform mat4 u_Transform;
in vec2 i_Position;
@@ -10,4 +8,4 @@ out vec4 v_Color;
void main() {
gl_Position = u_Transform * vec4(i_Position, 0.0, 1.0);
v_Color = i_Color;
-}
+} \ No newline at end of file
diff --git a/glow/src/shader/compatibility/quad.frag b/glow/src/shader/compatibility/quad.frag
index c2634c65..8ea5693d 100644
--- a/glow/src/shader/compatibility/quad.frag
+++ b/glow/src/shader/compatibility/quad.frag
@@ -1,5 +1,10 @@
-#version 100
+#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+#else
precision mediump float;
+#endif
+#endif
uniform float u_ScreenHeight;
@@ -10,7 +15,7 @@ varying vec2 v_Scale;
varying float v_BorderRadius;
varying float v_BorderWidth;
-float _distance(in vec2 frag_coord, in vec2 position, in vec2 size, float radius)
+float _distance(vec2 frag_coord, vec2 position, vec2 size, float radius)
{
// TODO: Try SDF approach: https://www.shadertoy.com/view/wd3XRN
vec2 inner_size = size - vec2(radius, radius) * 2.0;
diff --git a/glow/src/shader/compatibility/quad.vert b/glow/src/shader/compatibility/quad.vert
index 0d02e9d0..abe70c0e 100644
--- a/glow/src/shader/compatibility/quad.vert
+++ b/glow/src/shader/compatibility/quad.vert
@@ -1,5 +1,3 @@
-#version 100
-
uniform mat4 u_Transform;
uniform float u_Scale;
diff --git a/glow/src/shader/compatibility/triangle.frag b/glow/src/shader/compatibility/triangle.frag
deleted file mode 100644
index 58fca553..00000000
--- a/glow/src/shader/compatibility/triangle.frag
+++ /dev/null
@@ -1,8 +0,0 @@
-#version 100
-precision mediump float;
-
-varying vec4 v_Color;
-
-void main() {
- gl_FragColor = v_Color;
-}
diff --git a/glow/src/shader/compatibility/triangle.vert b/glow/src/shader/compatibility/triangle.vert
deleted file mode 100644
index 975c9781..00000000
--- a/glow/src/shader/compatibility/triangle.vert
+++ /dev/null
@@ -1,13 +0,0 @@
-#version 100
-
-uniform mat4 u_Transform;
-
-attribute vec2 i_Position;
-attribute vec4 i_Color;
-
-varying vec4 v_Color;
-
-void main() {
- v_Color = i_Color;
- gl_Position = u_Transform * vec4(i_Position, 0.0, 1.0);
-}
diff --git a/glow/src/shader/core/quad.frag b/glow/src/shader/core/quad.frag
index 18fd5baa..57e2e8e7 100644
--- a/glow/src/shader/core/quad.frag
+++ b/glow/src/shader/core/quad.frag
@@ -1,4 +1,15 @@
-#version 130
+#ifdef GL_ES
+#ifdef GL_FRAGMENT_PRECISION_HIGH
+precision highp float;
+#else
+precision mediump float;
+#endif
+#endif
+
+#ifdef HIGHER_THAN_300
+out vec4 fragColor;
+#define gl_FragColor fragColor
+#endif
uniform float u_ScreenHeight;
@@ -9,9 +20,7 @@ in vec2 v_Scale;
in float v_BorderRadius;
in float v_BorderWidth;
-out vec4 o_Color;
-
-float distance(in vec2 frag_coord, in vec2 position, in vec2 size, float radius)
+float fDistance(vec2 frag_coord, vec2 position, vec2 size, float radius)
{
// TODO: Try SDF approach: https://www.shadertoy.com/view/wd3XRN
vec2 inner_size = size - vec2(radius, radius) * 2.0;
@@ -35,10 +44,10 @@ void main() {
vec2 fragCoord = vec2(gl_FragCoord.x, u_ScreenHeight - gl_FragCoord.y);
// TODO: Remove branching (?)
- if(v_BorderWidth > 0) {
+ if(v_BorderWidth > 0.0) {
float internal_border = max(v_BorderRadius - v_BorderWidth, 0.0);
- float internal_distance = distance(
+ float internal_distance = fDistance(
fragCoord,
v_Pos + vec2(v_BorderWidth),
v_Scale - vec2(v_BorderWidth * 2.0),
@@ -56,7 +65,7 @@ void main() {
mixed_color = v_Color;
}
- float d = distance(
+ float d = fDistance(
fragCoord,
v_Pos,
v_Scale,
@@ -66,5 +75,5 @@ void main() {
float radius_alpha =
1.0 - smoothstep(max(v_BorderRadius - 0.5, 0.0), v_BorderRadius + 0.5, d);
- o_Color = vec4(mixed_color.xyz, mixed_color.w * radius_alpha);
+ gl_FragColor = vec4(mixed_color.xyz, mixed_color.w * radius_alpha);
}
diff --git a/glow/src/shader/core/quad.vert b/glow/src/shader/core/quad.vert
index 30f28d52..b1fb2365 100644
--- a/glow/src/shader/core/quad.vert
+++ b/glow/src/shader/core/quad.vert
@@ -1,5 +1,3 @@
-#version 130
-
uniform mat4 u_Transform;
uniform float u_Scale;
@@ -17,7 +15,7 @@ out vec2 v_Scale;
out float v_BorderRadius;
out float v_BorderWidth;
-const vec2 positions[4] = vec2[](
+vec2 positions[4] = vec2[](
vec2(0.0, 0.0),
vec2(0.0, 1.0),
vec2(1.0, 0.0),
diff --git a/glow/src/shader/core/triangle.frag b/glow/src/shader/core/triangle.frag
deleted file mode 100644
index 39c2ff6f..00000000
--- a/glow/src/shader/core/triangle.frag
+++ /dev/null
@@ -1,9 +0,0 @@
-#version 130
-
-in vec4 v_Color;
-
-out vec4 o_Color;
-
-void main() {
- o_Color = v_Color;
-}