TiltShift.qml 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 focusPosition: 0.5 // 0 - 1
  10. property real focusWidth: 0.2 // 0 - 1
  11. property real blurAmount: 4 // 0 - 10
  12. property bool isVertical: false
  13. property bool isInverted: false
  14. Shader {
  15. id: downsampleVert
  16. stage: Shader.Vertex
  17. shader: "qrc:/qtquick3deffects/shaders/downsample.vert"
  18. }
  19. Shader {
  20. id: downsampleFrag
  21. stage: Shader.Fragment
  22. shader: "qrc:/qtquick3deffects/shaders/downsampletiltshift.frag"
  23. }
  24. Shader {
  25. id: blurVert
  26. stage: Shader.Vertex
  27. shader: "qrc:/qtquick3deffects/shaders/poissonblurtiltshift.vert"
  28. }
  29. Shader {
  30. id: blurFrag
  31. stage: Shader.Fragment
  32. shader: "qrc:/qtquick3deffects/shaders/poissonblurtiltshift.frag"
  33. }
  34. Buffer {
  35. id: downsampleBuffer
  36. name: "downsampleBuffer"
  37. format: Buffer.RGBA8
  38. textureFilterOperation: Buffer.Linear
  39. textureCoordOperation: Buffer.ClampToEdge
  40. bufferFlags: Buffer.None
  41. sizeMultiplier: 0.5
  42. }
  43. passes: [
  44. Pass {
  45. shaders: [ downsampleVert, downsampleFrag ]
  46. output: downsampleBuffer
  47. },
  48. Pass {
  49. shaders: [ blurVert, blurFrag ]
  50. commands: [
  51. // INPUT is the texture for downsampleBuffer
  52. BufferInput {
  53. buffer: downsampleBuffer
  54. },
  55. // the pass' input texture is exposed as sourceSampler
  56. BufferInput {
  57. sampler: "sourceSampler"
  58. }
  59. ]
  60. }
  61. ]
  62. }