2022-06-08 12:47:24 +00:00
|
|
|
// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
|
2024-02-23 14:41:04 +00:00
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
#include <Qt3DCore/QEntity>
|
2015-01-20 14:16:21 +00:00
|
|
|
|
2015-10-18 08:58:19 +00:00
|
|
|
#include <Qt3DRender/QMaterial>
|
|
|
|
#include <Qt3DRender/QLayer>
|
|
|
|
#include <Qt3DRender/QParameter>
|
2016-01-15 14:09:44 +00:00
|
|
|
#include <Qt3DRender/QCamera>
|
|
|
|
#include <Qt3DRender/QCameraLens>
|
2014-09-11 09:23:21 +00:00
|
|
|
#include <Qt3DCore/QTransform>
|
2015-10-18 08:58:19 +00:00
|
|
|
#include <Qt3DRender/QPointLight>
|
2014-10-31 10:35:45 +00:00
|
|
|
#include <Qt3DCore/qaspectengine.h>
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
#include <QGuiApplication>
|
|
|
|
|
|
|
|
#include "gbuffer.h"
|
|
|
|
#include "deferredrenderer.h"
|
|
|
|
#include "finaleffect.h"
|
|
|
|
#include "sceneeffect.h"
|
2015-01-09 09:21:08 +00:00
|
|
|
#include "pointlightblock.h"
|
2016-06-02 12:28:56 +00:00
|
|
|
#include "sceneentity.h"
|
|
|
|
#include "screenquadentity.h"
|
|
|
|
|
2016-04-26 06:38:15 +00:00
|
|
|
#include <Qt3DExtras/qt3dwindow.h>
|
|
|
|
#include <Qt3DExtras/qfirstpersoncameracontroller.h>
|
2016-01-15 14:09:44 +00:00
|
|
|
|
2014-09-11 09:23:21 +00:00
|
|
|
int main(int ac, char **av)
|
|
|
|
{
|
|
|
|
QGuiApplication app(ac, av);
|
|
|
|
|
2016-04-26 06:38:15 +00:00
|
|
|
Qt3DExtras::Qt3DWindow view;
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
// Root entity
|
2015-10-12 19:45:19 +00:00
|
|
|
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
|
2014-09-11 09:23:21 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
// Scene Content
|
|
|
|
SceneEntity *sceneContent = new SceneEntity(rootEntity);
|
2014-09-11 09:23:21 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
// Screen Quad
|
|
|
|
ScreenQuadEntity *screenQuad = new ScreenQuadEntity(rootEntity);
|
2014-09-11 09:23:21 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
// Shared Components
|
|
|
|
Qt3DRender::QLayer *sceneLayer = sceneContent->layer();
|
|
|
|
Qt3DRender::QLayer *quadLayer = screenQuad->layer();
|
|
|
|
SceneEffect *sceneEffect = sceneContent->effect();
|
|
|
|
FinalEffect *finalEffect = screenQuad->effect();
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
// Scene Camera
|
2016-01-15 14:09:44 +00:00
|
|
|
Qt3DRender::QCamera *camera = view.camera();
|
2014-10-27 14:11:36 +00:00
|
|
|
camera->setFieldOfView(45.0f);
|
|
|
|
camera->setNearPlane(0.01f);
|
|
|
|
camera->setFarPlane(1000.0f);
|
2016-01-15 14:09:44 +00:00
|
|
|
camera->setProjectionType(Qt3DRender::QCameraLens::PerspectiveProjection);
|
2014-10-27 14:11:36 +00:00
|
|
|
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));
|
|
|
|
|
2016-01-15 14:09:44 +00:00
|
|
|
// For camera controls
|
2016-04-26 06:38:15 +00:00
|
|
|
Qt3DExtras::QFirstPersonCameraController *camController = new Qt3DExtras::QFirstPersonCameraController(rootEntity);
|
2016-01-15 14:09:44 +00:00
|
|
|
camController->setCamera(camera);
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
// FrameGraph
|
|
|
|
DeferredRenderer *deferredRenderer = new DeferredRenderer();
|
2016-02-24 15:15:53 +00:00
|
|
|
deferredRenderer->setNormalizedRect(QRectF(0.0f, 0.0f, 1.0f, 1.0f));
|
2014-09-11 09:23:21 +00:00
|
|
|
deferredRenderer->setFinalPassCriteria(finalEffect->passCriteria());
|
|
|
|
deferredRenderer->setGeometryPassCriteria(sceneEffect->passCriteria());
|
|
|
|
deferredRenderer->setSceneCamera(camera);
|
2016-05-04 10:23:32 +00:00
|
|
|
deferredRenderer->setGBufferLayer(sceneLayer);
|
|
|
|
deferredRenderer->setScreenQuadLayer(quadLayer);
|
2016-06-02 12:28:56 +00:00
|
|
|
deferredRenderer->setSurface(&view);
|
2014-09-11 09:23:21 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
view.setActiveFrameGraph(deferredRenderer);
|
2014-09-11 09:23:21 +00:00
|
|
|
|
|
|
|
// Set root object of the scene
|
2015-08-07 14:40:50 +00:00
|
|
|
view.setRootEntity(rootEntity);
|
2014-10-31 10:35:45 +00:00
|
|
|
// Show window
|
2014-09-11 09:23:21 +00:00
|
|
|
view.show();
|
|
|
|
|
|
|
|
return app.exec();
|
|
|
|
}
|