From 4aa90033abfd6364806ad4a893aea2e11e44a904 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Wed, 10 Aug 2022 17:33:39 +0200 Subject: [PATCH] Add more not working shader --- ScreenPlayShader/CMakeLists.txt | 8 ++- ScreenPlayShader/assets/uniformclouds-1.jpg | Bin 0 -> 66194 bytes ScreenPlayShader/shaders/flowmap.frag | 8 +-- ScreenPlayShader/shaders/matrix.frag | 68 ++++++++++++++++++++ ScreenPlayShader/shaders/matrix.vert | 18 ++++++ ScreenPlayShader/src/Matrix.qml | 43 +++++++++++++ ScreenPlayShader/src/TestMain.qml | 5 ++ 7 files changed, 145 insertions(+), 5 deletions(-) create mode 100644 ScreenPlayShader/assets/uniformclouds-1.jpg create mode 100644 ScreenPlayShader/shaders/matrix.frag create mode 100644 ScreenPlayShader/shaders/matrix.vert create mode 100644 ScreenPlayShader/src/Matrix.qml diff --git a/ScreenPlayShader/CMakeLists.txt b/ScreenPlayShader/CMakeLists.txt index 8f103a62..a02390d1 100644 --- a/ScreenPlayShader/CMakeLists.txt +++ b/ScreenPlayShader/CMakeLists.txt @@ -1,3 +1,5 @@ +cmake_minimum_required(VERSION 3.16.0) + project( ScreenPlayShader VERSION 0.1 @@ -16,6 +18,7 @@ set(QML src/ShadertoyShader.qml src/Beam.qml src/Wobble.qml src/Flowmap.qml + src/Matrix.qml src/TestMain.qml) set(QML_PLUGIN_SOURCES src/shaderlibrary.cpp) @@ -28,6 +31,8 @@ set(SHADER shaders/wobble.frag shaders/evnergy_beam.frag shaders/flowmap.frag + shaders/matrix.frag + shaders/matrix.vert shaders/water.frag shaders/water.vert) @@ -37,6 +42,7 @@ set(RESOURCES assets/water_normal.png assets/lava.png assets/displace.png + assets/uniformclouds-1.jpg assets/Shadertoy_Bayer.png assets/Shadertoy_Gray_Noise_Medium.png assets/Shadertoy_Lichen.jpg @@ -74,7 +80,7 @@ qt6_add_shaders( FILES ${SHADER}) -if(${SCREENPLAY_TESTS}) +if(NOT DEFINED ${SCREENPLAY_TESTS} OR ${SCREENPLAY_TESTS}) qt_add_executable(tst_ScreenPlayShader src/TestMain.cpp) target_link_libraries(tst_ScreenPlayShader PRIVATE Qt::Quick ${PROJECT_NAME}plugin) target_compile_definitions(tst_ScreenPlayShader PRIVATE $<$,$>:QT_QML_DEBUG>) diff --git a/ScreenPlayShader/assets/uniformclouds-1.jpg b/ScreenPlayShader/assets/uniformclouds-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04cb5953807bcefa452dc57502d7a075d9ba13fa GIT binary patch literal 66194 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 literal 0 HcmV?d00001 diff --git a/ScreenPlayShader/shaders/flowmap.frag b/ScreenPlayShader/shaders/flowmap.frag index f66136bc..888b1fc5 100644 --- a/ScreenPlayShader/shaders/flowmap.frag +++ b/ScreenPlayShader/shaders/flowmap.frag @@ -9,7 +9,7 @@ https://github.com/Maujoe/godot-flow-map-shader/blob/master/LICENSE.md #version 440 -layout(location = 0) in vec2 coord; // Godot: UV +layout(location = 0) in vec2 qt_TexCoord0; // Godot: UV layout(location = 0) out vec4 fragColor; layout(binding = 1) uniform sampler2D texture_albedo; @@ -72,7 +72,7 @@ void main() float phase1 = mod(offset + time * cycle_speed, blend_cycle); float phase2 = mod(offset + time * cycle_speed + half_cycle, blend_cycle); - vec4 flow_tex = texture(texture_flow_map, coord); + vec4 flow_tex = texture(texture_flow_map, qt_TexCoord0); vec2 flow; flow.x = dot(flow_tex, flow_map_x_channel) * 2.0 - 1.0; @@ -93,8 +93,8 @@ void main() // Multiply with scale to make flow speed independent from the uv scaling flow *= flow_speed * uv_scale; - vec2 layer1 = flow * phase1 + coord; // coord == base_uv ? - vec2 layer2 = flow * phase2 + coord; + vec2 layer1 = flow * phase1 + qt_TexCoord0; // coord == base_uv ? + vec2 layer2 = flow * phase2 + qt_TexCoord0; /****************************************************************************************************/ // Albedo diff --git a/ScreenPlayShader/shaders/matrix.frag b/ScreenPlayShader/shaders/matrix.frag new file mode 100644 index 00000000..6da9cae0 --- /dev/null +++ b/ScreenPlayShader/shaders/matrix.frag @@ -0,0 +1,68 @@ +#version 440 + +layout(location = 0) in vec2 qt_TexCoord0; +layout(location = 0) out vec4 fragColor; + + +layout(binding = 1) uniform sampler2D source; +layout(binding = 2) uniform sampler2D text_pattern; + +layout(std140, binding = 0) uniform buf { + // MUST BE + mat4 qt_Matrix; + float qt_Opacity; + // INCLUDED HERE + + float time; +} ; + + +void main() +{ + + // vec2 uv = gl_FragCoord.xy/qt_TexCoord0; // Original Code + vec2 uv = qt_TexCoord0; + float time2 = time * 0.04; + + // apply pixelate effect + vec2 uv_pixel = uv; + //vec2 uv_pixel = floor(uv * (qt_TexCoord0/4)) / (qt_TexCoord0/4); // Original Code + + vec4 col1 = vec4(0.510, 0.776, 0.486, 1.0); + vec4 col2 = vec4(0.200, 0.604, 0.318, 1.0); + vec4 col3 = vec4(0.145, 0.490 ,0.278, 1.0); + vec4 col4 = vec4(0.059, 0.255, 0.251, 1.0); + + // displacement on top of y + vec3 displace = texture(text_pattern, vec2(uv_pixel.x, (uv_pixel.y + time2) * 0.05)).xyz; + displace *= 0.5; + displace.x -= 1.0; + displace.y -= 1.0; + displace.y *= 0.5; + + // color + vec2 uv_tmp = uv_pixel; + uv_tmp.y *= 0.2; + uv_tmp.y += time; + vec4 color = texture(text_pattern, uv_tmp + displace.xy); + + fragColor = vec4(color); + return; + + // match to colors + vec4 noise = floor(color * 10.0) / 5.0; + vec4 dark = mix(col1, col2, uv.y); + vec4 bright = mix(col3, col4, uv.y); + + // add gradients (top dark and transparent, bottom bright) + float inv_uv = 1.0 - uv_pixel.y; + color.xyz -= 0.45 * pow(uv_pixel.y, 8.0); + color.a -= 0.2 * pow(uv_pixel.y, 8.0); + color += pow(inv_uv, 8.0); + color = mix(dark, bright, noise); + + // make waterfall transparent + color.a -= 0.2; + + fragColor = vec4(color); +} diff --git a/ScreenPlayShader/shaders/matrix.vert b/ScreenPlayShader/shaders/matrix.vert new file mode 100644 index 00000000..85795ba3 --- /dev/null +++ b/ScreenPlayShader/shaders/matrix.vert @@ -0,0 +1,18 @@ +#version 440 // 1 + +layout(location = 0) in vec4 position; // 2 +layout(location = 1) in vec2 texcoord; + +layout(location = 0) out vec2 coord; // 3 + +layout(std140, binding = 0) uniform buf { // 4 + mat4 qt_Matrix; // 5 + float qt_Opacity; +} ubuf; + +out gl_PerVertex { vec4 gl_Position; }; //6 + + +void main() { + gl_Position = vec4(texcoord, 0.0f, 1); +} diff --git a/ScreenPlayShader/src/Matrix.qml b/ScreenPlayShader/src/Matrix.qml new file mode 100644 index 00000000..34d83b04 --- /dev/null +++ b/ScreenPlayShader/src/Matrix.qml @@ -0,0 +1,43 @@ +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import QtQuick.Controls.Material +import ScreenPlayShader + +Rectangle { + color: "gray" + + Image { + id: img_texture + sourceSize: Qt.size(500, 500) + source: "qrc:/qml/ScreenPlayShader/assets/uniformclouds-1.jpg" + } + + Rectangle { + id: flowmap + x: 500 + width: 500 + height: 500 + layer.enabled: true + layer.effect: ShaderEffect { + id: se + blending: false + fragmentShader: "/shaders/matrix.frag.qsb" + //vertexShader: "/shaders/matrix.vert.qsb" + + property variant text_pattern: img_texture + property real time: 0 + property real framerate: 60 + property real updateInterval: Math.round( + (1000 / framerate) * 10) / 10 + Timer { + interval: 16 + running: true + repeat: true + onTriggered: { + se.time += 1 + } + } + } + } +} diff --git a/ScreenPlayShader/src/TestMain.qml b/ScreenPlayShader/src/TestMain.qml index 88a5cfd1..14d7144d 100644 --- a/ScreenPlayShader/src/TestMain.qml +++ b/ScreenPlayShader/src/TestMain.qml @@ -14,6 +14,9 @@ Window { TabBar { id: bar width: parent.width + TabButton { + text: qsTr("Matrix") + } TabButton { text: qsTr("Wobble") } @@ -36,6 +39,8 @@ Window { currentIndex: bar.currentIndex clip: true + Matrix {} + Flowmap {} Wobble {}