From 34cad4c1a952c163365870f93690a025ea33535f Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 23 Aug 2021 13:47:23 +0200 Subject: Port leftover effects in some of the examples For qmake we have no choice but to ship the .qsb files, whereas with CMake we now rely on qt6_add_shaders. Change-Id: I9bb64a3ffd01cda84fca5a0f7def270975bf71aa Reviewed-by: Alexandru Croitor (cherry picked from commit c7093e553c46bbd65a053a335bd27bec8ee5aca2) --- examples/quick/embeddedinwidgets/CMakeLists.txt | 10 ++++++++++ .../quick/embeddedinwidgets/embeddedinwidgets.qrc | 1 + examples/quick/embeddedinwidgets/main.qml | 16 +-------------- examples/quick/embeddedinwidgets/reflect.frag | 22 +++++++++++++++++++++ examples/quick/embeddedinwidgets/reflect.frag.qsb | Bin 0 -> 1976 bytes .../qquickviewcomparison/CMakeLists.txt | 11 +++++++++++ .../qquickviewcomparison/qquickviewcomparison.qrc | 1 + .../quickwidgets/qquickviewcomparison/test.qml | 12 +---------- .../quickwidgets/qquickviewcomparison/wobble.frag | 20 +++++++++++++++++++ .../qquickviewcomparison/wobble.frag.qsb | Bin 0 -> 1717 bytes 10 files changed, 67 insertions(+), 26 deletions(-) create mode 100644 examples/quick/embeddedinwidgets/reflect.frag create mode 100644 examples/quick/embeddedinwidgets/reflect.frag.qsb create mode 100644 examples/quick/quickwidgets/qquickviewcomparison/wobble.frag create mode 100644 examples/quick/quickwidgets/qquickviewcomparison/wobble.frag.qsb (limited to 'examples/quick') diff --git a/examples/quick/embeddedinwidgets/CMakeLists.txt b/examples/quick/embeddedinwidgets/CMakeLists.txt index 067f427d20..a7afac6184 100644 --- a/examples/quick/embeddedinwidgets/CMakeLists.txt +++ b/examples/quick/embeddedinwidgets/CMakeLists.txt @@ -19,6 +19,7 @@ find_package(Qt6 COMPONENTS Core) find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS Quick) +find_package(Qt6 COMPONENTS ShaderTools) qt_add_executable(embeddedinwidgets main.cpp @@ -48,6 +49,15 @@ qt6_add_resources(embeddedinwidgets "embeddedinwidgets" ${embeddedinwidgets_resource_files} ) +qt6_add_shaders(embeddedinwidgets "shaders" + PRECOMPILE + OPTIMIZED + PREFIX + "/embeddedinwidgets" + FILES + "reflect.frag" +) + install(TARGETS embeddedinwidgets RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/quick/embeddedinwidgets/embeddedinwidgets.qrc b/examples/quick/embeddedinwidgets/embeddedinwidgets.qrc index 62e0ed2161..0154393a8d 100644 --- a/examples/quick/embeddedinwidgets/embeddedinwidgets.qrc +++ b/examples/quick/embeddedinwidgets/embeddedinwidgets.qrc @@ -2,5 +2,6 @@ main.qml TextBox.qml + reflect.frag.qsb diff --git a/examples/quick/embeddedinwidgets/main.qml b/examples/quick/embeddedinwidgets/main.qml index e644a76587..7ce3bb8355 100644 --- a/examples/quick/embeddedinwidgets/main.qml +++ b/examples/quick/embeddedinwidgets/main.qml @@ -103,20 +103,6 @@ Rectangle { property variant source: column; property size sourceSize: Qt.size(0.5 / column.width, 0.5 / column.height); - fragmentShader: ` - varying highp vec2 qt_TexCoord0; - uniform lowp sampler2D source; - uniform lowp vec2 sourceSize; - uniform lowp float qt_Opacity; - void main() { - - lowp vec2 tc = qt_TexCoord0 * vec2(1, -1) + vec2(0, 1); - lowp vec4 col = 0.25 * (texture2D(source, tc + sourceSize) - + texture2D(source, tc- sourceSize) - + texture2D(source, tc + sourceSize * vec2(1, -1)) - + texture2D(source, tc + sourceSize * vec2(-1, 1)) - ); - gl_FragColor = col * qt_Opacity * (1.0 - qt_TexCoord0.y) * 0.2; - }` + fragmentShader: "reflect.frag.qsb" } } diff --git a/examples/quick/embeddedinwidgets/reflect.frag b/examples/quick/embeddedinwidgets/reflect.frag new file mode 100644 index 0000000000..04a81f86e5 --- /dev/null +++ b/examples/quick/embeddedinwidgets/reflect.frag @@ -0,0 +1,22 @@ +#version 440 + +layout(location = 0) in vec2 qt_TexCoord0; +layout(location = 0) out vec4 fragColor; + +layout(binding = 1) uniform sampler2D source; + +layout(std140, binding = 0) uniform buf { + mat4 qt_Matrix; + float qt_Opacity; + vec2 sourceSize; +}; + +void main() +{ + vec2 tc = qt_TexCoord0 * vec2(1, -1) + vec2(0, 1); + vec4 col = 0.25 * (texture(source, tc + sourceSize) + + texture(source, tc- sourceSize) + + texture(source, tc + sourceSize * vec2(1, -1)) + + texture(source, tc + sourceSize * vec2(-1, 1))); + fragColor = col * qt_Opacity * (1.0 - qt_TexCoord0.y) * 0.2; +} diff --git a/examples/quick/embeddedinwidgets/reflect.frag.qsb b/examples/quick/embeddedinwidgets/reflect.frag.qsb new file mode 100644 index 0000000000..a4d25dcbf5 Binary files /dev/null and b/examples/quick/embeddedinwidgets/reflect.frag.qsb differ diff --git a/examples/quick/quickwidgets/qquickviewcomparison/CMakeLists.txt b/examples/quick/quickwidgets/qquickviewcomparison/CMakeLists.txt index e0354cf56c..428f7b53a3 100644 --- a/examples/quick/quickwidgets/qquickviewcomparison/CMakeLists.txt +++ b/examples/quick/quickwidgets/qquickviewcomparison/CMakeLists.txt @@ -20,6 +20,7 @@ find_package(Qt6 COMPONENTS Gui) find_package(Qt6 COMPONENTS Quick) find_package(Qt6 COMPONENTS Widgets) find_package(Qt6 COMPONENTS QuickWidgets) +find_package(Qt6 COMPONENTS ShaderTools) qt_add_executable(qquickviewcomparison fbitem.cpp fbitem.h @@ -46,6 +47,16 @@ qt_add_qml_module(qquickviewcomparison RESOURCE_PREFIX /qquickviewcomparison NO_RESOURCE_TARGET_PATH ) + +qt6_add_shaders(qquickviewcomparison "shaders" + PRECOMPILE + OPTIMIZED + PREFIX + "/qquickviewcomparison" + FILES + "wobble.frag" +) + install(TARGETS qquickviewcomparison RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.qrc b/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.qrc index 2b259fdeec..e545c993c0 100644 --- a/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.qrc +++ b/examples/quick/quickwidgets/qquickviewcomparison/qquickviewcomparison.qrc @@ -1,5 +1,6 @@ test.qml + wobble.frag.qsb diff --git a/examples/quick/quickwidgets/qquickviewcomparison/test.qml b/examples/quick/quickwidgets/qquickviewcomparison/test.qml index e142add084..8224320509 100644 --- a/examples/quick/quickwidgets/qquickviewcomparison/test.qml +++ b/examples/quick/quickwidgets/qquickviewcomparison/test.qml @@ -213,16 +213,6 @@ Rectangle { property real frequency: 10 property real time: 0 NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 1000 } - fragmentShader: - "uniform lowp float qt_Opacity;" + - "uniform highp float amplitude;" + - "uniform highp float frequency;" + - "uniform highp float time;" + - "uniform sampler2D source;" + - "varying highp vec2 qt_TexCoord0;" + - "void main() {" + - " highp vec2 p = sin(time + frequency * qt_TexCoord0);" + - " gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" + - "}" + fragmentShader: "wobble.frag.qsb" } } diff --git a/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag b/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag new file mode 100644 index 0000000000..9fddf1a162 --- /dev/null +++ b/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag @@ -0,0 +1,20 @@ +#version 440 + +layout(location = 0) in vec2 qt_TexCoord0; +layout(location = 0) out vec4 fragColor; + +layout(binding = 1) uniform sampler2D source; + +layout(std140, binding = 0) uniform buf { + mat4 qt_Matrix; + float qt_Opacity; + float amplitude; + float frequency; + float time; +}; + +void main() +{ + vec2 p = sin(time + frequency * qt_TexCoord0); + fragColor = texture(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity; +} diff --git a/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag.qsb b/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag.qsb new file mode 100644 index 0000000000..ab764e8326 Binary files /dev/null and b/examples/quick/quickwidgets/qquickviewcomparison/wobble.frag.qsb differ -- cgit v1.2.3