aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickshapes/shaders_ng
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickshapes/shaders_ng')
-rwxr-xr-xsrc/quickshapes/shaders_ng/compile.bat45
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.frag25
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.frag.qsbbin0 -> 2228 bytes
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.vert21
-rw-r--r--src/quickshapes/shaders_ng/conicalgradient.vert.qsbbin0 -> 1994 bytes
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.frag18
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.frag.qsbbin0 -> 1762 bytes
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.vert22
-rw-r--r--src/quickshapes/shaders_ng/lineargradient.vert.qsbbin0 -> 2225 bytes
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.frag32
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.frag.qsbbin0 -> 2931 bytes
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.vert23
-rw-r--r--src/quickshapes/shaders_ng/radialgradient.vert.qsbbin0 -> 2115 bytes
13 files changed, 186 insertions, 0 deletions
diff --git a/src/quickshapes/shaders_ng/compile.bat b/src/quickshapes/shaders_ng/compile.bat
new file mode 100755
index 0000000000..860dc7a07a
--- /dev/null
+++ b/src/quickshapes/shaders_ng/compile.bat
@@ -0,0 +1,45 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2019 The Qt Company Ltd.
+:: Contact: https://www.qt.io/licensing/
+::
+:: This file is part of the QtQuick module of the Qt Toolkit.
+::
+:: $QT_BEGIN_LICENSE:LGPL$
+:: Commercial License Usage
+:: Licensees holding valid commercial Qt licenses may use this file in
+:: accordance with the commercial license agreement provided with the
+:: Software or, alternatively, in accordance with the terms contained in
+:: a written agreement between you and The Qt Company. For licensing terms
+:: and conditions see https://www.qt.io/terms-conditions. For further
+:: information use the contact form at https://www.qt.io/contact-us.
+::
+:: GNU Lesser General Public License Usage
+:: Alternatively, this file may be used under the terms of the GNU Lesser
+:: General Public License version 3 as published by the Free Software
+:: Foundation and appearing in the file LICENSE.LGPL3 included in the
+:: packaging of this file. Please review the following information to
+:: ensure the GNU Lesser General Public License version 3 requirements
+:: will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+::
+:: GNU General Public License Usage
+:: Alternatively, this file may be used under the terms of the GNU
+:: General Public License version 2.0 or (at your option) the GNU General
+:: Public license version 3 or any later version approved by the KDE Free
+:: Qt Foundation. The licenses are as published by the Free Software
+:: Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+:: included in the packaging of this file. Please review the following
+:: information to ensure the GNU General Public License requirements will
+:: be met: https://www.gnu.org/licenses/gpl-2.0.html and
+:: https://www.gnu.org/licenses/gpl-3.0.html.
+::
+:: $QT_END_LICENSE$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o lineargradient.vert.qsb lineargradient.vert
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o lineargradient.frag.qsb lineargradient.frag
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o radialgradient.vert.qsb radialgradient.vert
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o radialgradient.frag.qsb radialgradient.frag
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o conicalgradient.vert.qsb conicalgradient.vert
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o conicalgradient.frag.qsb conicalgradient.frag
diff --git a/src/quickshapes/shaders_ng/conicalgradient.frag b/src/quickshapes/shaders_ng/conicalgradient.frag
new file mode 100644
index 0000000000..0b1e01bae2
--- /dev/null
+++ b/src/quickshapes/shaders_ng/conicalgradient.frag
@@ -0,0 +1,25 @@
+#version 440
+
+layout(location = 0) in vec2 coord;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D gradTabTexture;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 translationPoint;
+ float angle;
+ float opacity;
+} ubuf;
+
+#define INVERSE_2PI 0.1591549430918953358
+
+void main()
+{
+ float t;
+ if (abs(coord.y) == abs(coord.x))
+ t = (atan(-coord.y + 0.002, coord.x) + ubuf.angle) * INVERSE_2PI;
+ else
+ t = (atan(-coord.y, coord.x) + ubuf.angle) * INVERSE_2PI;
+ fragColor = texture(gradTabTexture, vec2(t - floor(t), 0.5)) * ubuf.opacity;
+}
diff --git a/src/quickshapes/shaders_ng/conicalgradient.frag.qsb b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb
new file mode 100644
index 0000000000..9aa59ca651
--- /dev/null
+++ b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/conicalgradient.vert b/src/quickshapes/shaders_ng/conicalgradient.vert
new file mode 100644
index 0000000000..3db027294b
--- /dev/null
+++ b/src/quickshapes/shaders_ng/conicalgradient.vert
@@ -0,0 +1,21 @@
+#version 440
+
+layout(location = 0) in vec4 vertexCoord;
+layout(location = 1) in vec4 vertexColor;
+
+layout(location = 0) out vec2 coord;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 translationPoint;
+ float angle;
+ float opacity;
+} ubuf;
+
+out gl_PerVertex { vec4 gl_Position; };
+
+void main()
+{
+ coord = vertexCoord.xy - ubuf.translationPoint;
+ gl_Position = ubuf.matrix * vertexCoord;
+}
diff --git a/src/quickshapes/shaders_ng/conicalgradient.vert.qsb b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb
new file mode 100644
index 0000000000..7f5985ef64
--- /dev/null
+++ b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/lineargradient.frag b/src/quickshapes/shaders_ng/lineargradient.frag
new file mode 100644
index 0000000000..16894fc764
--- /dev/null
+++ b/src/quickshapes/shaders_ng/lineargradient.frag
@@ -0,0 +1,18 @@
+#version 440
+
+layout(location = 0) in float gradTabIndex;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D gradTabTexture;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 gradStart;
+ vec2 gradEnd;
+ float opacity;
+} ubuf;
+
+void main()
+{
+ fragColor = texture(gradTabTexture, vec2(gradTabIndex, 0.5)) * ubuf.opacity;
+}
diff --git a/src/quickshapes/shaders_ng/lineargradient.frag.qsb b/src/quickshapes/shaders_ng/lineargradient.frag.qsb
new file mode 100644
index 0000000000..470de007b5
--- /dev/null
+++ b/src/quickshapes/shaders_ng/lineargradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/lineargradient.vert b/src/quickshapes/shaders_ng/lineargradient.vert
new file mode 100644
index 0000000000..b4eb868186
--- /dev/null
+++ b/src/quickshapes/shaders_ng/lineargradient.vert
@@ -0,0 +1,22 @@
+#version 440
+
+layout(location = 0) in vec4 vertexCoord;
+layout(location = 1) in vec4 vertexColor;
+
+layout(location = 0) out float gradTabIndex;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 gradStart;
+ vec2 gradEnd;
+ float opacity;
+} ubuf;
+
+out gl_PerVertex { vec4 gl_Position; };
+
+void main()
+{
+ vec2 gradVec = ubuf.gradEnd - ubuf.gradStart;
+ gradTabIndex = dot(gradVec, vertexCoord.xy - ubuf.gradStart) / (gradVec.x * gradVec.x + gradVec.y * gradVec.y);
+ gl_Position = ubuf.matrix * vertexCoord;
+}
diff --git a/src/quickshapes/shaders_ng/lineargradient.vert.qsb b/src/quickshapes/shaders_ng/lineargradient.vert.qsb
new file mode 100644
index 0000000000..8d054efbb4
--- /dev/null
+++ b/src/quickshapes/shaders_ng/lineargradient.vert.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/radialgradient.frag b/src/quickshapes/shaders_ng/radialgradient.frag
new file mode 100644
index 0000000000..411e589295
--- /dev/null
+++ b/src/quickshapes/shaders_ng/radialgradient.frag
@@ -0,0 +1,32 @@
+#version 440
+
+layout(location = 0) in vec2 coord;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D gradTabTexture;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 translationPoint;
+ vec2 focalToCenter;
+ float centerRadius;
+ float focalRadius;
+ float opacity;
+} ubuf;
+
+void main()
+{
+ float rd = ubuf.centerRadius - ubuf.focalRadius;
+ float b = 2.0 * (rd * ubuf.focalRadius + dot(coord, ubuf.focalToCenter));
+ float fmp2_m_radius2 = -ubuf.focalToCenter.x * ubuf.focalToCenter.x - ubuf.focalToCenter.y * ubuf.focalToCenter.y + rd * rd;
+ float inverse_2_fmp2_m_radius2 = 1.0 / (2.0 * fmp2_m_radius2);
+ float det = b * b - 4.0 * fmp2_m_radius2 * ((ubuf.focalRadius * ubuf.focalRadius) - dot(coord, coord));
+ vec4 result = vec4(0.0);
+ if (det >= 0.0) {
+ float detSqrt = sqrt(det);
+ float w = max((-b - detSqrt) * inverse_2_fmp2_m_radius2, (-b + detSqrt) * inverse_2_fmp2_m_radius2);
+ if (ubuf.focalRadius + w * (ubuf.centerRadius - ubuf.focalRadius) >= 0.0)
+ result = texture(gradTabTexture, vec2(w, 0.5)) * ubuf.opacity;
+ }
+ fragColor = result;
+}
diff --git a/src/quickshapes/shaders_ng/radialgradient.frag.qsb b/src/quickshapes/shaders_ng/radialgradient.frag.qsb
new file mode 100644
index 0000000000..166eb2f92d
--- /dev/null
+++ b/src/quickshapes/shaders_ng/radialgradient.frag.qsb
Binary files differ
diff --git a/src/quickshapes/shaders_ng/radialgradient.vert b/src/quickshapes/shaders_ng/radialgradient.vert
new file mode 100644
index 0000000000..08f15c4f8c
--- /dev/null
+++ b/src/quickshapes/shaders_ng/radialgradient.vert
@@ -0,0 +1,23 @@
+#version 440
+
+layout(location = 0) in vec4 vertexCoord;
+layout(location = 1) in vec4 vertexColor;
+
+layout(location = 0) out vec2 coord;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 matrix;
+ vec2 translationPoint;
+ vec2 focalToCenter;
+ float centerRadius;
+ float focalRadius;
+ float opacity;
+} ubuf;
+
+out gl_PerVertex { vec4 gl_Position; };
+
+void main()
+{
+ coord = vertexCoord.xy - ubuf.translationPoint;
+ gl_Position = ubuf.matrix * vertexCoord;
+}
diff --git a/src/quickshapes/shaders_ng/radialgradient.vert.qsb b/src/quickshapes/shaders_ng/radialgradient.vert.qsb
new file mode 100644
index 0000000000..293e23947a
--- /dev/null
+++ b/src/quickshapes/shaders_ng/radialgradient.vert.qsb
Binary files differ