summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-06-27 16:32:49 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-06-27 16:32:49 +0200
commitd75030a620274bc450f7d11edc02efab2bbf7f4e (patch)
treea06b7b199b8fa99105610c1844584c4bbc006fcf /src
parent08bcfc398d51e0e23783a4f02623e5b27e675092 (diff)
parentd48e15d235645cbd6b08cd5fc5eb7ae84678c1fe (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts: .qmake.conf Change-Id: Iae5fa92dfdf8012315c043e20950368e42451e20
Diffstat (limited to 'src')
-rw-r--r--src/doc/src/qt3drender-framegraph.qdoc128
-rw-r--r--src/extras/defaults/qforwardrenderer.cpp9
-rw-r--r--src/render/geometry/qbuffer.cpp24
-rw-r--r--src/render/lights/qabstractlight.cpp25
4 files changed, 137 insertions, 49 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
diff --git a/src/extras/defaults/qforwardrenderer.cpp b/src/extras/defaults/qforwardrenderer.cpp
index 7548c45c6..5bf206ede 100644
--- a/src/extras/defaults/qforwardrenderer.cpp
+++ b/src/extras/defaults/qforwardrenderer.cpp
@@ -280,11 +280,18 @@ QObject *QForwardRenderer::surface() const
}
/*!
+ \qmlproperty QSize ForwardRenderer::externalRenderTargetSize
+
+ Contains the size of the external render target. External render
+ targets are relevant when rendering does not target a window
+ surface (as set in \l {surface}).
+*/
+/*!
\property QForwardRenderer::externalRenderTargetSize
Contains the size of the external render target. External render
targets are relevant when rendering does not target a window
- surface (as set in \l {QForwardRenderer::surface()}{surface()}).
+ surface (as set in \l {surface}).
*/
QSize QForwardRenderer::externalRenderTargetSize() const
{
diff --git a/src/render/geometry/qbuffer.cpp b/src/render/geometry/qbuffer.cpp
index fe065929d..e0574a4c5 100644
--- a/src/render/geometry/qbuffer.cpp
+++ b/src/render/geometry/qbuffer.cpp
@@ -117,6 +117,12 @@ QBufferPrivate::QBufferPrivate()
*/
/*!
+ * \fn void Qt3DRender::QBuffer::dataAvailable()
+ *
+ * This signal is emitted when data becomes available.
+ */
+
+/*!
\class Qt3DRender::QBufferDataGenerator
\inmodule Qt3DRender
@@ -252,6 +258,17 @@ QBufferPrivate::QBufferPrivate()
*/
/*!
+ * \enum QBuffer::AccessType
+ *
+ * \value Write
+ * Write access
+ * \value Read
+ * Read access
+ * \value ReadWrite
+ * Write|Read
+ */
+
+/*!
* \typedef Qt3DRender::QBufferDataGeneratorPtr
* \relates Qt3DRender::QBuffer
*/
@@ -443,6 +460,13 @@ bool QBuffer::isSyncData() const
return d->m_syncData;
}
+/*!
+ * \property Qt3DRender::QBuffer::accessType
+ *
+ * Returns the \l {QBuffer::}{AccessType} of the buffer.
+ *
+ * \sa QBuffer::AccessType
+ */
QBuffer::AccessType QBuffer::accessType() const
{
Q_D(const QBuffer);
diff --git a/src/render/lights/qabstractlight.cpp b/src/render/lights/qabstractlight.cpp
index e5376f712..5ad16d3b4 100644
--- a/src/render/lights/qabstractlight.cpp
+++ b/src/render/lights/qabstractlight.cpp
@@ -67,9 +67,22 @@ QAbstractLightPrivate::~QAbstractLightPrivate()
}
/*!
+ \qmlproperty enumeration Qt3D.Render::Light::type
+ \readonly
+
+ Holds the particular type of light.
+
+ \value Light.PointLight
+ A point light
+ \value Light.DirectionalLight
+ A directional light
+ \value Light.SpotLight
+ a spot light
+*/
+/*!
\property Qt3DRender::QAbstractLight::type
- Contains the type of light.
+ The type of light.
*/
/*!
\enum Qt3DRender::QAbstractLight::Type
@@ -118,6 +131,11 @@ QAbstractLight::Type QAbstractLight::type() const
}
/*!
+ * \qmlproperty QColor Qt3D.Render.Light::color
+ *
+ * Holds the current Light color.
+ */
+/*!
* \property Qt3DRender::QAbstractLight::color
*
* Holds the current QAbstractLight color.
@@ -138,6 +156,11 @@ void QAbstractLight::setColor(const QColor &c)
}
/*!
+ \qmlproperty float Qt3D.Render.Light::intensity
+
+ Holds the current Light intensity.
+*/
+/*!
\property Qt3DRender::QAbstractLight::intensity
Holds the current QAbstractLight intensity.