QGIS API Documentation 4.1.0-Master (376402f9aeb)
Loading...
Searching...
No Matches
qgsforwardrenderview.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsforwardrenderview.h
3 --------------------------------------
4 Date : June 2024
5 Copyright : (C) 2024 by Benoit De Mezzo and (C) 2020 by Belgacem Nedjima
6 Email : benoit dot de dot mezzo at oslandia dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSFORWARDRENDERVIEW_H
17#define QGSFORWARDRENDERVIEW_H
18
20
21#define SIP_NO_FILE
22
23namespace Qt3DRender
24{
25 class QRenderSettings;
26 class QLayer;
27 class QSubtreeEnabler;
28 class QTexture2D;
29 class QCamera;
30 class QCameraSelector;
31 class QLayerFilter;
32 class QRenderTargetSelector;
33 class QRenderTarget;
34 class QClearBuffers;
35 class QFrustumCulling;
36 class QMultiSampleAntiAliasing;
37 class QRenderStateSet;
38 class QTexture2DMultisample;
39 class QDebugOverlay;
40} // namespace Qt3DRender
41
42
51{
52 public:
54 QgsForwardRenderView( const QString &viewName, Qt3DRender::QCamera *mainCamera );
55
57 Qt3DRender::QLayer *renderLayer() { return mRenderLayer; }
58
60 Qt3DRender::QLayer *transparentObjectLayer() { return mTransparentObjectsLayer; }
61
63 Qt3DRender::QLayer *backgroundLayer() { return mBackgroundLayer; }
64
66 void setClearColor( const QColor &clearColor );
67
69 bool isFrustumCullingEnabled() const { return mFrustumCullingEnabled; }
71 void setFrustumCullingEnabled( bool enabled );
72
74 void setDebugOverlayEnabled( bool enabled );
75
77 void setMsaaEnabled( bool enabled );
78
80 Qt3DRender::QRenderTargetSelector *renderTargetSelector() { return mRenderTargetSelector; }
81
83 Qt3DRender::QRenderTarget *regularRenderTarget() const { return mRegularRenderTarget; }
84
86 Qt3DRender::QRenderTarget *msaaRenderTarget() const { return mMsaaRenderTarget; }
87
88 void updateWindowResize( int width, int height ) override;
89
91 Qt3DRender::QTexture2D *depthTexture() const;
92
94 Qt3DRender::QTexture2D *colorTexture() const;
95
103 void addClipPlanes( int nrClipPlanes );
104
111 void removeClipPlanes();
112
113 private:
114 Qt3DRender::QCamera *mMainCamera = nullptr;
115
116 Qt3DRender::QCameraSelector *mMainCameraSelector = nullptr;
117 Qt3DRender::QLayerFilter *mLayerFilter = nullptr;
118 Qt3DRender::QRenderTargetSelector *mRenderTargetSelector = nullptr;
119
120 // clip planes render state
121 Qt3DRender::QRenderStateSet *mClipRenderStateSet = nullptr;
122
123 Qt3DRender::QLayer *mRenderLayer = nullptr;
124 Qt3DRender::QLayer *mTransparentObjectsLayer = nullptr;
125 Qt3DRender::QLayer *mBackgroundLayer = nullptr;
126 Qt3DRender::QClearBuffers *mClearBuffers = nullptr;
127 bool mFrustumCullingEnabled = true;
128 Qt3DRender::QFrustumCulling *mFrustumCulling = nullptr;
129 // Forward rendering pass texture related objects:
130 Qt3DRender::QTexture2D *mColorTexture = nullptr;
131 Qt3DRender::QTexture2D *mDepthTexture = nullptr;
132 // QDebugOverlay added in the forward pass
133 Qt3DRender::QDebugOverlay *mDebugOverlay = nullptr;
134 // MSAA
135 Qt3DRender::QMultiSampleAntiAliasing *mMsaaRenderState = nullptr;
136 Qt3DRender::QRenderTarget *mRegularRenderTarget = nullptr;
137 Qt3DRender::QRenderTarget *mMsaaRenderTarget = nullptr;
138 Qt3DRender::QTexture2DMultisample *mColorTextureMS = nullptr;
139 Qt3DRender::QTexture2DMultisample *mDepthTextureMS = nullptr;
140
141 int mCurrentWidth = 0;
142 int mCurrentHeight = 0;
143
147 void buildRenderPasses();
148
150 Qt3DRender::QRenderTarget *buildTextures();
151
153 Qt3DRender::QRenderTarget *buildMsaaTarget();
154};
155
156#endif // QGSFORWARDRENDERVIEW_H
QgsAbstractRenderView(const QString &viewName)
Constructor for QgsAbstractRenderView with the specified parent object.
Qt3DRender::QRenderTargetSelector * renderTargetSelector()
Returns current render target selector.
Qt3DRender::QLayer * renderLayer()
Returns a layer object used to indicate that the object is transparent.
void setClearColor(const QColor &clearColor)
Sets the clear color of the scene (background color).
Qt3DRender::QTexture2D * colorTexture() const
Returns forward color texture.
Qt3DRender::QLayer * transparentObjectLayer()
Returns a layer object used to indicate that the object is transparent.
void setDebugOverlayEnabled(bool enabled)
Sets whether debug overlay is enabled.
void setMsaaEnabled(bool enabled)
Sets whether multisample anti-aliasing (MSAA) is enabled.
void updateWindowResize(int width, int height) override
Called when 3D window is resized.
void setFrustumCullingEnabled(bool enabled)
Sets whether frustum culling is enabled.
bool isFrustumCullingEnabled() const
Returns whether frustum culling is enabled.
Qt3DRender::QTexture2D * depthTexture() const
Returns forward depth texture.
void addClipPlanes(int nrClipPlanes)
Setups nrClipPlanes clip planes in the forward pass to enable OpenGL clipping.
void removeClipPlanes()
Disables OpenGL clipping.
Qt3DRender::QRenderTarget * msaaRenderTarget() const
Returns the multisampled render target used as blit source when MSAA is enabled.
QgsForwardRenderView(const QString &viewName, Qt3DRender::QCamera *mainCamera)
Constructor with 3D scene camera.
Qt3DRender::QLayer * backgroundLayer()
Returns a layer object used for skybox and background gradient entities.
Qt3DRender::QRenderTarget * regularRenderTarget() const
Returns the regular (single-sample) render target used as blit destination and postprocessing input.