DepthOfFieldHQBlur.qml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright (C) 2020 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
  3. import QtQuick
  4. import QtQuick3D
  5. Effect {
  6. readonly property TextureInput sourceSampler: TextureInput {
  7. texture: Texture {}
  8. }
  9. property real focusDistance: 600
  10. property real focusRange: 100
  11. property real blurAmount: 4
  12. Shader {
  13. id: downsampleVert
  14. stage: Shader.Vertex
  15. shader: "qrc:/qtquick3deffects/shaders/downsample.vert"
  16. }
  17. Shader {
  18. id: downsampleFrag
  19. stage: Shader.Fragment
  20. shader: "qrc:/qtquick3deffects/shaders/downsample.frag"
  21. }
  22. Shader {
  23. id: blurVert
  24. stage: Shader.Vertex
  25. shader: "qrc:/qtquick3deffects/shaders/depthoffieldblur.vert"
  26. }
  27. Shader {
  28. id: blurFrag
  29. stage: Shader.Fragment
  30. shader: "qrc:/qtquick3deffects/shaders/depthoffieldblur.frag"
  31. }
  32. Buffer {
  33. id: downsampleBuffer
  34. name: "downsampleBuffer"
  35. format: Buffer.RGBA8
  36. textureFilterOperation: Buffer.Linear
  37. textureCoordOperation: Buffer.ClampToEdge
  38. sizeMultiplier: 0.5
  39. }
  40. passes: [
  41. Pass {
  42. shaders: [ downsampleVert, downsampleFrag ]
  43. output: downsampleBuffer
  44. },
  45. Pass {
  46. shaders: [ blurVert, blurFrag ]
  47. commands: [
  48. // INPUT is the texture for downsampleBuffer
  49. BufferInput {
  50. buffer: downsampleBuffer
  51. },
  52. // the actual input texture is exposed as sourceSampler
  53. BufferInput {
  54. sampler: "sourceSampler"
  55. }
  56. ]
  57. }
  58. ]
  59. }