1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
// Copyright (C) 2019 Klaralvdalens Datakonsult AB (KDAB).
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import Qt3D.Core 2.9
import Qt3D.Render 2.9
RenderSurfaceSelector {
id: surfaceSelector
readonly property Layer layer: Layer {
recursive: true
}
property alias camera: cameraSelector.camera
property alias clearColor: clearBuffers.clearColor
property alias fbo : renderToFboSelector.target
Viewport {
normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
// 1st: render scene to texture
RenderTargetSelector {
id : renderToFboSelector
RenderStateSet {
renderStates: [
MultiSampleAntiAliasing {},
DepthTest {
depthFunction: DepthTest.Less
},
CullFace{
mode: CullFace.Back
}
]
ClearBuffers {
id: clearBuffers
buffers: ClearBuffers.ColorDepthBuffer
NoDraw {}
}
CameraSelector {
id: cameraSelector
LayerFilter {
layers: [layer]
filterMode: LayerFilter.DiscardAllMatchingLayers
TechniqueFilter {
RenderPassFilter {
matchAny: FilterKey { name: "pass"; value: 0 }
}
SortPolicy {
sortTypes: [SortPolicy.BackToFront]
RenderPassFilter {
matchAny: FilterKey { name: "pass"; value: 1 }
}
}
}
}
RenderStateSet {
renderStates: [
DepthTest {
depthFunction: DepthTest.Always
}
]
LayerFilter {
layers: [layer]
filterMode: LayerFilter.AcceptAnyMatchingLayers
TechniqueFilter {
RenderPassFilter {
matchAny: FilterKey { name: "pass"; value: 0 }
}
SortPolicy {
sortTypes: [SortPolicy.BackToFront]
RenderPassFilter {
matchAny: FilterKey { name: "pass"; value: 1 }
}
}
}
}
}
}
}
}
RenderStateSet {
renderStates: [
DepthTest {depthFunction: DepthTest.Always},
BlendEquation {},
BlendEquationArguments {
sourceRgb: BlendEquationArguments.One
sourceAlpha: BlendEquationArguments.One
destinationRgb: BlendEquationArguments.Zero
destinationAlpha: BlendEquationArguments.Zero
}
]
RenderPassFilter {
matchAny : FilterKey { name : "pass"; value : "final" }
}
}
}
}
|