aboutsummaryrefslogtreecommitdiff
path: root/vendor/gioui.org/shader/gio
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gioui.org/shader/gio')
-rw-r--r--vendor/gioui.org/shader/gio/blit.frag15
-rw-r--r--vendor/gioui.org/shader/gio/blit.vert27
-rw-r--r--vendor/gioui.org/shader/gio/common.h35
-rw-r--r--vendor/gioui.org/shader/gio/copy.frag24
-rw-r--r--vendor/gioui.org/shader/gio/copy.vert26
-rw-r--r--vendor/gioui.org/shader/gio/cover.frag20
-rw-r--r--vendor/gioui.org/shader/gio/cover.vert31
-rw-r--r--vendor/gioui.org/shader/gio/gen.go5
-rw-r--r--vendor/gioui.org/shader/gio/input.vert15
-rw-r--r--vendor/gioui.org/shader/gio/intersect.frag15
-rw-r--r--vendor/gioui.org/shader/gio/intersect.vert26
-rw-r--r--vendor/gioui.org/shader/gio/material.frag32
-rw-r--r--vendor/gioui.org/shader/gio/material.vert25
-rw-r--r--vendor/gioui.org/shader/gio/shaders.go796
-rw-r--r--vendor/gioui.org/shader/gio/simple.frag11
-rw-r--r--vendor/gioui.org/shader/gio/stencil.frag81
-rw-r--r--vendor/gioui.org/shader/gio/stencil.vert57
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.dxbcbin0 -> 628 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.glsl100es18
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.glsl15017
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.metallibiosbin0 -> 2679 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.metallibiossimulatorbin0 -> 3057 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.metallibmacosbin0 -> 2695 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.0.spirvbin0 -> 624 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.dxbcbin0 -> 848 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.glsl100es19
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.glsl15018
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.metallibiosbin0 -> 2935 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.metallibiossimulatorbin0 -> 3361 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.metallibmacosbin0 -> 2951 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.1.spirvbin0 -> 964 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.dxbcbin0 -> 660 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.glsl100es13
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.glsl15012
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.metallibiosbin0 -> 2711 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.metallibiossimulatorbin0 -> 3121 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.metallibmacosbin0 -> 2775 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.frag.2.spirvbin0 -> 596 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.dxbcbin0 -> 1184 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.glsl100es37
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.glsl15037
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.metallibiosbin0 -> 3044 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.metallibiossimulatorbin0 -> 3438 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.metallibmacosbin0 -> 3092 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zblit.vert.0.spirvbin0 -> 1600 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.dxbcbin0 -> 1256 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.glsl100es27
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.glsl15026
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.metallibiosbin0 -> 2951 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.metallibiossimulatorbin0 -> 3361 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.metallibmacosbin0 -> 2999 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.frag.0.spirvbin0 -> 1252 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.dxbcbin0 -> 1056 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.glsl100es35
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.glsl15035
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.metallibiosbin0 -> 3028 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.metallibiossimulatorbin0 -> 3438 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.metallibmacosbin0 -> 3060 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcopy.vert.0.spirvbin0 -> 1304 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.dxbcbin0 -> 932 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.glsl100es23
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.glsl15022
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.metallibiosbin0 -> 3191 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.metallibiossimulatorbin0 -> 3665 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.metallibmacosbin0 -> 3207 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.0.spirvbin0 -> 1092 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.dxbcbin0 -> 1152 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.glsl100es24
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.glsl15023
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.metallibiosbin0 -> 3367 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.metallibiossimulatorbin0 -> 3921 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.metallibmacosbin0 -> 3367 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.1.spirvbin0 -> 1416 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.dxbcbin0 -> 984 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.glsl100es17
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.glsl15016
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.metallibiosbin0 -> 2967 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.metallibiossimulatorbin0 -> 3441 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.metallibmacosbin0 -> 3015 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.frag.2.spirvbin0 -> 1000 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.dxbcbin0 -> 1332 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.glsl100es41
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.glsl15041
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.metallibiosbin0 -> 3156 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.metallibiossimulatorbin0 -> 3598 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.metallibmacosbin0 -> 3204 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zcover.vert.0.spirvbin0 -> 1972 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.dxbcbin0 -> 588 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.glsl100es22
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.glsl15022
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.metallibiosbin0 -> 2579 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.metallibiossimulatorbin0 -> 2989 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.metallibmacosbin0 -> 2627 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zinput.vert.0.spirvbin0 -> 800 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.dxbcbin0 -> 776 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.glsl100es13
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.glsl15012
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.metallibiosbin0 -> 2791 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.metallibiossimulatorbin0 -> 3233 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.metallibmacosbin0 -> 2823 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.frag.0.spirvbin0 -> 736 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.dxbcbin0 -> 1048 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.glsl100es35
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.glsl15035
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.metallibiosbin0 -> 2964 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.metallibiossimulatorbin0 -> 3358 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.metallibmacosbin0 -> 3012 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zintersect.vert.0.spirvbin0 -> 1368 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.dxbcbin0 -> 1476 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl100es37
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl15036
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibiosbin0 -> 3367 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibiossimulatorbin0 -> 3761 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibmacosbin0 -> 3383 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.frag.0.spirvbin0 -> 1624 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.dxbcbin0 -> 1000 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl100es34
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl15034
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibiosbin0 -> 2996 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibiossimulatorbin0 -> 3406 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibmacosbin0 -> 3028 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zmaterial.vert.0.spirvbin0 -> 1188 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.dxbcbin0 -> 476 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.glsl100es9
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.glsl1509
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.metallibiosbin0 -> 2359 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.metallibiossimulatorbin0 -> 2721 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.metallibmacosbin0 -> 2391 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zsimple.frag.0.spirvbin0 -> 396 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.dxbcbin0 -> 2652 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.glsl100es38
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.glsl15037
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.metallibiosbin0 -> 3159 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.metallibiossimulatorbin0 -> 3713 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.metallibmacosbin0 -> 3175 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.frag.0.spirvbin0 -> 2868 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.dxbcbin0 -> 2120 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.glsl100es64
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.glsl15064
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.metallibiosbin0 -> 3535 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.metallibiossimulatorbin0 -> 4041 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.metallibmacosbin0 -> 3567 bytes
-rw-r--r--vendor/gioui.org/shader/gio/zstencil.vert.0.spirvbin0 -> 2724 bytes
143 files changed, 2243 insertions, 0 deletions
diff --git a/vendor/gioui.org/shader/gio/blit.frag b/vendor/gioui.org/shader/gio/blit.frag
new file mode 100644
index 0000000..a88f4dc
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/blit.frag
@@ -0,0 +1,15 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(location=0) in highp vec2 vUV;
+
+{{.Header}}
+
+layout(location = 0) out vec4 fragColor;
+
+void main() {
+ fragColor = {{.FetchColorExpr}};
+}
diff --git a/vendor/gioui.org/shader/gio/blit.vert b/vendor/gioui.org/shader/gio/blit.vert
new file mode 100644
index 0000000..83d041f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/blit.vert
@@ -0,0 +1,27 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(push_constant) uniform Block {
+ vec4 transform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+} _block;
+
+layout(location = 0) in vec2 pos;
+
+layout(location = 1) in vec2 uv;
+
+layout(location = 0) out vec2 vUV;
+
+void main() {
+ vec2 p = pos*_block.transform.xy + _block.transform.zw;
+ gl_Position = vec4(transform3x2(windowTransform, vec3(p, 0)), 1);
+ vUV = transform3x2(m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz), vec3(uv,1)).xy;
+}
diff --git a/vendor/gioui.org/shader/gio/common.h b/vendor/gioui.org/shader/gio/common.h
new file mode 100644
index 0000000..9b6dc59
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/common.h
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: Unlicense OR MIT
+
+struct m3x2 {
+ vec3 r0;
+ vec3 r1;
+};
+
+// fboTransform is the transformation that cancels the implied transformation
+// between the clip space and the framebuffer. Only two rows are returned. The
+// last is implied to be [0, 0, 1].
+const m3x2 fboTransform = m3x2(
+#if defined(LANG_HLSL) || defined(LANG_MSL) || defined(LANG_MSLIOS)
+ vec3(1.0, 0.0, 0.0),
+ vec3(0.0, -1.0, 0.0)
+#else
+ vec3(1.0, 0.0, 0.0),
+ vec3(0.0, 1.0, 0.0)
+#endif
+);
+
+// windowTransform is the transformation that cancels the implied transformation
+// between framebuffer space and window system coordinates.
+const m3x2 windowTransform = m3x2(
+#if defined(LANG_VULKAN)
+ vec3(1.0, 0.0, 0.0),
+ vec3(0.0, 1.0, 0.0)
+#else
+ vec3(1.0, 0.0, 0.0),
+ vec3(0.0, -1.0, 0.0)
+#endif
+);
+
+vec3 transform3x2(m3x2 t, vec3 v) {
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
diff --git a/vendor/gioui.org/shader/gio/copy.frag b/vendor/gioui.org/shader/gio/copy.frag
new file mode 100644
index 0000000..048d9e7
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/copy.frag
@@ -0,0 +1,24 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(binding = 0) uniform sampler2D tex;
+
+layout(location = 0) in highp vec2 vUV;
+
+layout(location = 0) out vec4 fragColor;
+
+vec3 sRGBtoRGB(vec3 rgb) {
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.04045));
+ vec3 below = rgb/vec3(12.92);
+ vec3 above = pow((rgb + vec3(0.055))/vec3(1.055), vec3(2.4));
+ return mix(below, above, cutoff);
+}
+
+void main() {
+ vec4 texel = texture(tex, vUV);
+ texel.rgb = sRGBtoRGB(texel.rgb);
+ fragColor = texel;
+}
diff --git a/vendor/gioui.org/shader/gio/copy.vert b/vendor/gioui.org/shader/gio/copy.vert
new file mode 100644
index 0000000..c079b96
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/copy.vert
@@ -0,0 +1,26 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(push_constant) uniform Block {
+ vec2 scale;
+ vec2 pos;
+ vec2 uvScale;
+} _block;
+
+layout(location = 0) in vec2 pos;
+layout(location = 1) in vec2 uv;
+
+layout(location = 0) out vec2 vUV;
+
+void main() {
+ vUV = vec2(uv*_block.uvScale);
+ vec2 p = vec2(pos*_block.scale + _block.pos);
+ gl_Position = vec4(transform3x2(windowTransform, vec3(p, 0)), 1);
+}
diff --git a/vendor/gioui.org/shader/gio/cover.frag b/vendor/gioui.org/shader/gio/cover.frag
new file mode 100644
index 0000000..34c5e4c
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/cover.frag
@@ -0,0 +1,20 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+{{.Header}}
+
+layout(location = 0) in highp vec2 vCoverUV;
+layout(location = 1) in highp vec2 vUV;
+
+layout(binding = 1) uniform sampler2D cover;
+
+layout(location = 0) out vec4 fragColor;
+
+void main() {
+ fragColor = {{.FetchColorExpr}};
+ float c = min(abs(texture(cover, vCoverUV).r), 1.0);
+ fragColor *= c;
+}
diff --git a/vendor/gioui.org/shader/gio/cover.vert b/vendor/gioui.org/shader/gio/cover.vert
new file mode 100644
index 0000000..02fae50
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/cover.vert
@@ -0,0 +1,31 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(push_constant) uniform Block {
+ vec4 transform;
+ vec4 uvCoverTransform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+} _block;
+
+layout(location = 0) in vec2 pos;
+
+layout(location = 0) out vec2 vCoverUV;
+
+layout(location = 1) in vec2 uv;
+layout(location = 1) out vec2 vUV;
+
+void main() {
+ vec2 p = vec2(pos*_block.transform.xy + _block.transform.zw);
+ gl_Position = vec4(transform3x2(windowTransform, vec3(p, 0)), 1);
+ vUV = transform3x2(m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz), vec3(uv,1)).xy;
+ vec3 uv3 = vec3(uv, 1.0);
+ vCoverUV = (uv3*vec3(_block.uvCoverTransform.xy, 1.0)+vec3(_block.uvCoverTransform.zw, 0.0)).xy;
+}
diff --git a/vendor/gioui.org/shader/gio/gen.go b/vendor/gioui.org/shader/gio/gen.go
new file mode 100644
index 0000000..f26056a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/gen.go
@@ -0,0 +1,5 @@
+// SPDX-License-Identifier: Unlicense OR MIT
+
+package gio
+
+//go:generate go run ../cmd/convertshaders -package gio -dir .
diff --git a/vendor/gioui.org/shader/gio/input.vert b/vendor/gioui.org/shader/gio/input.vert
new file mode 100644
index 0000000..3d0cd50
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/input.vert
@@ -0,0 +1,15 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(location=0) in vec4 position;
+
+void main() {
+ gl_Position = vec4(transform3x2(windowTransform, position.xyz), position.w);
+}
diff --git a/vendor/gioui.org/shader/gio/intersect.frag b/vendor/gioui.org/shader/gio/intersect.frag
new file mode 100644
index 0000000..21a126f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/intersect.frag
@@ -0,0 +1,15 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(location = 0) in highp vec2 vUV;
+
+layout(binding = 0) uniform sampler2D cover;
+
+layout(location = 0) out vec4 fragColor;
+
+void main() {
+ fragColor.r = abs(texture(cover, vUV).r);
+}
diff --git a/vendor/gioui.org/shader/gio/intersect.vert b/vendor/gioui.org/shader/gio/intersect.vert
new file mode 100644
index 0000000..e7ee2fe
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/intersect.vert
@@ -0,0 +1,26 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(location = 0) in vec2 pos;
+layout(location = 1) in vec2 uv;
+
+layout(push_constant) uniform Block {
+ vec4 uvTransform;
+ vec4 subUVTransform;
+} _block;
+
+layout(location = 0) out vec2 vUV;
+
+void main() {
+ vec3 p = transform3x2(fboTransform, vec3(pos, 1.0));
+ gl_Position = vec4(p, 1);
+ vUV = uv.xy*_block.subUVTransform.xy + _block.subUVTransform.zw;
+ vUV = vUV*_block.uvTransform.xy + _block.uvTransform.zw;
+}
diff --git a/vendor/gioui.org/shader/gio/material.frag b/vendor/gioui.org/shader/gio/material.frag
new file mode 100644
index 0000000..489461e
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/material.frag
@@ -0,0 +1,32 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(binding = 0) uniform sampler2D tex;
+
+layout(location = 0) in highp vec2 vUV;
+
+layout(location = 0) out vec4 fragColor;
+
+layout(push_constant) uniform Color {
+ // If emulateSRGB is set (!= 0), the input texels are sRGB encoded. We save the
+ // conversion step below, at the cost of texture filtering in sRGB space.
+ layout(offset=16) float emulateSRGB;
+} _color;
+
+vec3 RGBtosRGB(vec3 rgb) {
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.0031308));
+ vec3 below = vec3(12.92)*rgb;
+ vec3 above = vec3(1.055)*pow(rgb, vec3(0.41666)) - vec3(0.055);
+ return mix(below, above, cutoff);
+}
+
+void main() {
+ vec4 texel = texture(tex, vUV);
+ if (_color.emulateSRGB == 0.0) {
+ texel.rgb = RGBtosRGB(texel.rgb);
+ }
+ fragColor = texel;
+}
diff --git a/vendor/gioui.org/shader/gio/material.vert b/vendor/gioui.org/shader/gio/material.vert
new file mode 100644
index 0000000..22c41a0
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/material.vert
@@ -0,0 +1,25 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(push_constant) uniform Block {
+ vec2 scale;
+ vec2 pos;
+} _block;
+
+layout(location = 0) in vec2 pos;
+layout(location = 1) in vec2 uv;
+
+layout(location = 0) out vec2 vUV;
+
+void main() {
+ vUV = uv;
+ vec2 p = vec2(pos*_block.scale + _block.pos);
+ gl_Position = vec4(transform3x2(fboTransform, vec3(p, 0)), 1);
+}
diff --git a/vendor/gioui.org/shader/gio/shaders.go b/vendor/gioui.org/shader/gio/shaders.go
new file mode 100644
index 0000000..1166c1c
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/shaders.go
@@ -0,0 +1,796 @@
+// Code generated by build.go. DO NOT EDIT.
+
+package gio
+
+import (
+ _ "embed"
+ "runtime"
+
+ "gioui.org/shader"
+)
+
+var (
+ Shader_blit_frag = [...]shader.Sources{
+ {
+ Name: "blit.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_color.color", Type: 0x0, Size: 4, Offset: 112}},
+ Size: 16,
+ },
+ },
+ {
+ Name: "blit.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_gradient.color1", Type: 0x0, Size: 4, Offset: 96}, {Name: "_gradient.color2", Type: 0x0, Size: 4, Offset: 112}},
+ Size: 32,
+ },
+ },
+ {
+ Name: "blit.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Textures: []shader.TextureBinding{{Name: "tex", Binding: 0}},
+ },
+ }
+ //go:embed zblit.frag.0.spirv
+ zblit_frag_0_spirv string
+ //go:embed zblit.frag.0.glsl100es
+ zblit_frag_0_glsl100es string
+ //go:embed zblit.frag.0.glsl150
+ zblit_frag_0_glsl150 string
+ //go:embed zblit.frag.0.dxbc
+ zblit_frag_0_dxbc string
+ //go:embed zblit.frag.0.metallibmacos
+ zblit_frag_0_metallibmacos string
+ //go:embed zblit.frag.0.metallibios
+ zblit_frag_0_metallibios string
+ //go:embed zblit.frag.0.metallibiossimulator
+ zblit_frag_0_metallibiossimulator string
+ //go:embed zblit.frag.1.spirv
+ zblit_frag_1_spirv string
+ //go:embed zblit.frag.1.glsl100es
+ zblit_frag_1_glsl100es string
+ //go:embed zblit.frag.1.glsl150
+ zblit_frag_1_glsl150 string
+ //go:embed zblit.frag.1.dxbc
+ zblit_frag_1_dxbc string
+ //go:embed zblit.frag.1.metallibmacos
+ zblit_frag_1_metallibmacos string
+ //go:embed zblit.frag.1.metallibios
+ zblit_frag_1_metallibios string
+ //go:embed zblit.frag.1.metallibiossimulator
+ zblit_frag_1_metallibiossimulator string
+ //go:embed zblit.frag.2.spirv
+ zblit_frag_2_spirv string
+ //go:embed zblit.frag.2.glsl100es
+ zblit_frag_2_glsl100es string
+ //go:embed zblit.frag.2.glsl150
+ zblit_frag_2_glsl150 string
+ //go:embed zblit.frag.2.dxbc
+ zblit_frag_2_dxbc string
+ //go:embed zblit.frag.2.metallibmacos
+ zblit_frag_2_metallibmacos string
+ //go:embed zblit.frag.2.metallibios
+ zblit_frag_2_metallibios string
+ //go:embed zblit.frag.2.metallibiossimulator
+ zblit_frag_2_metallibiossimulator string
+ Shader_blit_vert = shader.Sources{
+ Name: "blit.vert",
+ Inputs: []shader.InputLocation{{Name: "pos", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "uv", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.transform", Type: 0x0, Size: 4, Offset: 0}, {Name: "_block.uvTransformR1", Type: 0x0, Size: 4, Offset: 16}, {Name: "_block.uvTransformR2", Type: 0x0, Size: 4, Offset: 32}},
+ Size: 48,
+ },
+ }
+ //go:embed zblit.vert.0.spirv
+ zblit_vert_0_spirv string
+ //go:embed zblit.vert.0.glsl100es
+ zblit_vert_0_glsl100es string
+ //go:embed zblit.vert.0.glsl150
+ zblit_vert_0_glsl150 string
+ //go:embed zblit.vert.0.dxbc
+ zblit_vert_0_dxbc string
+ //go:embed zblit.vert.0.metallibmacos
+ zblit_vert_0_metallibmacos string
+ //go:embed zblit.vert.0.metallibios
+ zblit_vert_0_metallibios string
+ //go:embed zblit.vert.0.metallibiossimulator
+ zblit_vert_0_metallibiossimulator string
+ Shader_copy_frag = shader.Sources{
+ Name: "copy.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Textures: []shader.TextureBinding{{Name: "tex", Binding: 0}},
+ }
+ //go:embed zcopy.frag.0.spirv
+ zcopy_frag_0_spirv string
+ //go:embed zcopy.frag.0.glsl100es
+ zcopy_frag_0_glsl100es string
+ //go:embed zcopy.frag.0.glsl150
+ zcopy_frag_0_glsl150 string
+ //go:embed zcopy.frag.0.dxbc
+ zcopy_frag_0_dxbc string
+ //go:embed zcopy.frag.0.metallibmacos
+ zcopy_frag_0_metallibmacos string
+ //go:embed zcopy.frag.0.metallibios
+ zcopy_frag_0_metallibios string
+ //go:embed zcopy.frag.0.metallibiossimulator
+ zcopy_frag_0_metallibiossimulator string
+ Shader_copy_vert = shader.Sources{
+ Name: "copy.vert",
+ Inputs: []shader.InputLocation{{Name: "pos", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "uv", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.scale", Type: 0x0, Size: 2, Offset: 0}, {Name: "_block.pos", Type: 0x0, Size: 2, Offset: 8}, {Name: "_block.uvScale", Type: 0x0, Size: 2, Offset: 16}},
+ Size: 24,
+ },
+ }
+ //go:embed zcopy.vert.0.spirv
+ zcopy_vert_0_spirv string
+ //go:embed zcopy.vert.0.glsl100es
+ zcopy_vert_0_glsl100es string
+ //go:embed zcopy.vert.0.glsl150
+ zcopy_vert_0_glsl150 string
+ //go:embed zcopy.vert.0.dxbc
+ zcopy_vert_0_dxbc string
+ //go:embed zcopy.vert.0.metallibmacos
+ zcopy_vert_0_metallibmacos string
+ //go:embed zcopy.vert.0.metallibios
+ zcopy_vert_0_metallibios string
+ //go:embed zcopy.vert.0.metallibiossimulator
+ zcopy_vert_0_metallibiossimulator string
+ Shader_cover_frag = [...]shader.Sources{
+ {
+ Name: "cover.frag",
+ Inputs: []shader.InputLocation{{Name: "vCoverUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "vUV", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_color.color", Type: 0x0, Size: 4, Offset: 112}},
+ Size: 16,
+ },
+ Textures: []shader.TextureBinding{{Name: "cover", Binding: 1}},
+ },
+ {
+ Name: "cover.frag",
+ Inputs: []shader.InputLocation{{Name: "vCoverUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "vUV", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_gradient.color1", Type: 0x0, Size: 4, Offset: 96}, {Name: "_gradient.color2", Type: 0x0, Size: 4, Offset: 112}},
+ Size: 32,
+ },
+ Textures: []shader.TextureBinding{{Name: "cover", Binding: 1}},
+ },
+ {
+ Name: "cover.frag",
+ Inputs: []shader.InputLocation{{Name: "vCoverUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "vUV", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Textures: []shader.TextureBinding{{Name: "tex", Binding: 0}, {Name: "cover", Binding: 1}},
+ },
+ }
+ //go:embed zcover.frag.0.spirv
+ zcover_frag_0_spirv string
+ //go:embed zcover.frag.0.glsl100es
+ zcover_frag_0_glsl100es string
+ //go:embed zcover.frag.0.glsl150
+ zcover_frag_0_glsl150 string
+ //go:embed zcover.frag.0.dxbc
+ zcover_frag_0_dxbc string
+ //go:embed zcover.frag.0.metallibmacos
+ zcover_frag_0_metallibmacos string
+ //go:embed zcover.frag.0.metallibios
+ zcover_frag_0_metallibios string
+ //go:embed zcover.frag.0.metallibiossimulator
+ zcover_frag_0_metallibiossimulator string
+ //go:embed zcover.frag.1.spirv
+ zcover_frag_1_spirv string
+ //go:embed zcover.frag.1.glsl100es
+ zcover_frag_1_glsl100es string
+ //go:embed zcover.frag.1.glsl150
+ zcover_frag_1_glsl150 string
+ //go:embed zcover.frag.1.dxbc
+ zcover_frag_1_dxbc string
+ //go:embed zcover.frag.1.metallibmacos
+ zcover_frag_1_metallibmacos string
+ //go:embed zcover.frag.1.metallibios
+ zcover_frag_1_metallibios string
+ //go:embed zcover.frag.1.metallibiossimulator
+ zcover_frag_1_metallibiossimulator string
+ //go:embed zcover.frag.2.spirv
+ zcover_frag_2_spirv string
+ //go:embed zcover.frag.2.glsl100es
+ zcover_frag_2_glsl100es string
+ //go:embed zcover.frag.2.glsl150
+ zcover_frag_2_glsl150 string
+ //go:embed zcover.frag.2.dxbc
+ zcover_frag_2_dxbc string
+ //go:embed zcover.frag.2.metallibmacos
+ zcover_frag_2_metallibmacos string
+ //go:embed zcover.frag.2.metallibios
+ zcover_frag_2_metallibios string
+ //go:embed zcover.frag.2.metallibiossimulator
+ zcover_frag_2_metallibiossimulator string
+ Shader_cover_vert = shader.Sources{
+ Name: "cover.vert",
+ Inputs: []shader.InputLocation{{Name: "pos", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "uv", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.transform", Type: 0x0, Size: 4, Offset: 0}, {Name: "_block.uvCoverTransform", Type: 0x0, Size: 4, Offset: 16}, {Name: "_block.uvTransformR1", Type: 0x0, Size: 4, Offset: 32}, {Name: "_block.uvTransformR2", Type: 0x0, Size: 4, Offset: 48}},
+ Size: 64,
+ },
+ }
+ //go:embed zcover.vert.0.spirv
+ zcover_vert_0_spirv string
+ //go:embed zcover.vert.0.glsl100es
+ zcover_vert_0_glsl100es string
+ //go:embed zcover.vert.0.glsl150
+ zcover_vert_0_glsl150 string
+ //go:embed zcover.vert.0.dxbc
+ zcover_vert_0_dxbc string
+ //go:embed zcover.vert.0.metallibmacos
+ zcover_vert_0_metallibmacos string
+ //go:embed zcover.vert.0.metallibios
+ zcover_vert_0_metallibios string
+ //go:embed zcover.vert.0.metallibiossimulator
+ zcover_vert_0_metallibiossimulator string
+ Shader_input_vert = shader.Sources{
+ Name: "input.vert",
+ Inputs: []shader.InputLocation{{Name: "position", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 4}},
+ }
+ //go:embed zinput.vert.0.spirv
+ zinput_vert_0_spirv string
+ //go:embed zinput.vert.0.glsl100es
+ zinput_vert_0_glsl100es string
+ //go:embed zinput.vert.0.glsl150
+ zinput_vert_0_glsl150 string
+ //go:embed zinput.vert.0.dxbc
+ zinput_vert_0_dxbc string
+ //go:embed zinput.vert.0.metallibmacos
+ zinput_vert_0_metallibmacos string
+ //go:embed zinput.vert.0.metallibios
+ zinput_vert_0_metallibios string
+ //go:embed zinput.vert.0.metallibiossimulator
+ zinput_vert_0_metallibiossimulator string
+ Shader_intersect_frag = shader.Sources{
+ Name: "intersect.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Textures: []shader.TextureBinding{{Name: "cover", Binding: 0}},
+ }
+ //go:embed zintersect.frag.0.spirv
+ zintersect_frag_0_spirv string
+ //go:embed zintersect.frag.0.glsl100es
+ zintersect_frag_0_glsl100es string
+ //go:embed zintersect.frag.0.glsl150
+ zintersect_frag_0_glsl150 string
+ //go:embed zintersect.frag.0.dxbc
+ zintersect_frag_0_dxbc string
+ //go:embed zintersect.frag.0.metallibmacos
+ zintersect_frag_0_metallibmacos string
+ //go:embed zintersect.frag.0.metallibios
+ zintersect_frag_0_metallibios string
+ //go:embed zintersect.frag.0.metallibiossimulator
+ zintersect_frag_0_metallibiossimulator string
+ Shader_intersect_vert = shader.Sources{
+ Name: "intersect.vert",
+ Inputs: []shader.InputLocation{{Name: "pos", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "uv", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.uvTransform", Type: 0x0, Size: 4, Offset: 0}, {Name: "_block.subUVTransform", Type: 0x0, Size: 4, Offset: 16}},
+ Size: 32,
+ },
+ }
+ //go:embed zintersect.vert.0.spirv
+ zintersect_vert_0_spirv string
+ //go:embed zintersect.vert.0.glsl100es
+ zintersect_vert_0_glsl100es string
+ //go:embed zintersect.vert.0.glsl150
+ zintersect_vert_0_glsl150 string
+ //go:embed zintersect.vert.0.dxbc
+ zintersect_vert_0_dxbc string
+ //go:embed zintersect.vert.0.metallibmacos
+ zintersect_vert_0_metallibmacos string
+ //go:embed zintersect.vert.0.metallibios
+ zintersect_vert_0_metallibios string
+ //go:embed zintersect.vert.0.metallibiossimulator
+ zintersect_vert_0_metallibiossimulator string
+ Shader_material_frag = shader.Sources{
+ Name: "material.frag",
+ Inputs: []shader.InputLocation{{Name: "vUV", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_color.emulateSRGB", Type: 0x0, Size: 1, Offset: 16}},
+ Size: 4,
+ },
+ Textures: []shader.TextureBinding{{Name: "tex", Binding: 0}},
+ }
+ //go:embed zmaterial.frag.0.spirv
+ zmaterial_frag_0_spirv string
+ //go:embed zmaterial.frag.0.glsl100es
+ zmaterial_frag_0_glsl100es string
+ //go:embed zmaterial.frag.0.glsl150
+ zmaterial_frag_0_glsl150 string
+ //go:embed zmaterial.frag.0.dxbc
+ zmaterial_frag_0_dxbc string
+ //go:embed zmaterial.frag.0.metallibmacos
+ zmaterial_frag_0_metallibmacos string
+ //go:embed zmaterial.frag.0.metallibios
+ zmaterial_frag_0_metallibios string
+ //go:embed zmaterial.frag.0.metallibiossimulator
+ zmaterial_frag_0_metallibiossimulator string
+ Shader_material_vert = shader.Sources{
+ Name: "material.vert",
+ Inputs: []shader.InputLocation{{Name: "pos", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "uv", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.scale", Type: 0x0, Size: 2, Offset: 0}, {Name: "_block.pos", Type: 0x0, Size: 2, Offset: 8}},
+ Size: 16,
+ },
+ }
+ //go:embed zmaterial.vert.0.spirv
+ zmaterial_vert_0_spirv string
+ //go:embed zmaterial.vert.0.glsl100es
+ zmaterial_vert_0_glsl100es string
+ //go:embed zmaterial.vert.0.glsl150
+ zmaterial_vert_0_glsl150 string
+ //go:embed zmaterial.vert.0.dxbc
+ zmaterial_vert_0_dxbc string
+ //go:embed zmaterial.vert.0.metallibmacos
+ zmaterial_vert_0_metallibmacos string
+ //go:embed zmaterial.vert.0.metallibios
+ zmaterial_vert_0_metallibios string
+ //go:embed zmaterial.vert.0.metallibiossimulator
+ zmaterial_vert_0_metallibiossimulator string
+ Shader_simple_frag = shader.Sources{
+ Name: "simple.frag",
+ }
+ //go:embed zsimple.frag.0.spirv
+ zsimple_frag_0_spirv string
+ //go:embed zsimple.frag.0.glsl100es
+ zsimple_frag_0_glsl100es string
+ //go:embed zsimple.frag.0.glsl150
+ zsimple_frag_0_glsl150 string
+ //go:embed zsimple.frag.0.dxbc
+ zsimple_frag_0_dxbc string
+ //go:embed zsimple.frag.0.metallibmacos
+ zsimple_frag_0_metallibmacos string
+ //go:embed zsimple.frag.0.metallibios
+ zsimple_frag_0_metallibios string
+ //go:embed zsimple.frag.0.metallibiossimulator
+ zsimple_frag_0_metallibiossimulator string
+ Shader_stencil_frag = shader.Sources{
+ Name: "stencil.frag",
+ Inputs: []shader.InputLocation{{Name: "vFrom", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 2}, {Name: "vCtrl", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 2}, {Name: "vTo", Location: 2, Semantic: "TEXCOORD", SemanticIndex: 2, Type: 0x0, Size: 2}},
+ }
+ //go:embed zstencil.frag.0.spirv
+ zstencil_frag_0_spirv string
+ //go:embed zstencil.frag.0.glsl100es
+ zstencil_frag_0_glsl100es string
+ //go:embed zstencil.frag.0.glsl150
+ zstencil_frag_0_glsl150 string
+ //go:embed zstencil.frag.0.dxbc
+ zstencil_frag_0_dxbc string
+ //go:embed zstencil.frag.0.metallibmacos
+ zstencil_frag_0_metallibmacos string
+ //go:embed zstencil.frag.0.metallibios
+ zstencil_frag_0_metallibios string
+ //go:embed zstencil.frag.0.metallibiossimulator
+ zstencil_frag_0_metallibiossimulator string
+ Shader_stencil_vert = shader.Sources{
+ Name: "stencil.vert",
+ Inputs: []shader.InputLocation{{Name: "corner", Location: 0, Semantic: "TEXCOORD", SemanticIndex: 0, Type: 0x0, Size: 1}, {Name: "maxy", Location: 1, Semantic: "TEXCOORD", SemanticIndex: 1, Type: 0x0, Size: 1}, {Name: "from", Location: 2, Semantic: "TEXCOORD", SemanticIndex: 2, Type: 0x0, Size: 2}, {Name: "ctrl", Location: 3, Semantic: "TEXCOORD", SemanticIndex: 3, Type: 0x0, Size: 2}, {Name: "to", Location: 4, Semantic: "TEXCOORD", SemanticIndex: 4, Type: 0x0, Size: 2}},
+ Uniforms: shader.UniformsReflection{
+ Locations: []shader.UniformLocation{{Name: "_block.transform", Type: 0x0, Size: 4, Offset: 0}, {Name: "_block.pathOffset", Type: 0x0, Size: 2, Offset: 16}},
+ Size: 24,
+ },
+ }
+ //go:embed zstencil.vert.0.spirv
+ zstencil_vert_0_spirv string
+ //go:embed zstencil.vert.0.glsl100es
+ zstencil_vert_0_glsl100es string
+ //go:embed zstencil.vert.0.glsl150
+ zstencil_vert_0_glsl150 string
+ //go:embed zstencil.vert.0.dxbc
+ zstencil_vert_0_dxbc string
+ //go:embed zstencil.vert.0.metallibmacos
+ zstencil_vert_0_metallibmacos string
+ //go:embed zstencil.vert.0.metallibios
+ zstencil_vert_0_metallibios string
+ //go:embed zstencil.vert.0.metallibiossimulator
+ zstencil_vert_0_metallibiossimulator string
+)
+
+func init() {
+ const (
+ opengles = runtime.GOOS == "linux" || runtime.GOOS == "freebsd" || runtime.GOOS == "openbsd" || runtime.GOOS == "windows" || runtime.GOOS == "js" || runtime.GOOS == "android" || runtime.GOOS == "darwin" || runtime.GOOS == "ios"
+ opengl = runtime.GOOS == "darwin"
+ d3d11 = runtime.GOOS == "windows"
+ vulkan = runtime.GOOS == "linux" || runtime.GOOS == "android"
+ )
+ if vulkan {
+ Shader_blit_frag[0].SPIRV = zblit_frag_0_spirv
+ }
+ if opengles {
+ Shader_blit_frag[0].GLSL100ES = zblit_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_blit_frag[0].GLSL150 = zblit_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_blit_frag[0].DXBC = zblit_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_blit_frag[0].MetalLib = zblit_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_blit_frag[0].MetalLib = zblit_frag_0_metallibiossimulator
+ } else {
+ Shader_blit_frag[0].MetalLib = zblit_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_blit_frag[1].SPIRV = zblit_frag_1_spirv
+ }
+ if opengles {
+ Shader_blit_frag[1].GLSL100ES = zblit_frag_1_glsl100es
+ }
+ if opengl {
+ Shader_blit_frag[1].GLSL150 = zblit_frag_1_glsl150
+ }
+ if d3d11 {
+ Shader_blit_frag[1].DXBC = zblit_frag_1_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_blit_frag[1].MetalLib = zblit_frag_1_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_blit_frag[1].MetalLib = zblit_frag_1_metallibiossimulator
+ } else {
+ Shader_blit_frag[1].MetalLib = zblit_frag_1_metallibios
+ }
+ }
+ if vulkan {
+ Shader_blit_frag[2].SPIRV = zblit_frag_2_spirv
+ }
+ if opengles {
+ Shader_blit_frag[2].GLSL100ES = zblit_frag_2_glsl100es
+ }
+ if opengl {
+ Shader_blit_frag[2].GLSL150 = zblit_frag_2_glsl150
+ }
+ if d3d11 {
+ Shader_blit_frag[2].DXBC = zblit_frag_2_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_blit_frag[2].MetalLib = zblit_frag_2_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_blit_frag[2].MetalLib = zblit_frag_2_metallibiossimulator
+ } else {
+ Shader_blit_frag[2].MetalLib = zblit_frag_2_metallibios
+ }
+ }
+ if vulkan {
+ Shader_blit_vert.SPIRV = zblit_vert_0_spirv
+ }
+ if opengles {
+ Shader_blit_vert.GLSL100ES = zblit_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_blit_vert.GLSL150 = zblit_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_blit_vert.DXBC = zblit_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_blit_vert.MetalLib = zblit_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_blit_vert.MetalLib = zblit_vert_0_metallibiossimulator
+ } else {
+ Shader_blit_vert.MetalLib = zblit_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_copy_frag.SPIRV = zcopy_frag_0_spirv
+ }
+ if opengles {
+ Shader_copy_frag.GLSL100ES = zcopy_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_copy_frag.GLSL150 = zcopy_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_copy_frag.DXBC = zcopy_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_copy_frag.MetalLib = zcopy_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_copy_frag.MetalLib = zcopy_frag_0_metallibiossimulator
+ } else {
+ Shader_copy_frag.MetalLib = zcopy_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_copy_vert.SPIRV = zcopy_vert_0_spirv
+ }
+ if opengles {
+ Shader_copy_vert.GLSL100ES = zcopy_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_copy_vert.GLSL150 = zcopy_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_copy_vert.DXBC = zcopy_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_copy_vert.MetalLib = zcopy_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_copy_vert.MetalLib = zcopy_vert_0_metallibiossimulator
+ } else {
+ Shader_copy_vert.MetalLib = zcopy_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_cover_frag[0].SPIRV = zcover_frag_0_spirv
+ }
+ if opengles {
+ Shader_cover_frag[0].GLSL100ES = zcover_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_cover_frag[0].GLSL150 = zcover_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_cover_frag[0].DXBC = zcover_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_cover_frag[0].MetalLib = zcover_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_cover_frag[0].MetalLib = zcover_frag_0_metallibiossimulator
+ } else {
+ Shader_cover_frag[0].MetalLib = zcover_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_cover_frag[1].SPIRV = zcover_frag_1_spirv
+ }
+ if opengles {
+ Shader_cover_frag[1].GLSL100ES = zcover_frag_1_glsl100es
+ }
+ if opengl {
+ Shader_cover_frag[1].GLSL150 = zcover_frag_1_glsl150
+ }
+ if d3d11 {
+ Shader_cover_frag[1].DXBC = zcover_frag_1_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_cover_frag[1].MetalLib = zcover_frag_1_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_cover_frag[1].MetalLib = zcover_frag_1_metallibiossimulator
+ } else {
+ Shader_cover_frag[1].MetalLib = zcover_frag_1_metallibios
+ }
+ }
+ if vulkan {
+ Shader_cover_frag[2].SPIRV = zcover_frag_2_spirv
+ }
+ if opengles {
+ Shader_cover_frag[2].GLSL100ES = zcover_frag_2_glsl100es
+ }
+ if opengl {
+ Shader_cover_frag[2].GLSL150 = zcover_frag_2_glsl150
+ }
+ if d3d11 {
+ Shader_cover_frag[2].DXBC = zcover_frag_2_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_cover_frag[2].MetalLib = zcover_frag_2_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_cover_frag[2].MetalLib = zcover_frag_2_metallibiossimulator
+ } else {
+ Shader_cover_frag[2].MetalLib = zcover_frag_2_metallibios
+ }
+ }
+ if vulkan {
+ Shader_cover_vert.SPIRV = zcover_vert_0_spirv
+ }
+ if opengles {
+ Shader_cover_vert.GLSL100ES = zcover_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_cover_vert.GLSL150 = zcover_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_cover_vert.DXBC = zcover_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_cover_vert.MetalLib = zcover_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_cover_vert.MetalLib = zcover_vert_0_metallibiossimulator
+ } else {
+ Shader_cover_vert.MetalLib = zcover_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_input_vert.SPIRV = zinput_vert_0_spirv
+ }
+ if opengles {
+ Shader_input_vert.GLSL100ES = zinput_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_input_vert.GLSL150 = zinput_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_input_vert.DXBC = zinput_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_input_vert.MetalLib = zinput_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_input_vert.MetalLib = zinput_vert_0_metallibiossimulator
+ } else {
+ Shader_input_vert.MetalLib = zinput_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_intersect_frag.SPIRV = zintersect_frag_0_spirv
+ }
+ if opengles {
+ Shader_intersect_frag.GLSL100ES = zintersect_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_intersect_frag.GLSL150 = zintersect_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_intersect_frag.DXBC = zintersect_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_intersect_frag.MetalLib = zintersect_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_intersect_frag.MetalLib = zintersect_frag_0_metallibiossimulator
+ } else {
+ Shader_intersect_frag.MetalLib = zintersect_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_intersect_vert.SPIRV = zintersect_vert_0_spirv
+ }
+ if opengles {
+ Shader_intersect_vert.GLSL100ES = zintersect_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_intersect_vert.GLSL150 = zintersect_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_intersect_vert.DXBC = zintersect_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_intersect_vert.MetalLib = zintersect_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_intersect_vert.MetalLib = zintersect_vert_0_metallibiossimulator
+ } else {
+ Shader_intersect_vert.MetalLib = zintersect_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_material_frag.SPIRV = zmaterial_frag_0_spirv
+ }
+ if opengles {
+ Shader_material_frag.GLSL100ES = zmaterial_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_material_frag.GLSL150 = zmaterial_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_material_frag.DXBC = zmaterial_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_material_frag.MetalLib = zmaterial_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_material_frag.MetalLib = zmaterial_frag_0_metallibiossimulator
+ } else {
+ Shader_material_frag.MetalLib = zmaterial_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_material_vert.SPIRV = zmaterial_vert_0_spirv
+ }
+ if opengles {
+ Shader_material_vert.GLSL100ES = zmaterial_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_material_vert.GLSL150 = zmaterial_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_material_vert.DXBC = zmaterial_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_material_vert.MetalLib = zmaterial_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_material_vert.MetalLib = zmaterial_vert_0_metallibiossimulator
+ } else {
+ Shader_material_vert.MetalLib = zmaterial_vert_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_simple_frag.SPIRV = zsimple_frag_0_spirv
+ }
+ if opengles {
+ Shader_simple_frag.GLSL100ES = zsimple_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_simple_frag.GLSL150 = zsimple_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_simple_frag.DXBC = zsimple_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_simple_frag.MetalLib = zsimple_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_simple_frag.MetalLib = zsimple_frag_0_metallibiossimulator
+ } else {
+ Shader_simple_frag.MetalLib = zsimple_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_stencil_frag.SPIRV = zstencil_frag_0_spirv
+ }
+ if opengles {
+ Shader_stencil_frag.GLSL100ES = zstencil_frag_0_glsl100es
+ }
+ if opengl {
+ Shader_stencil_frag.GLSL150 = zstencil_frag_0_glsl150
+ }
+ if d3d11 {
+ Shader_stencil_frag.DXBC = zstencil_frag_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_stencil_frag.MetalLib = zstencil_frag_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_stencil_frag.MetalLib = zstencil_frag_0_metallibiossimulator
+ } else {
+ Shader_stencil_frag.MetalLib = zstencil_frag_0_metallibios
+ }
+ }
+ if vulkan {
+ Shader_stencil_vert.SPIRV = zstencil_vert_0_spirv
+ }
+ if opengles {
+ Shader_stencil_vert.GLSL100ES = zstencil_vert_0_glsl100es
+ }
+ if opengl {
+ Shader_stencil_vert.GLSL150 = zstencil_vert_0_glsl150
+ }
+ if d3d11 {
+ Shader_stencil_vert.DXBC = zstencil_vert_0_dxbc
+ }
+ if runtime.GOOS == "darwin" {
+ Shader_stencil_vert.MetalLib = zstencil_vert_0_metallibmacos
+ }
+ if runtime.GOOS == "ios" {
+ if runtime.GOARCH == "amd64" {
+ Shader_stencil_vert.MetalLib = zstencil_vert_0_metallibiossimulator
+ } else {
+ Shader_stencil_vert.MetalLib = zstencil_vert_0_metallibios
+ }
+ }
+}
diff --git a/vendor/gioui.org/shader/gio/simple.frag b/vendor/gioui.org/shader/gio/simple.frag
new file mode 100644
index 0000000..4614f33
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/simple.frag
@@ -0,0 +1,11 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(location = 0) out vec4 fragColor;
+
+void main() {
+ fragColor = vec4(.25, .55, .75, 1.0);
+}
diff --git a/vendor/gioui.org/shader/gio/stencil.frag b/vendor/gioui.org/shader/gio/stencil.frag
new file mode 100644
index 0000000..956dae8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/stencil.frag
@@ -0,0 +1,81 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+precision mediump float;
+
+layout(location=0) in highp vec2 vFrom;
+layout(location=1) in highp vec2 vCtrl;
+layout(location=2) in highp vec2 vTo;
+
+layout(location = 0) out vec4 fragCover;
+
+void main() {
+ float dx = vTo.x - vFrom.x;
+ // Sort from and to in increasing order so the root below
+ // is always the positive square root, if any.
+ // We need the direction of the curve below, so this can't be
+ // done from the vertex shader.
+ bool increasing = vTo.x >= vFrom.x;
+ vec2 left = increasing ? vFrom : vTo;
+ vec2 right = increasing ? vTo : vFrom;
+
+ // The signed horizontal extent of the fragment.
+ vec2 extent = clamp(vec2(vFrom.x, vTo.x), -0.5, 0.5);
+ // Find the t where the curve crosses the middle of the
+ // extent, x₀.
+ // Given the Bézier curve with x coordinates P₀, P₁, P₂
+ // where P₀ is at the origin, its x coordinate in t
+ // is given by:
+ //
+ // x(t) = 2(1-t)tP₁ + t²P₂
+ //
+ // Rearranging:
+ //
+ // x(t) = (P₂ - 2P₁)t² + 2P₁t
+ //
+ // Setting x(t) = x₀ and using Muller's quadratic formula ("Citardauq")
+ // for robustnesss,
+ //
+ // t = 2x₀/(2P₁±√(4P₁²+4(P₂-2P₁)x₀))
+ //
+ // which simplifies to
+ //
+ // t = x₀/(P₁±√(P₁²+(P₂-2P₁)x₀))
+ //
+ // Setting v = P₂-P₁,
+ //
+ // t = x₀/(P₁±√(P₁²+(v-P₁)x₀))
+ //
+ // t lie in [0; 1]; P₂ ≥ P₁ and P₁ ≥ 0 since we split curves where
+ // the control point lies before the start point or after the end point.
+ // It can then be shown that only the positive square root is valid.
+ float midx = mix(extent.x, extent.y, 0.5);
+ float x0 = midx - left.x;
+ vec2 p1 = vCtrl - left;
+ vec2 v = right - vCtrl;
+ float t = x0/(p1.x+sqrt(p1.x*p1.x+(v.x-p1.x)*x0));
+ // Find y(t) on the curve.
+ float y = mix(mix(left.y, vCtrl.y, t), mix(vCtrl.y, right.y, t), t);
+ // And the slope.
+ vec2 d_half = mix(p1, v, t);
+ float dy = d_half.y/d_half.x;
+ // Together, y and dy form a line approximation.
+
+ // Compute the fragment area above the line.
+ // The area is symmetric around dy = 0. Scale slope with extent width.
+ float width = extent.y - extent.x;
+ dy = abs(dy*width);
+
+ vec4 sides = vec4(dy*+0.5 + y, dy*-0.5 + y, (+0.5-y)/dy, (-0.5-y)/dy);
+ sides = clamp(sides+0.5, 0.0, 1.0);
+
+ float area = 0.5*(sides.z - sides.z*sides.y + 1.0 - sides.x+sides.x*sides.w);
+ area *= width;
+
+ // Work around issue #13.
+ if (width == 0.0)
+ area = 0.0;
+
+ fragCover.r = area;
+}
diff --git a/vendor/gioui.org/shader/gio/stencil.vert b/vendor/gioui.org/shader/gio/stencil.vert
new file mode 100644
index 0000000..fd6f28b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/stencil.vert
@@ -0,0 +1,57 @@
+#version 310 es
+
+// SPDX-License-Identifier: Unlicense OR MIT
+
+#extension GL_GOOGLE_include_directive : enable
+
+precision highp float;
+
+#include "common.h"
+
+layout(push_constant) uniform Block {
+ vec4 transform;
+ vec2 pathOffset;
+} _block;
+
+layout(location=0) in float corner;
+layout(location=1) in float maxy;
+layout(location=2) in vec2 from;
+layout(location=3) in vec2 ctrl;
+layout(location=4) in vec2 to;
+
+layout(location=0) out vec2 vFrom;
+layout(location=1) out vec2 vCtrl;
+layout(location=2) out vec2 vTo;
+
+void main() {
+ // Add a one pixel overlap so curve quads cover their
+ // entire curves. Could use conservative rasterization
+ // if available.
+ vec2 from = from + _block.pathOffset;
+ vec2 ctrl = ctrl + _block.pathOffset;
+ vec2 to = to + _block.pathOffset;
+ float maxy = maxy + _block.pathOffset.y;
+ vec2 pos;
+ float c = corner;
+ if (c >= 0.375) {
+ // North.
+ c -= 0.5;
+ pos.y = maxy + 1.0;
+ } else {
+ // South.
+ pos.y = min(min(from.y, ctrl.y), to.y) - 1.0;
+ }
+ if (c >= 0.125) {
+ // East.
+ pos.x = max(max(from.x, ctrl.x), to.x)+1.0;
+ } else {
+ // West.
+ pos.x = min(min(from.x, ctrl.x), to.x)-1.0;
+ }
+ vFrom = from-pos;
+ vCtrl = ctrl-pos;
+ vTo = to-pos;
+ pos = pos*_block.transform.xy + _block.transform.zw;
+ gl_Position = vec4(transform3x2(fboTransform, vec3(pos, 0)), 1);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.dxbc b/vendor/gioui.org/shader/gio/zblit.frag.0.dxbc
new file mode 100644
index 0000000..45e8355
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zblit.frag.0.glsl100es
new file mode 100644
index 0000000..d7ca41a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.glsl100es
@@ -0,0 +1,18 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+struct Color
+{
+ vec4 color;
+};
+
+uniform Color _color;
+
+varying highp vec2 vUV;
+
+void main()
+{
+ gl_FragData[0] = _color.color;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zblit.frag.0.glsl150
new file mode 100644
index 0000000..9559c85
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.glsl150
@@ -0,0 +1,17 @@
+#version 150
+
+struct Color
+{
+ vec4 color;
+};
+
+uniform Color _color;
+
+out vec4 fragColor;
+in vec2 vUV;
+
+void main()
+{
+ fragColor = _color.color;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.metallibios b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibios
new file mode 100644
index 0000000..63e606f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibiossimulator
new file mode 100644
index 0000000..d8d2589
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibmacos
new file mode 100644
index 0000000..85946aa
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.0.spirv b/vendor/gioui.org/shader/gio/zblit.frag.0.spirv
new file mode 100644
index 0000000..c2a88d2
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.dxbc b/vendor/gioui.org/shader/gio/zblit.frag.1.dxbc
new file mode 100644
index 0000000..ddb8dad
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.glsl100es b/vendor/gioui.org/shader/gio/zblit.frag.1.glsl100es
new file mode 100644
index 0000000..ccc6d2a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.glsl100es
@@ -0,0 +1,19 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+struct Gradient
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+uniform Gradient _gradient;
+
+varying highp vec2 vUV;
+
+void main()
+{
+ gl_FragData[0] = mix(_gradient.color1, _gradient.color2, vec4(clamp(vUV.x, 0.0, 1.0)));
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.glsl150 b/vendor/gioui.org/shader/gio/zblit.frag.1.glsl150
new file mode 100644
index 0000000..a55f29f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.glsl150
@@ -0,0 +1,18 @@
+#version 150
+
+struct Gradient
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+uniform Gradient _gradient;
+
+out vec4 fragColor;
+in vec2 vUV;
+
+void main()
+{
+ fragColor = mix(_gradient.color1, _gradient.color2, vec4(clamp(vUV.x, 0.0, 1.0)));
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.metallibios b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibios
new file mode 100644
index 0000000..680c495
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.metallibiossimulator b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibiossimulator
new file mode 100644
index 0000000..ef5ac86
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.metallibmacos b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibmacos
new file mode 100644
index 0000000..5fbd2c2
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.1.spirv b/vendor/gioui.org/shader/gio/zblit.frag.1.spirv
new file mode 100644
index 0000000..88128fc
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.1.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.dxbc b/vendor/gioui.org/shader/gio/zblit.frag.2.dxbc
new file mode 100644
index 0000000..fd95db8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.glsl100es b/vendor/gioui.org/shader/gio/zblit.frag.2.glsl100es
new file mode 100644
index 0000000..5c2d832
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.glsl100es
@@ -0,0 +1,13 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+uniform mediump sampler2D tex;
+
+varying highp vec2 vUV;
+
+void main()
+{
+ gl_FragData[0] = texture2D(tex, vUV);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.glsl150 b/vendor/gioui.org/shader/gio/zblit.frag.2.glsl150
new file mode 100644
index 0000000..f5df869
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.glsl150
@@ -0,0 +1,12 @@
+#version 150
+
+uniform sampler2D tex;
+
+out vec4 fragColor;
+in vec2 vUV;
+
+void main()
+{
+ fragColor = texture(tex, vUV);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.metallibios b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibios
new file mode 100644
index 0000000..c4eb922
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.metallibiossimulator b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibiossimulator
new file mode 100644
index 0000000..81f7aa3
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.metallibmacos b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibmacos
new file mode 100644
index 0000000..70b3da8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.frag.2.spirv b/vendor/gioui.org/shader/gio/zblit.frag.2.spirv
new file mode 100644
index 0000000..efa380b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.frag.2.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.dxbc b/vendor/gioui.org/shader/gio/zblit.vert.0.dxbc
new file mode 100644
index 0000000..5ad9601
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zblit.vert.0.glsl100es
new file mode 100644
index 0000000..61dee04
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.glsl100es
@@ -0,0 +1,37 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+};
+
+uniform Block _block;
+
+attribute vec2 pos;
+varying vec2 vUV;
+attribute vec2 uv;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 p = (pos * _block.transform.xy) + _block.transform.zw;
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+ m3x2 param_2 = m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz);
+ vec3 param_3 = vec3(uv, 1.0);
+ vUV = transform3x2(param_2, param_3).xy;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zblit.vert.0.glsl150
new file mode 100644
index 0000000..eba9f1a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.glsl150
@@ -0,0 +1,37 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+};
+
+uniform Block _block;
+
+in vec2 pos;
+out vec2 vUV;
+in vec2 uv;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 p = (pos * _block.transform.xy) + _block.transform.zw;
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+ m3x2 param_2 = m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz);
+ vec3 param_3 = vec3(uv, 1.0);
+ vUV = transform3x2(param_2, param_3).xy;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.metallibios b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibios
new file mode 100644
index 0000000..2450ec9
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibiossimulator
new file mode 100644
index 0000000..6b4960b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibmacos
new file mode 100644
index 0000000..d902b36
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zblit.vert.0.spirv b/vendor/gioui.org/shader/gio/zblit.vert.0.spirv
new file mode 100644
index 0000000..4f762bb
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zblit.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.dxbc b/vendor/gioui.org/shader/gio/zcopy.frag.0.dxbc
new file mode 100644
index 0000000..a521803
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl100es
new file mode 100644
index 0000000..b2dd95a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl100es
@@ -0,0 +1,27 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+uniform mediump sampler2D tex;
+
+varying highp vec2 vUV;
+
+vec3 sRGBtoRGB(vec3 rgb)
+{
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.040449999272823333740234375));
+ vec3 below = rgb / vec3(12.9200000762939453125);
+ vec3 above = pow((rgb + vec3(0.054999999701976776123046875)) / vec3(1.05499994754791259765625), vec3(2.400000095367431640625));
+ return vec3(cutoff.x ? above.x : below.x, cutoff.y ? above.y : below.y, cutoff.z ? above.z : below.z);
+}
+
+void main()
+{
+ vec4 texel = texture2D(tex, vUV);
+ vec3 param = texel.xyz;
+ vec3 _59 = sRGBtoRGB(param);
+ texel.x = _59.x;
+ texel.y = _59.y;
+ texel.z = _59.z;
+ gl_FragData[0] = texel;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl150
new file mode 100644
index 0000000..799add1
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.glsl150
@@ -0,0 +1,26 @@
+#version 150
+
+uniform sampler2D tex;
+
+in vec2 vUV;
+out vec4 fragColor;
+
+vec3 sRGBtoRGB(vec3 rgb)
+{
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.040449999272823333740234375));
+ vec3 below = rgb / vec3(12.9200000762939453125);
+ vec3 above = pow((rgb + vec3(0.054999999701976776123046875)) / vec3(1.05499994754791259765625), vec3(2.400000095367431640625));
+ return vec3(cutoff.x ? above.x : below.x, cutoff.y ? above.y : below.y, cutoff.z ? above.z : below.z);
+}
+
+void main()
+{
+ vec4 texel = texture(tex, vUV);
+ vec3 param = texel.xyz;
+ vec3 _59 = sRGBtoRGB(param);
+ texel.x = _59.x;
+ texel.y = _59.y;
+ texel.z = _59.z;
+ fragColor = texel;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibios b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibios
new file mode 100644
index 0000000..f143069
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibiossimulator
new file mode 100644
index 0000000..8fe4c74
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibmacos
new file mode 100644
index 0000000..2e43803
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.frag.0.spirv b/vendor/gioui.org/shader/gio/zcopy.frag.0.spirv
new file mode 100644
index 0000000..3299552
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.dxbc b/vendor/gioui.org/shader/gio/zcopy.vert.0.dxbc
new file mode 100644
index 0000000..acce7ab
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl100es
new file mode 100644
index 0000000..ff0be47
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl100es
@@ -0,0 +1,35 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec2 scale;
+ vec2 pos;
+ vec2 uvScale;
+};
+
+uniform Block _block;
+
+varying vec2 vUV;
+attribute vec2 uv;
+attribute vec2 pos;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vUV = vec2(uv * _block.uvScale);
+ vec2 p = vec2((pos * _block.scale) + _block.pos);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl150
new file mode 100644
index 0000000..036cd39
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.glsl150
@@ -0,0 +1,35 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec2 scale;
+ vec2 pos;
+ vec2 uvScale;
+};
+
+uniform Block _block;
+
+out vec2 vUV;
+in vec2 uv;
+in vec2 pos;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vUV = vec2(uv * _block.uvScale);
+ vec2 p = vec2((pos * _block.scale) + _block.pos);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibios b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibios
new file mode 100644
index 0000000..25f5e56
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibiossimulator
new file mode 100644
index 0000000..f696caf
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibmacos
new file mode 100644
index 0000000..d4a5777
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcopy.vert.0.spirv b/vendor/gioui.org/shader/gio/zcopy.vert.0.spirv
new file mode 100644
index 0000000..7251754
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcopy.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.dxbc b/vendor/gioui.org/shader/gio/zcover.frag.0.dxbc
new file mode 100644
index 0000000..8b77ae4
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zcover.frag.0.glsl100es
new file mode 100644
index 0000000..2399901
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.glsl100es
@@ -0,0 +1,23 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+struct Color
+{
+ vec4 color;
+};
+
+uniform Color _color;
+
+uniform mediump sampler2D cover;
+
+varying highp vec2 vCoverUV;
+varying highp vec2 vUV;
+
+void main()
+{
+ gl_FragData[0] = _color.color;
+ float c = min(abs(texture2D(cover, vCoverUV).x), 1.0);
+ gl_FragData[0] *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zcover.frag.0.glsl150
new file mode 100644
index 0000000..ce1beaa
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.glsl150
@@ -0,0 +1,22 @@
+#version 150
+
+struct Color
+{
+ vec4 color;
+};
+
+uniform Color _color;
+
+uniform sampler2D cover;
+
+out vec4 fragColor;
+in vec2 vCoverUV;
+in vec2 vUV;
+
+void main()
+{
+ fragColor = _color.color;
+ float c = min(abs(texture(cover, vCoverUV).x), 1.0);
+ fragColor *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.metallibios b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibios
new file mode 100644
index 0000000..22256c8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibiossimulator
new file mode 100644
index 0000000..c8040ad
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibmacos
new file mode 100644
index 0000000..fe25160
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.0.spirv b/vendor/gioui.org/shader/gio/zcover.frag.0.spirv
new file mode 100644
index 0000000..2061ff1
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.dxbc b/vendor/gioui.org/shader/gio/zcover.frag.1.dxbc
new file mode 100644
index 0000000..c9a44cf
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.glsl100es b/vendor/gioui.org/shader/gio/zcover.frag.1.glsl100es
new file mode 100644
index 0000000..01cc88e
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.glsl100es
@@ -0,0 +1,24 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+struct Gradient
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+uniform Gradient _gradient;
+
+uniform mediump sampler2D cover;
+
+varying highp vec2 vUV;
+varying highp vec2 vCoverUV;
+
+void main()
+{
+ gl_FragData[0] = mix(_gradient.color1, _gradient.color2, vec4(clamp(vUV.x, 0.0, 1.0)));
+ float c = min(abs(texture2D(cover, vCoverUV).x), 1.0);
+ gl_FragData[0] *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.glsl150 b/vendor/gioui.org/shader/gio/zcover.frag.1.glsl150
new file mode 100644
index 0000000..3f832c3
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.glsl150
@@ -0,0 +1,23 @@
+#version 150
+
+struct Gradient
+{
+ vec4 color1;
+ vec4 color2;
+};
+
+uniform Gradient _gradient;
+
+uniform sampler2D cover;
+
+out vec4 fragColor;
+in vec2 vUV;
+in vec2 vCoverUV;
+
+void main()
+{
+ fragColor = mix(_gradient.color1, _gradient.color2, vec4(clamp(vUV.x, 0.0, 1.0)));
+ float c = min(abs(texture(cover, vCoverUV).x), 1.0);
+ fragColor *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.metallibios b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibios
new file mode 100644
index 0000000..228996a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.metallibiossimulator b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibiossimulator
new file mode 100644
index 0000000..1c99553
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.metallibmacos b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibmacos
new file mode 100644
index 0000000..889e249
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.1.spirv b/vendor/gioui.org/shader/gio/zcover.frag.1.spirv
new file mode 100644
index 0000000..4c48d20
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.1.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.dxbc b/vendor/gioui.org/shader/gio/zcover.frag.2.dxbc
new file mode 100644
index 0000000..d8c6a80
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.glsl100es b/vendor/gioui.org/shader/gio/zcover.frag.2.glsl100es
new file mode 100644
index 0000000..7cfde4b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.glsl100es
@@ -0,0 +1,17 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+uniform mediump sampler2D tex;
+uniform mediump sampler2D cover;
+
+varying highp vec2 vUV;
+varying highp vec2 vCoverUV;
+
+void main()
+{
+ gl_FragData[0] = texture2D(tex, vUV);
+ float c = min(abs(texture2D(cover, vCoverUV).x), 1.0);
+ gl_FragData[0] *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.glsl150 b/vendor/gioui.org/shader/gio/zcover.frag.2.glsl150
new file mode 100644
index 0000000..939baee
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.glsl150
@@ -0,0 +1,16 @@
+#version 150
+
+uniform sampler2D tex;
+uniform sampler2D cover;
+
+out vec4 fragColor;
+in vec2 vUV;
+in vec2 vCoverUV;
+
+void main()
+{
+ fragColor = texture(tex, vUV);
+ float c = min(abs(texture(cover, vCoverUV).x), 1.0);
+ fragColor *= c;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.metallibios b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibios
new file mode 100644
index 0000000..6eba400
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.metallibiossimulator b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibiossimulator
new file mode 100644
index 0000000..09ddb1f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.metallibmacos b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibmacos
new file mode 100644
index 0000000..3ba9105
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.frag.2.spirv b/vendor/gioui.org/shader/gio/zcover.frag.2.spirv
new file mode 100644
index 0000000..cd618ce
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.frag.2.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.dxbc b/vendor/gioui.org/shader/gio/zcover.vert.0.dxbc
new file mode 100644
index 0000000..3b6cf6b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zcover.vert.0.glsl100es
new file mode 100644
index 0000000..423ca60
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.glsl100es
@@ -0,0 +1,41 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec4 uvCoverTransform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+};
+
+uniform Block _block;
+
+attribute vec2 pos;
+varying vec2 vUV;
+attribute vec2 uv;
+varying vec2 vCoverUV;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 p = vec2((pos * _block.transform.xy) + _block.transform.zw);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+ m3x2 param_2 = m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz);
+ vec3 param_3 = vec3(uv, 1.0);
+ vUV = transform3x2(param_2, param_3).xy;
+ vec3 uv3 = vec3(uv, 1.0);
+ vCoverUV = ((uv3 * vec3(_block.uvCoverTransform.xy, 1.0)) + vec3(_block.uvCoverTransform.zw, 0.0)).xy;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zcover.vert.0.glsl150
new file mode 100644
index 0000000..a5005d6
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.glsl150
@@ -0,0 +1,41 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec4 uvCoverTransform;
+ vec4 uvTransformR1;
+ vec4 uvTransformR2;
+};
+
+uniform Block _block;
+
+in vec2 pos;
+out vec2 vUV;
+in vec2 uv;
+out vec2 vCoverUV;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 p = vec2((pos * _block.transform.xy) + _block.transform.zw);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+ m3x2 param_2 = m3x2(_block.uvTransformR1.xyz, _block.uvTransformR2.xyz);
+ vec3 param_3 = vec3(uv, 1.0);
+ vUV = transform3x2(param_2, param_3).xy;
+ vec3 uv3 = vec3(uv, 1.0);
+ vCoverUV = ((uv3 * vec3(_block.uvCoverTransform.xy, 1.0)) + vec3(_block.uvCoverTransform.zw, 0.0)).xy;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.metallibios b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibios
new file mode 100644
index 0000000..335704b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibiossimulator
new file mode 100644
index 0000000..96470cd
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibmacos
new file mode 100644
index 0000000..629e82b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zcover.vert.0.spirv b/vendor/gioui.org/shader/gio/zcover.vert.0.spirv
new file mode 100644
index 0000000..f9af8ab
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zcover.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.dxbc b/vendor/gioui.org/shader/gio/zinput.vert.0.dxbc
new file mode 100644
index 0000000..096bd01
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zinput.vert.0.glsl100es
new file mode 100644
index 0000000..d1d4c8d
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.glsl100es
@@ -0,0 +1,22 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+attribute vec4 position;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = position.xyz;
+ gl_Position = vec4(transform3x2(param, param_1), position.w);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zinput.vert.0.glsl150
new file mode 100644
index 0000000..ab28308
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.glsl150
@@ -0,0 +1,22 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+in vec4 position;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, -1.0, 0.0));
+ vec3 param_1 = position.xyz;
+ gl_Position = vec4(transform3x2(param, param_1), position.w);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.metallibios b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibios
new file mode 100644
index 0000000..6fdc427
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibiossimulator
new file mode 100644
index 0000000..da28890
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibmacos
new file mode 100644
index 0000000..064c501
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zinput.vert.0.spirv b/vendor/gioui.org/shader/gio/zinput.vert.0.spirv
new file mode 100644
index 0000000..eb999e5
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zinput.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.dxbc b/vendor/gioui.org/shader/gio/zintersect.frag.0.dxbc
new file mode 100644
index 0000000..f2081ee
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl100es
new file mode 100644
index 0000000..90fe2f9
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl100es
@@ -0,0 +1,13 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+uniform mediump sampler2D cover;
+
+varying highp vec2 vUV;
+
+void main()
+{
+ gl_FragData[0].x = abs(texture2D(cover, vUV).x);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl150
new file mode 100644
index 0000000..f574aae
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.glsl150
@@ -0,0 +1,12 @@
+#version 150
+
+uniform sampler2D cover;
+
+out vec4 fragColor;
+in vec2 vUV;
+
+void main()
+{
+ fragColor.x = abs(texture(cover, vUV).x);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibios b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibios
new file mode 100644
index 0000000..f48da4e
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibiossimulator
new file mode 100644
index 0000000..b1a40c4
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibmacos
new file mode 100644
index 0000000..f16d190
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.frag.0.spirv b/vendor/gioui.org/shader/gio/zintersect.frag.0.spirv
new file mode 100644
index 0000000..6c28644
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.dxbc b/vendor/gioui.org/shader/gio/zintersect.vert.0.dxbc
new file mode 100644
index 0000000..03005ea
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl100es
new file mode 100644
index 0000000..4441763
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl100es
@@ -0,0 +1,35 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 uvTransform;
+ vec4 subUVTransform;
+};
+
+uniform Block _block;
+
+attribute vec2 pos;
+varying vec2 vUV;
+attribute vec2 uv;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(pos, 1.0);
+ vec3 p = transform3x2(param, param_1);
+ gl_Position = vec4(p, 1.0);
+ vUV = (uv * _block.subUVTransform.xy) + _block.subUVTransform.zw;
+ vUV = (vUV * _block.uvTransform.xy) + _block.uvTransform.zw;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl150
new file mode 100644
index 0000000..656b4c9
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.glsl150
@@ -0,0 +1,35 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 uvTransform;
+ vec4 subUVTransform;
+};
+
+uniform Block _block;
+
+in vec2 pos;
+out vec2 vUV;
+in vec2 uv;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(pos, 1.0);
+ vec3 p = transform3x2(param, param_1);
+ gl_Position = vec4(p, 1.0);
+ vUV = (uv * _block.subUVTransform.xy) + _block.subUVTransform.zw;
+ vUV = (vUV * _block.uvTransform.xy) + _block.uvTransform.zw;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibios b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibios
new file mode 100644
index 0000000..975fbb8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibiossimulator
new file mode 100644
index 0000000..682bad1
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibmacos
new file mode 100644
index 0000000..a43236d
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zintersect.vert.0.spirv b/vendor/gioui.org/shader/gio/zintersect.vert.0.spirv
new file mode 100644
index 0000000..13e7335
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zintersect.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.dxbc b/vendor/gioui.org/shader/gio/zmaterial.frag.0.dxbc
new file mode 100644
index 0000000..e250378
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl100es
new file mode 100644
index 0000000..f2f2a30
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl100es
@@ -0,0 +1,37 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+struct Color
+{
+ float emulateSRGB;
+};
+
+uniform Color _color;
+
+uniform mediump sampler2D tex;
+
+varying highp vec2 vUV;
+
+vec3 RGBtosRGB(vec3 rgb)
+{
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.003130800090730190277099609375));
+ vec3 below = vec3(12.9200000762939453125) * rgb;
+ vec3 above = (vec3(1.05499994754791259765625) * pow(rgb, vec3(0.416660010814666748046875))) - vec3(0.054999999701976776123046875);
+ return vec3(cutoff.x ? above.x : below.x, cutoff.y ? above.y : below.y, cutoff.z ? above.z : below.z);
+}
+
+void main()
+{
+ vec4 texel = texture2D(tex, vUV);
+ if (_color.emulateSRGB == 0.0)
+ {
+ vec3 param = texel.xyz;
+ vec3 _71 = RGBtosRGB(param);
+ texel.x = _71.x;
+ texel.y = _71.y;
+ texel.z = _71.z;
+ }
+ gl_FragData[0] = texel;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl150
new file mode 100644
index 0000000..6b8bed3
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.glsl150
@@ -0,0 +1,36 @@
+#version 150
+
+struct Color
+{
+ float emulateSRGB;
+};
+
+uniform Color _color;
+
+uniform sampler2D tex;
+
+in vec2 vUV;
+out vec4 fragColor;
+
+vec3 RGBtosRGB(vec3 rgb)
+{
+ bvec3 cutoff = greaterThanEqual(rgb, vec3(0.003130800090730190277099609375));
+ vec3 below = vec3(12.9200000762939453125) * rgb;
+ vec3 above = (vec3(1.05499994754791259765625) * pow(rgb, vec3(0.416660010814666748046875))) - vec3(0.054999999701976776123046875);
+ return vec3(cutoff.x ? above.x : below.x, cutoff.y ? above.y : below.y, cutoff.z ? above.z : below.z);
+}
+
+void main()
+{
+ vec4 texel = texture(tex, vUV);
+ if (_color.emulateSRGB == 0.0)
+ {
+ vec3 param = texel.xyz;
+ vec3 _71 = RGBtosRGB(param);
+ texel.x = _71.x;
+ texel.y = _71.y;
+ texel.z = _71.z;
+ }
+ fragColor = texel;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibios b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibios
new file mode 100644
index 0000000..8679f2a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibiossimulator
new file mode 100644
index 0000000..6306d9a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibmacos
new file mode 100644
index 0000000..911948e
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.frag.0.spirv b/vendor/gioui.org/shader/gio/zmaterial.frag.0.spirv
new file mode 100644
index 0000000..475cfb8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.dxbc b/vendor/gioui.org/shader/gio/zmaterial.vert.0.dxbc
new file mode 100644
index 0000000..a5056cc
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl100es
new file mode 100644
index 0000000..39a7b50
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl100es
@@ -0,0 +1,34 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec2 scale;
+ vec2 pos;
+};
+
+uniform Block _block;
+
+varying vec2 vUV;
+attribute vec2 uv;
+attribute vec2 pos;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vUV = uv;
+ vec2 p = vec2((pos * _block.scale) + _block.pos);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl150
new file mode 100644
index 0000000..be02b44
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.glsl150
@@ -0,0 +1,34 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec2 scale;
+ vec2 pos;
+};
+
+uniform Block _block;
+
+out vec2 vUV;
+in vec2 uv;
+in vec2 pos;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vUV = uv;
+ vec2 p = vec2((pos * _block.scale) + _block.pos);
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(p, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibios b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibios
new file mode 100644
index 0000000..19cf6d8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibiossimulator
new file mode 100644
index 0000000..c710ca9
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibmacos
new file mode 100644
index 0000000..cfbdfbc
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zmaterial.vert.0.spirv b/vendor/gioui.org/shader/gio/zmaterial.vert.0.spirv
new file mode 100644
index 0000000..18e731f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zmaterial.vert.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.dxbc b/vendor/gioui.org/shader/gio/zsimple.frag.0.dxbc
new file mode 100644
index 0000000..f4f8894
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl100es
new file mode 100644
index 0000000..0f86af5
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl100es
@@ -0,0 +1,9 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+void main()
+{
+ gl_FragData[0] = vec4(0.25, 0.550000011920928955078125, 0.75, 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl150
new file mode 100644
index 0000000..db4c060
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.glsl150
@@ -0,0 +1,9 @@
+#version 150
+
+out vec4 fragColor;
+
+void main()
+{
+ fragColor = vec4(0.25, 0.550000011920928955078125, 0.75, 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibios b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibios
new file mode 100644
index 0000000..05e6329
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibiossimulator
new file mode 100644
index 0000000..2c87af9
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibmacos
new file mode 100644
index 0000000..407d7ea
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zsimple.frag.0.spirv b/vendor/gioui.org/shader/gio/zsimple.frag.0.spirv
new file mode 100644
index 0000000..2b2aba3
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zsimple.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.dxbc b/vendor/gioui.org/shader/gio/zstencil.frag.0.dxbc
new file mode 100644
index 0000000..ded34dc
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl100es b/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl100es
new file mode 100644
index 0000000..15530e3
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl100es
@@ -0,0 +1,38 @@
+#version 100
+precision mediump float;
+precision highp int;
+
+varying highp vec2 vTo;
+varying highp vec2 vFrom;
+varying highp vec2 vCtrl;
+
+void main()
+{
+ float dx = vTo.x - vFrom.x;
+ bool increasing = vTo.x >= vFrom.x;
+ bvec2 _35 = bvec2(increasing);
+ vec2 left = vec2(_35.x ? vFrom.x : vTo.x, _35.y ? vFrom.y : vTo.y);
+ bvec2 _41 = bvec2(increasing);
+ vec2 right = vec2(_41.x ? vTo.x : vFrom.x, _41.y ? vTo.y : vFrom.y);
+ vec2 extent = clamp(vec2(vFrom.x, vTo.x), vec2(-0.5), vec2(0.5));
+ float midx = mix(extent.x, extent.y, 0.5);
+ float x0 = midx - left.x;
+ vec2 p1 = vCtrl - left;
+ vec2 v = right - vCtrl;
+ float t = x0 / (p1.x + sqrt((p1.x * p1.x) + ((v.x - p1.x) * x0)));
+ float y = mix(mix(left.y, vCtrl.y, t), mix(vCtrl.y, right.y, t), t);
+ vec2 d_half = mix(p1, v, vec2(t));
+ float dy = d_half.y / d_half.x;
+ float width = extent.y - extent.x;
+ dy = abs(dy * width);
+ vec4 sides = vec4((dy * 0.5) + y, (dy * (-0.5)) + y, (0.5 - y) / dy, ((-0.5) - y) / dy);
+ sides = clamp(sides + vec4(0.5), vec4(0.0), vec4(1.0));
+ float area = 0.5 * ((((sides.z - (sides.z * sides.y)) + 1.0) - sides.x) + (sides.x * sides.w));
+ area *= width;
+ if (width == 0.0)
+ {
+ area = 0.0;
+ }
+ gl_FragData[0].x = area;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl150 b/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl150
new file mode 100644
index 0000000..8e2abd8
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.glsl150
@@ -0,0 +1,37 @@
+#version 150
+
+in vec2 vTo;
+in vec2 vFrom;
+in vec2 vCtrl;
+out vec4 fragCover;
+
+void main()
+{
+ float dx = vTo.x - vFrom.x;
+ bool increasing = vTo.x >= vFrom.x;
+ bvec2 _35 = bvec2(increasing);
+ vec2 left = vec2(_35.x ? vFrom.x : vTo.x, _35.y ? vFrom.y : vTo.y);
+ bvec2 _41 = bvec2(increasing);
+ vec2 right = vec2(_41.x ? vTo.x : vFrom.x, _41.y ? vTo.y : vFrom.y);
+ vec2 extent = clamp(vec2(vFrom.x, vTo.x), vec2(-0.5), vec2(0.5));
+ float midx = mix(extent.x, extent.y, 0.5);
+ float x0 = midx - left.x;
+ vec2 p1 = vCtrl - left;
+ vec2 v = right - vCtrl;
+ float t = x0 / (p1.x + sqrt((p1.x * p1.x) + ((v.x - p1.x) * x0)));
+ float y = mix(mix(left.y, vCtrl.y, t), mix(vCtrl.y, right.y, t), t);
+ vec2 d_half = mix(p1, v, vec2(t));
+ float dy = d_half.y / d_half.x;
+ float width = extent.y - extent.x;
+ dy = abs(dy * width);
+ vec4 sides = vec4((dy * 0.5) + y, (dy * (-0.5)) + y, (0.5 - y) / dy, ((-0.5) - y) / dy);
+ sides = clamp(sides + vec4(0.5), vec4(0.0), vec4(1.0));
+ float area = 0.5 * ((((sides.z - (sides.z * sides.y)) + 1.0) - sides.x) + (sides.x * sides.w));
+ area *= width;
+ if (width == 0.0)
+ {
+ area = 0.0;
+ }
+ fragCover.x = area;
+}
+
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibios b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibios
new file mode 100644
index 0000000..52f668f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibiossimulator
new file mode 100644
index 0000000..3fbfa8f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibmacos b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibmacos
new file mode 100644
index 0000000..358a02a
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.frag.0.spirv b/vendor/gioui.org/shader/gio/zstencil.frag.0.spirv
new file mode 100644
index 0000000..9a22d9e
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.frag.0.spirv
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.dxbc b/vendor/gioui.org/shader/gio/zstencil.vert.0.dxbc
new file mode 100644
index 0000000..505672f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.dxbc
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl100es b/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl100es
new file mode 100644
index 0000000..c8e1261
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl100es
@@ -0,0 +1,64 @@
+#version 100
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec2 pathOffset;
+};
+
+uniform Block _block;
+
+attribute vec2 from;
+attribute vec2 ctrl;
+attribute vec2 to;
+attribute float maxy;
+attribute float corner;
+varying vec2 vFrom;
+varying vec2 vCtrl;
+varying vec2 vTo;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 from_1 = from + _block.pathOffset;
+ vec2 ctrl_1 = ctrl + _block.pathOffset;
+ vec2 to_1 = to + _block.pathOffset;
+ float maxy_1 = maxy + _block.pathOffset.y;
+ float c = corner;
+ vec2 pos;
+ if (c >= 0.375)
+ {
+ c -= 0.5;
+ pos.y = maxy_1 + 1.0;
+ }
+ else
+ {
+ pos.y = min(min(from_1.y, ctrl_1.y), to_1.y) - 1.0;
+ }
+ if (c >= 0.125)
+ {
+ pos.x = max(max(from_1.x, ctrl_1.x), to_1.x) + 1.0;
+ }
+ else
+ {
+ pos.x = min(min(from_1.x, ctrl_1.x), to_1.x) - 1.0;
+ }
+ vFrom = from_1 - pos;
+ vCtrl = ctrl_1 - pos;
+ vTo = to_1 - pos;
+ pos = (pos * _block.transform.xy) + _block.transform.zw;
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(pos, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl150 b/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl150
new file mode 100644
index 0000000..9ae6c9b
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.glsl150
@@ -0,0 +1,64 @@
+#version 150
+
+struct m3x2
+{
+ vec3 r0;
+ vec3 r1;
+};
+
+struct Block
+{
+ vec4 transform;
+ vec2 pathOffset;
+};
+
+uniform Block _block;
+
+in vec2 from;
+in vec2 ctrl;
+in vec2 to;
+in float maxy;
+in float corner;
+out vec2 vFrom;
+out vec2 vCtrl;
+out vec2 vTo;
+
+vec3 transform3x2(m3x2 t, vec3 v)
+{
+ return vec3(dot(t.r0, v), dot(t.r1, v), dot(vec3(0.0, 0.0, 1.0), v));
+}
+
+void main()
+{
+ vec2 from_1 = from + _block.pathOffset;
+ vec2 ctrl_1 = ctrl + _block.pathOffset;
+ vec2 to_1 = to + _block.pathOffset;
+ float maxy_1 = maxy + _block.pathOffset.y;
+ float c = corner;
+ vec2 pos;
+ if (c >= 0.375)
+ {
+ c -= 0.5;
+ pos.y = maxy_1 + 1.0;
+ }
+ else
+ {
+ pos.y = min(min(from_1.y, ctrl_1.y), to_1.y) - 1.0;
+ }
+ if (c >= 0.125)
+ {
+ pos.x = max(max(from_1.x, ctrl_1.x), to_1.x) + 1.0;
+ }
+ else
+ {
+ pos.x = min(min(from_1.x, ctrl_1.x), to_1.x) - 1.0;
+ }
+ vFrom = from_1 - pos;
+ vCtrl = ctrl_1 - pos;
+ vTo = to_1 - pos;
+ pos = (pos * _block.transform.xy) + _block.transform.zw;
+ m3x2 param = m3x2(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0));
+ vec3 param_1 = vec3(pos, 0.0);
+ gl_Position = vec4(transform3x2(param, param_1), 1.0);
+}
+
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibios b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibios
new file mode 100644
index 0000000..75ac068
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibios
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibiossimulator b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibiossimulator
new file mode 100644
index 0000000..9ba5f58
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibiossimulator
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibmacos b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibmacos
new file mode 100644
index 0000000..4de454d
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.metallibmacos
Binary files differ
diff --git a/vendor/gioui.org/shader/gio/zstencil.vert.0.spirv b/vendor/gioui.org/shader/gio/zstencil.vert.0.spirv
new file mode 100644
index 0000000..b45803f
--- /dev/null
+++ b/vendor/gioui.org/shader/gio/zstencil.vert.0.spirv
Binary files differ