From 5188167e633af743548be90db4fdcd2791dd9637 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Thu, 14 May 2020 17:45:00 +0200 Subject: Lancelot test for ShaderEffect atlas textures Task-number: QTBUG-83975 Pick-to: 5.15 Change-Id: Icfff2aa9172bf10a1918be5364f27ed6faf94575 Reviewed-by: Eirik Aavitsland --- .../data/shaders/atlas/atlas.qml | 51 +++++++++++++++++++++ .../data/shared/circle_16x16.png | Bin 0 -> 389 bytes .../scenegraph_lancelot/data/shared/sand_16x16.png | Bin 0 -> 884 bytes .../data/shared/shaders/+qsb/gradientgrid.frag | Bin 0 -> 1458 bytes .../data/shared/shaders/+qsb/subrect.vert | Bin 0 -> 1707 bytes .../data/shared/shaders/compile.bat | 2 + .../data/shared/shaders/gradientgrid.frag | 9 ++++ .../data/shared/shaders/gradientgrid_rhi.frag | 13 ++++++ .../data/shared/shaders/subrect.vert | 11 +++++ .../data/shared/shaders/subrect_rhi.vert | 17 +++++++ .../scenegraph_lancelot/data/shared/shared.qrc | 4 ++ .../data/shared/square_16x16.png | Bin 0 -> 257 bytes .../scenegraph_lancelot/data/shared/star_16x16.png | Bin 0 -> 410 bytes 13 files changed, 107 insertions(+) create mode 100644 tests/manual/scenegraph_lancelot/data/shaders/atlas/atlas.qml create mode 100644 tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png create mode 100644 tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid.frag create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/gradientgrid_rhi.frag create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/subrect.vert create mode 100644 tests/manual/scenegraph_lancelot/data/shared/shaders/subrect_rhi.vert create mode 100644 tests/manual/scenegraph_lancelot/data/shared/square_16x16.png create mode 100644 tests/manual/scenegraph_lancelot/data/shared/star_16x16.png (limited to 'tests/manual') 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert 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 @@ shaders/gradient3.frag shaders/gradient4.frag shaders/gradient5.frag + shaders/gradientgrid.frag shaders/property.frag shaders/shadow.frag shaders/stencil.frag + shaders/subrect.vert shaders/wave.vert shaders/+qsb/basic.frag shaders/+qsb/basic_alpha.frag @@ -26,9 +28,11 @@ shaders/+qsb/gradient3.frag shaders/+qsb/gradient4.frag shaders/+qsb/gradient5.frag + shaders/+qsb/gradientgrid.frag shaders/+qsb/property.frag shaders/+qsb/shadow.frag shaders/+qsb/stencil.frag + shaders/+qsb/subrect.vert shaders/+qsb/wave.vert 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/square_16x16.png 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 Binary files /dev/null and b/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png differ -- cgit v1.2.3