diff options
Diffstat (limited to 'src/quickshapes/shaders_ng')
-rwxr-xr-x | src/quickshapes/shaders_ng/compile.bat | 45 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.frag | 25 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.frag.qsb | bin | 0 -> 2228 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.vert | 21 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/conicalgradient.vert.qsb | bin | 0 -> 1994 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.frag | 18 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.frag.qsb | bin | 0 -> 1762 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.vert | 22 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/lineargradient.vert.qsb | bin | 0 -> 2225 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.frag | 32 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.frag.qsb | bin | 0 -> 2931 bytes | |||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.vert | 23 | ||||
-rw-r--r-- | src/quickshapes/shaders_ng/radialgradient.vert.qsb | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000000..9aa59ca651 --- /dev/null +++ b/src/quickshapes/shaders_ng/conicalgradient.frag.qsb 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 Binary files differnew file mode 100644 index 0000000000..7f5985ef64 --- /dev/null +++ b/src/quickshapes/shaders_ng/conicalgradient.vert.qsb 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 Binary files differnew file mode 100644 index 0000000000..470de007b5 --- /dev/null +++ b/src/quickshapes/shaders_ng/lineargradient.frag.qsb 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 Binary files differnew file mode 100644 index 0000000000..8d054efbb4 --- /dev/null +++ b/src/quickshapes/shaders_ng/lineargradient.vert.qsb 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 Binary files differnew file mode 100644 index 0000000000..166eb2f92d --- /dev/null +++ b/src/quickshapes/shaders_ng/radialgradient.frag.qsb 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 Binary files differnew file mode 100644 index 0000000000..293e23947a --- /dev/null +++ b/src/quickshapes/shaders_ng/radialgradient.vert.qsb |