Revision control
++ // Copyright (C) 2025 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick
++ import QtQuick3D
++ import QtQuick3D.Helpers.impl
++
++ SsrEnvEffect {
++ id: ssrEffect
++
++ // Global
++ property real roughnessCut: 0.65
++
++ // Main pass
++ property real stepSize: 0.01
++ property real minRayStep: 0.01
++ property int binarySteps: 8
++ property int maxSteps: 256
++ property real baseThickness: 20
++
++ readonly property TextureInput ssrSampler: TextureInput { texture: Texture {} }
++ readonly property TextureInput ssrMaskSampler: TextureInput { texture: Texture {} }
++ readonly property TextureInput ssrReflConfSampler: TextureInput { texture: Texture {} }
++
++ Buffer {
++ id: ssrBufferMask
++ name: "ssrBufferMask"
++ sizeMultiplier: 1.0
++ format: Buffer.RGBA32F
++ }
++
++ Buffer {
++ id: ssrBufferMainReflColorConf
++ name: "ssrBufferMainReflColorConf"
++ sizeMultiplier: 1.0
++ format: Buffer.RGBA32F
++ }
++
++ Pass {
++ id: ssrMaskPass
++ output: ssrBufferMask
++ shaders: Shader { stage: Shader.Fragment; shader: "qrc:/qtquick3d_helpers/shaders/ssr_mask.frag" }
++ }
++
++ Pass {
++ id: ssrMainPass
++ output: ssrBufferMainReflColorConf
++ shaders: [
++ Shader {
++ stage: Shader.Fragment
++ shader: "qrc:/qtquick3d_helpers/shaders/ssr_main.frag"
++ }
++ ]
++ commands: [
++ BufferInput { buffer: ssrBufferMask; sampler: "ssrMaskSampler" }
++ ]
++ }
++
++ Pass {
++ id: ssrCompositionPass
++ shaders: [
++ Shader {
++ stage: Shader.Fragment
++ shader: "qrc:/qtquick3d_helpers/shaders/ssr_composition.frag"
++ }
++ ]
++ commands: [
++ BufferInput { buffer: ssrBufferMainReflColorConf; sampler: "ssrSampler" }
++ ]
++ }
++
++ passes: [
++ ssrMaskPass, ssrMainPass, ssrCompositionPass
++ ]
++
++ }