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-04 14:54:05 +00:00
|
|
|
|
2014-09-11 09:23:21 +00:00
|
|
|
#ifndef DEFERREDRENDERER_H
|
|
|
|
#define DEFERREDRENDERER_H
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2015-10-18 08:58:19 +00:00
|
|
|
#include <Qt3DRender/QViewport>
|
2016-03-16 22:41:28 +00:00
|
|
|
#include <Qt3DRender/QClearBuffers>
|
2015-10-18 08:58:19 +00:00
|
|
|
#include <Qt3DRender/QLayerFilter>
|
|
|
|
#include <Qt3DRender/QRenderPassFilter>
|
|
|
|
#include <Qt3DRender/QRenderTargetSelector>
|
2016-02-26 17:21:20 +00:00
|
|
|
#include <Qt3DRender/QRenderSurfaceSelector>
|
2015-10-18 08:58:19 +00:00
|
|
|
#include <Qt3DRender/QCameraSelector>
|
2016-03-03 11:57:38 +00:00
|
|
|
#include <Qt3DRender/QFilterKey>
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2016-06-02 12:28:56 +00:00
|
|
|
class GBuffer;
|
|
|
|
|
2015-08-31 14:14:17 +00:00
|
|
|
class DeferredRenderer : public Qt3DRender::QViewport
|
2014-09-04 14:54:05 +00:00
|
|
|
{
|
2014-09-11 09:23:21 +00:00
|
|
|
public:
|
2015-10-12 19:45:19 +00:00
|
|
|
explicit DeferredRenderer(Qt3DCore::QNode *parent = 0);
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2015-10-12 19:45:19 +00:00
|
|
|
void setSceneCamera(Qt3DCore::QEntity *camera);
|
2015-08-31 14:14:17 +00:00
|
|
|
void setGBuffer(Qt3DRender::QRenderTarget *gBuffer);
|
2016-03-03 11:57:38 +00:00
|
|
|
void setGeometryPassCriteria(QList<Qt3DRender::QFilterKey *> criteria);
|
|
|
|
void setFinalPassCriteria(QList<Qt3DRender::QFilterKey *> criteria);
|
2016-05-04 10:23:32 +00:00
|
|
|
void setGBufferLayer(Qt3DRender::QLayer *layer);
|
|
|
|
void setScreenQuadLayer(Qt3DRender::QLayer *layer);
|
2016-06-02 12:28:56 +00:00
|
|
|
void setSurface(QWindow *surface);
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2014-09-11 09:23:21 +00:00
|
|
|
private:
|
2016-02-26 17:21:20 +00:00
|
|
|
Qt3DRender::QRenderSurfaceSelector *m_surfaceSelector;
|
2015-08-31 14:14:17 +00:00
|
|
|
Qt3DRender::QLayerFilter *m_sceneFilter;
|
|
|
|
Qt3DRender::QLayerFilter *m_screenQuadFilter;
|
2016-03-16 22:41:28 +00:00
|
|
|
Qt3DRender::QClearBuffers *m_clearScreenQuad;
|
2015-08-31 14:14:17 +00:00
|
|
|
Qt3DRender::QRenderTargetSelector *m_gBufferTargetSelector;
|
2016-03-16 22:41:28 +00:00
|
|
|
Qt3DRender::QClearBuffers *m_clearGBuffer;
|
2015-08-31 14:14:17 +00:00
|
|
|
Qt3DRender::QRenderPassFilter *m_geometryPassFilter;
|
|
|
|
Qt3DRender::QRenderPassFilter *m_finalPassFilter;
|
|
|
|
Qt3DRender::QCameraSelector *m_sceneCameraSelector;
|
2016-08-08 07:19:54 +00:00
|
|
|
Qt3DRender::QParameter *m_winSize;
|
2016-06-02 12:28:56 +00:00
|
|
|
GBuffer *m_gBuffer;
|
2016-08-08 07:19:54 +00:00
|
|
|
QWindow *m_window;
|
|
|
|
|
|
|
|
QMetaObject::Connection m_widthChangedConnection;
|
|
|
|
QMetaObject::Connection m_heightChangedConnection;
|
2014-09-11 09:23:21 +00:00
|
|
|
};
|
2014-09-04 14:54:05 +00:00
|
|
|
|
2014-09-11 09:23:21 +00:00
|
|
|
#endif // DEFERREDRENDERER_H
|