summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTopi Reinio <topi.reinio@qt.io>2019-06-17 10:42:21 +0200
committerTopi Reinio <topi.reinio@qt.io>2019-06-17 10:58:11 +0200
commitd48e15d235645cbd6b08cd5fc5eb7ae84678c1fe (patch)
treeed4510c2a3e37477c6a59e69c2d6f56e2b9762c9
parent614eddc31186a05bc37cfcb071caf9851ac1d010 (diff)
Doc: Update code samples in 'Qt 3D Render Framegraph' documentation
The code snippets were outdated, referring to QML properties that do not exist. In particular, the Deferred Rendering section contains code that was based on an example that's since moved into tests. Adapt the code to match the updates done to that example and also mention where it originates from. Task-number: QTBUG-73024 Change-Id: I9ec750d05f8e853e5614f33dadcbe44a0b42e356 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
-rw-r--r--src/doc/src/qt3drender-framegraph.qdoc128
1 files changed, 81 insertions, 47 deletions
diff --git a/src/doc/src/qt3drender-framegraph.qdoc b/src/doc/src/qt3drender-framegraph.qdoc
index a1fe7df94..2224a1c8d 100644
--- a/src/doc/src/qt3drender-framegraph.qdoc
+++ b/src/doc/src/qt3drender-framegraph.qdoc
@@ -182,7 +182,7 @@
\badcode
Viewport {
- rect: Qt.rect(0.0, 0.0, 1.0, 1.0)
+ normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
property alias camera: cameraSelector.camera
ClearBuffers {
@@ -221,7 +221,7 @@
\badcode
Viewport {
- rect: Qt.rect(0.0, 0.0, 1.0, 1.0)
+ normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
property alias camera: cameraSelector.camera
CameraSelector {
@@ -237,7 +237,7 @@
\badcode
CameraSelector {
Viewport {
- rect: Qt.rect(0.0, 0.0, 1.0, 1.0)
+ normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
@@ -259,7 +259,7 @@
\badcode
Viewport {
id: mainViewport
- rect: Qt.rect(0, 0, 1, 1)
+ normalizedRect: Qt.rect(0, 0, 1, 1)
property alias Camera: cameraSelectorTopLeftViewport.camera
property alias Camera: cameraSelectorTopRightViewport.camera
property alias Camera: cameraSelectorBottomLeftViewport.camera
@@ -271,25 +271,25 @@
Viewport {
id: topLeftViewport
- rect: Qt.rect(0, 0, 0.5, 0.5)
+ normalizedRect: Qt.rect(0, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopLeftViewport }
}
Viewport {
id: topRightViewport
- rect: Qt.rect(0.5, 0, 0.5, 0.5)
+ normalizedRect: Qt.rect(0.5, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopRightViewport }
}
Viewport {
id: bottomLeftViewport
- rect: Qt.rect(0, 0.5, 0.5, 0.5)
+ normalizedRect: Qt.rect(0, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomLeftViewport }
}
Viewport {
id: bottomRightViewport
- rect: Qt.rect(0.5, 0.5, 0.5, 0.5)
+ normalizedRect: Qt.rect(0.5, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomRightViewport }
}
}
@@ -404,48 +404,84 @@
many games due to the ability to use large numbers of dynamic lights at
the expense of additional GPU memory usage.
- \badcode
- Viewport {
- rect: Qt.rect(0.0, 0.0, 1.0, 1.0)
+\qml
+Viewport {
+ id: root
+ normalizedRect: Qt.rect(0.0, 0.0, 1.0, 1.0)
+
+ property GBuffer gBuffer
+ property alias camera: sceneCameraSelector.camera
+ property alias sceneLayer: sceneLayerFilter.layers
+ property alias screenQuadLayer: screenQuadLayerFilter.layers
- property alias gBuffer: gBufferTargetSelector.target
- property alias camera: sceneCameraSelector.camera
+ RenderSurfaceSelector {
- LayerFilter {
- layers: "scene"
+ CameraSelector {
+ id: sceneCameraSelector
- RenderTargetSelector {
+ // Fill G-Buffer
+ LayerFilter {
+ id: sceneLayerFilter
+ RenderTargetSelector {
id: gBufferTargetSelector
+ target: gBuffer
ClearBuffers {
- buffers: ClearBuffers.ColorDepthBuffer
-
- RenderPassFilter {
- id: geometryPass
- includes: Annotation { name: "pass"; value: "geometry" }
-
- CameraSelector {
- id: sceneCameraSelector
- }
- }
+ buffers: ClearBuffers.ColorDepthBuffer
+
+ RenderPassFilter {
+ id: geometryPass
+ matchAny: FilterKey {
+ name: "pass"
+ value: "geometry"
+ }
+ }
}
- }
- }
-
- LayerFilter {
- layers: "screenQuad"
-
- ClearBuffers {
- buffers: ClearBuffers.ColorDepthBuffer
-
- RenderPassFilter {
- id: finalPass
- includes: Annotation { name: "pass"; value: "final" }
- }
- }
- }
+ }
+ }
+
+ TechniqueFilter {
+ parameters: [
+ Parameter { name: "color"; value: gBuffer.color },
+ Parameter { name: "position"; value: gBuffer.position },
+ Parameter { name: "normal"; value: gBuffer.normal },
+ Parameter { name: "depth"; value: gBuffer.depth }
+ ]
+
+ RenderStateSet {
+ // Render FullScreen Quad
+ renderStates: [
+ BlendEquation { blendFunction: BlendEquation.Add },
+ BlendEquationArguments {
+ sourceRgb: BlendEquationArguments.SourceAlpha
+ destinationRgb: BlendEquationArguments.DestinationColor
+ }
+ ]
+
+ LayerFilter {
+ id: screenQuadLayerFilter
+ ClearBuffers {
+ buffers: ClearBuffers.ColorDepthBuffer
+ RenderPassFilter {
+ matchAny: FilterKey {
+ name: "pass"
+ value: "final"
+ }
+ parameters: Parameter {
+ name: "winSize"
+ value: Qt.size(1024, 768)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
- \endcode
+}
+\endqml
+
+ (Above code is adapted from \e {qt3d/tests/manual/deferred-renderer-qml}.)
Graphically, the resulting framegraph looks like:
@@ -456,22 +492,20 @@
\list
\li RenderView (1)
\list
+ \li Specify which camera should be used
\li Define a viewport that fills the whole screen
- \li Select all Entities that have a Layer component matching
- \c "scene"
+ \li Select all Entities for layer component sceneLayer
\li Set the \c gBuffer as the active render target
\li Clear the color and depth on the currently bound render target
(the \c gBuffer)
\li Select only Entities in the scene that have a Material and
Technique matching the annotations in the RenderPassFilter
- \li Specify which camera should be used
\endlist
\li RenderView (2)
\list
\li Define a viewport that fills the whole screen
- \li Select all Entities that have a Layer component matching
- \c "screenQuad"
+ \li Select all Entities for layer component screenQuadLayer
\li Clear the color and depth buffers on the currently bound
framebuffer (the screen)
\li Select only Entities in the scene that have a Material and