aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2020-05-14 17:45:00 +0200
committerPaul Olav Tvete <paul.tvete@qt.io>2020-05-19 09:43:08 +0200
commit5188167e633af743548be90db4fdcd2791dd9637 (patch)
treed93d26dc1faa280c007d4c28fa8f540fb4a07727 /tests/manual
parent085af2f28845b14180d7ff07d5d98b51d2e8bb01 (diff)
Lancelot test for ShaderEffect atlas textures
Task-number: QTBUG-83975 Pick-to: 5.15 Change-Id: Icfff2aa9172bf10a1918be5364f27ed6faf94575 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/atlas/atlas.qml51
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/circle_16x16.pngbin0 -> 389 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/sand_16x16.pngbin0 -> 884 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.fragbin0 -> 1458 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vertbin0 -> 1707 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat2
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid.frag9
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid_rhi.frag13
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/subrect.vert11
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shaders/subrect_rhi.vert17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/shared.qrc4
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/square_16x16.pngbin0 -> 257 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/star_16x16.pngbin0 -> 410 bytes
13 files changed, 107 insertions, 0 deletions
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/atlas/atlas.qml b/tests/manual/scenegraph_lancelot/data/shaders/atlas/atlas.qml
new file mode 100644
index 0000000000..06c254253e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/atlas/atlas.qml
@@ -0,0 +1,51 @@
+import QtQuick 2.15
+
+Item {
+ width: 320
+ height: 480
+
+ Column {
+ spacing: 10
+ padding: 5
+
+ Repeater {
+ model: ["sand_16x16.png", "circle_16x16.png", "star_16x16.png", "square_16x16.png"]
+ Row {
+ spacing: 20
+ Image {
+ id: img
+ source: "../../shared/" + modelData
+ }
+
+ // Non-atlased: copies subrect of atlas to a new texture
+ ShaderEffect {
+ width: img.width
+ height: img.height
+ property variant source: img
+ fragmentShader: "qrc:shaders/gradientgrid.frag"
+ supportsAtlasTextures: false
+ }
+
+ // Atlased: qt_MultiTexCoord0 points to the atlas subrect
+ ShaderEffect {
+ width: img.width
+ height: img.height
+ property variant source: img
+ fragmentShader: "qrc:shaders/gradientgrid.frag"
+ supportsAtlasTextures: true
+ }
+
+ // Subrect mode: qt_MultiTexCoord0 goes from 0.0 to 1.0,
+ // and qt_Subrect_source specifies the atlas subrect
+ ShaderEffect {
+ width: img.width
+ height: img.height
+ property variant source: img
+ fragmentShader: "qrc:shaders/gradientgrid.frag"
+ vertexShader: "qrc:shaders/subrect.vert"
+ supportsAtlasTextures: false
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png
new file mode 100644
index 0000000000..9d971e4638
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png
new file mode 100644
index 0000000000..8a101a7217
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag
new file mode 100644
index 0000000000..56bcd200fe
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert
new file mode 100644
index 0000000000..623df9a177
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat b/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat
index 950279b9dd..e13d1f074e 100644
--- a/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/compile.bat
@@ -1,3 +1,4 @@
+qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/subrect.vert subrect_rhi.vert
qsb -b --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/wave.vert wave_rhi.vert
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/basic.frag basic_rhi.frag
@@ -11,6 +12,7 @@ qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient2.frag gradient2_
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient3.frag gradient3_rhi.frag
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient4.frag gradient4_rhi.frag
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradient5.frag gradient5_rhi.frag
+qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/gradientgrid.frag gradientgrid_rhi.frag
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/property.frag property_rhi.frag
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/shadow.frag shadow_rhi.frag
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/stencil.frag stencil_rhi.frag
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid.frag
new file mode 100644
index 0000000000..851f07c948
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid.frag
@@ -0,0 +1,9 @@
+uniform lowp sampler2D source;
+varying highp vec2 qt_TexCoord0;
+uniform lowp float qt_Opacity;
+void main() {
+ lowp float r = mod(qt_TexCoord0.x * 10.0, 1.0);
+ lowp float g = mod(qt_TexCoord0.y * 10.0, 1.0);
+ lowp float b = qt_TexCoord0.x;
+ gl_FragColor = vec4(r, g, b, 1) * texture2D(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid_rhi.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid_rhi.frag
new file mode 100644
index 0000000000..999629745b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid_rhi.frag
@@ -0,0 +1,13 @@
+#version 440
+
+layout(location = 0) in vec2 qt_TexCoord0;
+layout(location = 0) out vec4 fragColor;
+
+layout(binding = 1) uniform sampler2D source;
+
+void main() {
+ lowp float r = mod(qt_TexCoord0.x * 10.0, 1.0);
+ lowp float g = mod(qt_TexCoord0.y * 10.0, 1.0);
+ lowp float b = qt_TexCoord0.x;
+ fragColor = vec4(r, g, b, 1) * texture(source, qt_TexCoord0).a;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect.vert
new file mode 100644
index 0000000000..2ab6f94c19
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect.vert
@@ -0,0 +1,11 @@
+uniform highp mat4 qt_Matrix;
+attribute highp vec4 qt_Vertex;
+attribute highp vec2 qt_MultiTexCoord0;
+varying highp vec2 qt_TexCoord0;
+uniform highp vec4 qt_SubRect_source;
+
+void main()
+{
+ qt_TexCoord0 = qt_SubRect_source.xy + qt_SubRect_source.zw * qt_MultiTexCoord0;
+ gl_Position = qt_Matrix * qt_Vertex;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect_rhi.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect_rhi.vert
new file mode 100644
index 0000000000..96494b7149
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/subrect_rhi.vert
@@ -0,0 +1,17 @@
+#version 440
+
+layout(location = 0) in vec4 qt_Vertex;
+layout(location = 1) in vec2 qt_MultiTexCoord0;
+
+layout(location = 0) out vec2 qt_TexCoord0;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ vec4 qt_SubRect_source;
+} ubuf;
+
+void main()
+{
+ qt_TexCoord0 = ubuf.qt_SubRect_source.xy + ubuf.qt_SubRect_source.zw * qt_MultiTexCoord0;
+ gl_Position = ubuf.qt_Matrix * qt_Vertex;
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/shared.qrc b/tests/manual/scenegraph_lancelot/data/shared/shared.qrc
index 8235e02188..4bd955b2b2 100644
--- a/tests/manual/scenegraph_lancelot/data/shared/shared.qrc
+++ b/tests/manual/scenegraph_lancelot/data/shared/shared.qrc
@@ -11,9 +11,11 @@
<file>shaders/gradient3.frag</file>
<file>shaders/gradient4.frag</file>
<file>shaders/gradient5.frag</file>
+ <file>shaders/gradientgrid.frag</file>
<file>shaders/property.frag</file>
<file>shaders/shadow.frag</file>
<file>shaders/stencil.frag</file>
+ <file>shaders/subrect.vert</file>
<file>shaders/wave.vert</file>
<file>shaders/+qsb/basic.frag</file>
<file>shaders/+qsb/basic_alpha.frag</file>
@@ -26,9 +28,11 @@
<file>shaders/+qsb/gradient3.frag</file>
<file>shaders/+qsb/gradient4.frag</file>
<file>shaders/+qsb/gradient5.frag</file>
+ <file>shaders/+qsb/gradientgrid.frag</file>
<file>shaders/+qsb/property.frag</file>
<file>shaders/+qsb/shadow.frag</file>
<file>shaders/+qsb/stencil.frag</file>
+ <file>shaders/+qsb/subrect.vert</file>
<file>shaders/+qsb/wave.vert</file>
</qresource>
</RCC>
diff --git a/tests/manual/scenegraph_lancelot/data/shared/square_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/square_16x16.png
new file mode 100644
index 0000000000..58e37c613f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/square_16x16.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png
new file mode 100644
index 0000000000..930bc8dcc0
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png
Binary files differ