67 lines
1.7 KiB
QML
67 lines
1.7 KiB
QML
// Copyright (C) 2022 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
|
|
|
import QtQuick
|
|
import QtQuick3D
|
|
import QtQuick3D.Helpers.impl
|
|
|
|
DepthOfFieldEffect {
|
|
readonly property TextureInput sourceSampler: TextureInput {
|
|
texture: Texture {}
|
|
}
|
|
property real focusDistance: 600
|
|
property real focusRange: 100
|
|
property real blurAmount: 4
|
|
|
|
Shader {
|
|
id: downsampleVert
|
|
stage: Shader.Vertex
|
|
shader: "qrc:/qtquick3d_helpers/shaders/downsample.vert"
|
|
}
|
|
Shader {
|
|
id: downsampleFrag
|
|
stage: Shader.Fragment
|
|
shader: "qrc:/qtquick3d_helpers/shaders/downsample.frag"
|
|
}
|
|
|
|
Shader {
|
|
id: blurVert
|
|
stage: Shader.Vertex
|
|
shader: "qrc:/qtquick3d_helpers/shaders/depthoffieldblur.vert"
|
|
}
|
|
Shader {
|
|
id: blurFrag
|
|
stage: Shader.Fragment
|
|
shader: "qrc:/qtquick3d_helpers/shaders/depthoffieldblur.frag"
|
|
}
|
|
|
|
Buffer {
|
|
id: downsampleBuffer
|
|
name: "downsampleBuffer"
|
|
format: Buffer.RGBA16F
|
|
textureFilterOperation: Buffer.Linear
|
|
textureCoordOperation: Buffer.ClampToEdge
|
|
sizeMultiplier: 0.5
|
|
}
|
|
|
|
passes: [
|
|
Pass {
|
|
shaders: [ downsampleVert, downsampleFrag ]
|
|
output: downsampleBuffer
|
|
},
|
|
Pass {
|
|
shaders: [ blurVert, blurFrag ]
|
|
commands: [
|
|
// INPUT is the texture for downsampleBuffer
|
|
BufferInput {
|
|
buffer: downsampleBuffer
|
|
},
|
|
// the actual input texture is exposed as sourceSampler
|
|
BufferInput {
|
|
sampler: "sourceSampler"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|