diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2020-05-14 17:45:00 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2020-05-19 09:43:08 +0200 |
commit | 5188167e633af743548be90db4fdcd2791dd9637 (patch) | |
tree | d93d26dc1faa280c007d4c28fa8f540fb4a07727 /tests/manual/scenegraph_lancelot | |
parent | 085af2f28845b14180d7ff07d5d98b51d2e8bb01 (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/scenegraph_lancelot')
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 Binary files differnew file mode 100644 index 0000000000..9d971e4638 --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/circle_16x16.png diff --git a/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png Binary files differnew file mode 100644 index 0000000000..8a101a7217 --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/sand_16x16.png diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag Binary files differnew file mode 100644 index 0000000000..56bcd200fe --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/gradientgrid.frag diff --git a/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert Binary files differnew file mode 100644 index 0000000000..623df9a177 --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/shaders/+qsb/subrect.vert 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 Binary files differnew file mode 100644 index 0000000000..58e37c613f --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/square_16x16.png diff --git a/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png b/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png Binary files differnew file mode 100644 index 0000000000..930bc8dcc0 --- /dev/null +++ b/tests/manual/scenegraph_lancelot/data/shared/star_16x16.png |