diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-06-27 16:32:49 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-06-27 16:32:49 +0200 |
commit | d75030a620274bc450f7d11edc02efab2bbf7f4e (patch) | |
tree | a06b7b199b8fa99105610c1844584c4bbc006fcf /src | |
parent | 08bcfc398d51e0e23783a4f02623e5b27e675092 (diff) | |
parent | d48e15d235645cbd6b08cd5fc5eb7ae84678c1fe (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.qdoc | 128 | ||||
-rw-r--r-- | src/extras/defaults/qforwardrenderer.cpp | 9 | ||||
-rw-r--r-- | src/render/geometry/qbuffer.cpp | 24 | ||||
-rw-r--r-- | src/render/lights/qabstractlight.cpp | 25 |
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. |