diff options
author | Robert Brock <robert.brock@kdab.com> | 2016-05-07 15:33:52 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-05-15 13:44:29 +0000 |
commit | c5cb6a4783818386bd205a380d17987c45b6d742 (patch) | |
tree | 8013d6362c0e9b73b50bb652c05060be70d2f86e /examples/qt3d/deferred-renderer-cpp | |
parent | 1ad96b73c227ddf8974a7353bdc602230d865359 (diff) |
Moved deferred-renderer-cpp example to manual test
Part of an examples cleanup
Change-Id: I3b95590bef2261b1a4701b9b3fc35e9e909a0283
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples/qt3d/deferred-renderer-cpp')
-rw-r--r-- | examples/qt3d/deferred-renderer-cpp/deferredrenderer.cpp | 100 | ||||
-rw-r--r-- | examples/qt3d/deferred-renderer-cpp/deferredrenderer.h | 87 | ||||
-rw-r--r-- | examples/qt3d/deferred-renderer-cpp/main.cpp | 199 |
3 files changed, 0 insertions, 386 deletions
diff --git a/examples/qt3d/deferred-renderer-cpp/deferredrenderer.cpp b/examples/qt3d/deferred-renderer-cpp/deferredrenderer.cpp deleted file mode 100644 index 391240108..000000000 --- a/examples/qt3d/deferred-renderer-cpp/deferredrenderer.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "deferredrenderer.h" - - -DeferredRenderer::DeferredRenderer(Qt3DCore::QNode *parent) - : Qt3DRender::QViewport(parent) - , m_surfaceSelector(new Qt3DRender::QRenderSurfaceSelector(this)) - , m_sceneFilter(new Qt3DRender::QLayerFilter(m_surfaceSelector)) - , m_screenQuadFilter(new Qt3DRender::QLayerFilter(m_surfaceSelector)) - , m_clearScreenQuad(new Qt3DRender::QClearBuffers(m_screenQuadFilter)) - , m_gBufferTargetSelector(new Qt3DRender::QRenderTargetSelector(m_sceneFilter)) - , m_clearGBuffer(new Qt3DRender::QClearBuffers(m_gBufferTargetSelector)) - , m_geometryPassFilter(new Qt3DRender::QRenderPassFilter(m_clearGBuffer)) - , m_finalPassFilter(new Qt3DRender::QRenderPassFilter(m_clearScreenQuad)) - , m_sceneCameraSelector(new Qt3DRender::QCameraSelector(m_geometryPassFilter)) -{ - m_clearGBuffer->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer); - m_clearScreenQuad->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer); -} - -void DeferredRenderer::setSceneCamera(Qt3DCore::QEntity *camera) -{ - m_sceneCameraSelector->setCamera(camera); -} - -void DeferredRenderer::setGBuffer(Qt3DRender::QRenderTarget *gBuffer) -{ - m_gBufferTargetSelector->setTarget(gBuffer); -} - -void DeferredRenderer::setGeometryPassCriteria(QList<Qt3DRender::QFilterKey *> criteria) -{ - Q_FOREACH (Qt3DRender::QFilterKey *c, criteria) - m_geometryPassFilter->addMatch(c); -} - -void DeferredRenderer::setFinalPassCriteria(QList<Qt3DRender::QFilterKey *> criteria) -{ - Q_FOREACH (Qt3DRender::QFilterKey *c, criteria) - c->setParent(m_finalPassFilter); -} - -void DeferredRenderer::setGBufferLayer(Qt3DRender::QLayer *layer) -{ - m_sceneFilter->addLayer(layer); -} - -void DeferredRenderer::setScreenQuadLayer(Qt3DRender::QLayer *layer) -{ - m_screenQuadFilter->addLayer(layer); -} diff --git a/examples/qt3d/deferred-renderer-cpp/deferredrenderer.h b/examples/qt3d/deferred-renderer-cpp/deferredrenderer.h deleted file mode 100644 index 85044838a..000000000 --- a/examples/qt3d/deferred-renderer-cpp/deferredrenderer.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef DEFERREDRENDERER_H -#define DEFERREDRENDERER_H - -#include <Qt3DRender/QViewport> -#include <Qt3DRender/QClearBuffers> -#include <Qt3DRender/QLayerFilter> -#include <Qt3DRender/QRenderPassFilter> -#include <Qt3DRender/QRenderTargetSelector> -#include <Qt3DRender/QRenderSurfaceSelector> -#include <Qt3DRender/QCameraSelector> -#include <Qt3DRender/QFilterKey> - -class DeferredRenderer : public Qt3DRender::QViewport -{ -public: - explicit DeferredRenderer(Qt3DCore::QNode *parent = 0); - - void setSceneCamera(Qt3DCore::QEntity *camera); - void setGBuffer(Qt3DRender::QRenderTarget *gBuffer); - void setGeometryPassCriteria(QList<Qt3DRender::QFilterKey *> criteria); - void setFinalPassCriteria(QList<Qt3DRender::QFilterKey *> criteria); - void setGBufferLayer(Qt3DRender::QLayer *layer); - void setScreenQuadLayer(Qt3DRender::QLayer *layer); - -private: - Qt3DRender::QRenderSurfaceSelector *m_surfaceSelector; - Qt3DRender::QLayerFilter *m_sceneFilter; - Qt3DRender::QLayerFilter *m_screenQuadFilter; - Qt3DRender::QClearBuffers *m_clearScreenQuad; - Qt3DRender::QRenderTargetSelector *m_gBufferTargetSelector; - Qt3DRender::QClearBuffers *m_clearGBuffer; - Qt3DRender::QRenderPassFilter *m_geometryPassFilter; - Qt3DRender::QRenderPassFilter *m_finalPassFilter; - Qt3DRender::QCameraSelector *m_sceneCameraSelector; -}; - -#endif // DEFERREDRENDERER_H diff --git a/examples/qt3d/deferred-renderer-cpp/main.cpp b/examples/qt3d/deferred-renderer-cpp/main.cpp deleted file mode 100644 index 53caaaae5..000000000 --- a/examples/qt3d/deferred-renderer-cpp/main.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt3D module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <Qt3DCore/QEntity> - -#include <Qt3DRender/QMaterial> -#include <Qt3DExtras//QSphereMesh> -#include <Qt3DExtras//QPlaneMesh> -#include <Qt3DRender/QLayer> -#include <Qt3DRender/QParameter> -#include <Qt3DRender/QCamera> -#include <Qt3DRender/QCameraLens> -#include <Qt3DCore/QTransform> -#include <Qt3DRender/QPointLight> -#include <Qt3DCore/qaspectengine.h> - -#include <QGuiApplication> - -#include "gbuffer.h" -#include "deferredrenderer.h" -#include "finaleffect.h" -#include "sceneeffect.h" -#include "pointlightblock.h" -#include <Qt3DExtras/qt3dwindow.h> -#include <Qt3DExtras/qfirstpersoncameracontroller.h> - - -int main(int ac, char **av) -{ - QGuiApplication app(ac, av); - - Qt3DExtras::Qt3DWindow view; - - // Root entity - Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity(); - rootEntity->setObjectName(QStringLiteral("rootEntity")); - - // Shared Components - GBuffer *gBuffer = new GBuffer(); - FinalEffect *finalEffect = new FinalEffect(); - SceneEffect *sceneEffect = new SceneEffect(); - - Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh(); - sphereMesh->setRings(50); - sphereMesh->setSlices(100); - - Qt3DRender::QLayer *sceneLayer = new Qt3DRender::QLayer(); - Qt3DRender::QLayer *quadLayer = new Qt3DRender::QLayer(); - - Qt3DExtras::QPlaneMesh *planeMesh = new Qt3DExtras::QPlaneMesh(); - planeMesh->setMeshResolution(QSize(2, 2)); - planeMesh->setWidth(2.0f); - planeMesh->setHeight(2.0f); - - Qt3DRender::QPointLight *light1 = new Qt3DRender::QPointLight(); - light1->setColor(Qt::white); - light1->setIntensity(1.5f); - - rootEntity->addComponent(light1); - - // Scene Camera - Qt3DRender::QCamera *camera = view.camera(); - - camera->setFieldOfView(45.0f); - camera->setNearPlane(0.01f); - camera->setFarPlane(1000.0f); - camera->setProjectionType(Qt3DRender::QCameraLens::PerspectiveProjection); - - camera->setPosition(QVector3D(10.0f, 10.0f, -25.0f)); - camera->setUpVector(QVector3D(0.0f, 1.0f, 0.0f)); - camera->setViewCenter(QVector3D(0.0f, 0.0f, 10.0f)); - - // For camera controls - Qt3DExtras::QFirstPersonCameraController *camController = new Qt3DExtras::QFirstPersonCameraController(rootEntity); - camController->setCamera(camera); - - // FrameGraph - DeferredRenderer *deferredRenderer = new DeferredRenderer(); - deferredRenderer->setNormalizedRect(QRectF(0.0f, 0.0f, 1.0f, 1.0f)); - deferredRenderer->setFinalPassCriteria(finalEffect->passCriteria()); - deferredRenderer->setGeometryPassCriteria(sceneEffect->passCriteria()); - deferredRenderer->setGBuffer(gBuffer); - deferredRenderer->setSceneCamera(camera); - deferredRenderer->setGBufferLayer(sceneLayer); - deferredRenderer->setScreenQuadLayer(quadLayer); - view.setActiveFrameGraph(deferredRenderer); - - // Scene Content - Qt3DCore::QEntity *sphereOne = new Qt3DCore::QEntity(rootEntity); - Qt3DRender::QMaterial *sphereOneMaterial = new Qt3DRender::QMaterial(); - - sphereOneMaterial->setEffect(sceneEffect); - sphereOneMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("meshColor"), QColor(Qt::blue))); - - Qt3DCore::QTransform *sphereOneTransform = new Qt3DCore::QTransform; - sphereOneTransform->setTranslation(QVector3D(-10.0f, 0.0f, 25.0f)); - - Qt3DRender::QPointLight *light2 = new Qt3DRender::QPointLight(); - light2->setColor(Qt::white); - light2->setIntensity(1.5f); - - sphereOne->addComponent(sphereOneTransform); - sphereOne->addComponent(sphereOneMaterial); - sphereOne->addComponent(sphereMesh); - sphereOne->addComponent(sceneLayer); - sphereOne->addComponent(light2); - - Qt3DCore::QEntity *sphereTwo = new Qt3DCore::QEntity(rootEntity); - Qt3DRender::QMaterial *sphereTwoMaterial = new Qt3DRender::QMaterial(); - sphereTwoMaterial->setEffect(sceneEffect); - sphereTwoMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("meshColor"), QColor(Qt::yellow))); - - Qt3DRender::QPointLight *light3 = new Qt3DRender::QPointLight(); - light3->setColor(Qt::blue); - light3->setIntensity(0.5f); - - sphereTwo->addComponent(sphereMesh); - sphereTwo->addComponent(sceneLayer); - sphereTwo->addComponent(sphereTwoMaterial); - sphereTwo->addComponent(light3); - - // Screen Quad - Qt3DCore::QEntity *screenQuad = new Qt3DCore::QEntity(rootEntity); - Qt3DRender::QMaterial *screenQuadMaterial = new Qt3DRender::QMaterial(); - screenQuadMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("position"), gBuffer->positionTexture())); - screenQuadMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("normal"), gBuffer->normalTexture())); - screenQuadMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("color"), gBuffer->colorTexture())); - screenQuadMaterial->addParameter(new Qt3DRender::QParameter(QStringLiteral("winSize"), QSize(1024, 1024))); - PointLightBlock *lightsData = new PointLightBlock(screenQuadMaterial); - lightsData->addLight(light1); - lightsData->addLight(light2); - lightsData->addLight(light3); - - finalEffect->gl3Technique()->addParameter(new Qt3DRender::QParameter(QStringLiteral("PointLightBlock"), QVariant::fromValue(lightsData))); - finalEffect->gl2Technique()->addParameter(new Qt3DRender::QParameter(QStringLiteral("pointLights"), QVariant::fromValue(lightsData))); - screenQuadMaterial->setEffect(finalEffect); - - Qt3DCore::QTransform *screenPlaneTransform = new Qt3DCore::QTransform; - screenPlaneTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 90.0f)); - - screenQuad->addComponent(quadLayer); - screenQuad->addComponent(screenPlaneTransform); - screenQuad->addComponent(screenQuadMaterial); - screenQuad->addComponent(planeMesh); - - // Set root object of the scene - view.setRootEntity(rootEntity); - // Show window - view.show(); - - return app.exec(); -} |