Skip to content

Commit

Permalink
Merge pull request #58474 from benoitdm-oslandia/fix/prepare_renderview
Browse files Browse the repository at this point in the history
Fix/prepare renderview
  • Loading branch information
troopa81 authored Aug 28, 2024
2 parents 9a3809d + 72b8584 commit 18ab826
Show file tree
Hide file tree
Showing 19 changed files with 123 additions and 101 deletions.
5 changes: 2 additions & 3 deletions src/3d/qgsambientocclusionblurentity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

#include <Qt3DRender/QParameter>

QgsAmbientOcclusionBlurEntity::QgsAmbientOcclusionBlurEntity( Qt3DRender::QTexture2D *texture, QNode *parent )
: QgsRenderPassQuad( parent )
QgsAmbientOcclusionBlurEntity::QgsAmbientOcclusionBlurEntity( Qt3DRender::QTexture2D *texture, Qt3DRender::QLayer *layer, QNode *parent )
: QgsRenderPassQuad( layer, parent )
{
mAmbientOcclusionFactorTextureParameter = new Qt3DRender::QParameter( QStringLiteral( "texture" ), texture );
mMaterial->addParameter( mAmbientOcclusionFactorTextureParameter );
Expand All @@ -29,4 +29,3 @@ QgsAmbientOcclusionBlurEntity::QgsAmbientOcclusionBlurEntity( Qt3DRender::QTextu
mShader->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( vertexShaderPath ) ) );
mShader->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( fragmentShaderPath ) ) );
}

2 changes: 1 addition & 1 deletion src/3d/qgsambientocclusionblurentity.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class QgsAmbientOcclusionBlurEntity : public QgsRenderPassQuad
Q_OBJECT
public:
//! Constructor
QgsAmbientOcclusionBlurEntity( Qt3DRender::QTexture2D *texture, QNode *parent = nullptr );
QgsAmbientOcclusionBlurEntity( Qt3DRender::QTexture2D *texture, Qt3DRender::QLayer *layer, QNode *parent = nullptr );
private:
Qt3DRender::QParameter *mAmbientOcclusionFactorTextureParameter = nullptr;
};
Expand Down
4 changes: 2 additions & 2 deletions src/3d/qgsambientocclusionrenderentity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

#include <Qt3DRender/QParameter>

QgsAmbientOcclusionRenderEntity::QgsAmbientOcclusionRenderEntity( Qt3DRender::QTexture2D *depthTexture, Qt3DRender::QCamera *camera, QNode *parent )
: QgsRenderPassQuad( parent )
QgsAmbientOcclusionRenderEntity::QgsAmbientOcclusionRenderEntity( Qt3DRender::QTexture2D *depthTexture, Qt3DRender::QLayer *layer, Qt3DRender::QCamera *camera, QNode *parent )
: QgsRenderPassQuad( layer, parent )
{
mDepthTextureParameter = new Qt3DRender::QParameter( QStringLiteral( "depthTexture" ), depthTexture );
mMaterial->addParameter( mDepthTextureParameter );
Expand Down
2 changes: 1 addition & 1 deletion src/3d/qgsambientocclusionrenderentity.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class QgsAmbientOcclusionRenderEntity : public QgsRenderPassQuad
Q_OBJECT
public:
//! Constructor
QgsAmbientOcclusionRenderEntity( Qt3DRender::QTexture2D *depthTexture, Qt3DRender::QCamera *camera, QNode *parent = nullptr );
QgsAmbientOcclusionRenderEntity( Qt3DRender::QTexture2D *depthTexture, Qt3DRender::QLayer *layer, Qt3DRender::QCamera *camera, QNode *parent = nullptr );

//! Sets the intensity for the ambient occlusion effect
void setIntensity( float intensity );
Expand Down
98 changes: 59 additions & 39 deletions src/3d/qgsframegraph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,7 @@ typedef Qt3DCore::QGeometry Qt3DQGeometry;
#include <Qt3DExtras/QTextureMaterial>
#include <Qt3DRender/QAbstractTexture>
#include "qgsfgutils.h"


Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructTexturesPreviewPass()
{
mPreviewLayerFilter = new Qt3DRender::QLayerFilter;
mPreviewLayerFilter->addLayer( mPreviewLayer );

mPreviewRenderStateSet = new Qt3DRender::QRenderStateSet( mPreviewLayerFilter );
mPreviewDepthTest = new Qt3DRender::QDepthTest;
mPreviewDepthTest->setDepthFunction( Qt3DRender::QDepthTest::Always );
mPreviewRenderStateSet->addRenderState( mPreviewDepthTest );
mPreviewCullFace = new Qt3DRender::QCullFace;
mPreviewCullFace->setMode( Qt3DRender::QCullFace::NoCulling );
mPreviewRenderStateSet->addRenderState( mPreviewCullFace );

return mPreviewLayerFilter;
}
#include <Qt3DRender/QNoDraw>

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructForwardRenderPass()
{
Expand Down Expand Up @@ -279,18 +263,57 @@ Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructShadowRenderPass()
return mLightCameraSelectorShadowPass;
}

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructPostprocessingPass()
Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructSubPostPassForTexturesPreview()
{
Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter;
layerFilter->setObjectName( "Sub pass TexturesPreview" );
layerFilter->addLayer( mPreviewLayer );

Qt3DRender::QRenderStateSet *renderStateSet = new Qt3DRender::QRenderStateSet( layerFilter );
Qt3DRender::QDepthTest *depthTest = new Qt3DRender::QDepthTest;
depthTest->setDepthFunction( Qt3DRender::QDepthTest::Always );
renderStateSet->addRenderState( depthTest );
Qt3DRender::QCullFace *cullFace = new Qt3DRender::QCullFace;
cullFace->setMode( Qt3DRender::QCullFace::NoCulling );
renderStateSet->addRenderState( cullFace );

return layerFilter;
}

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructSubPostPassForProcessing()
{
mPostProcessingCameraSelector = new Qt3DRender::QCameraSelector;
mPostProcessingCameraSelector->setObjectName( "Postprocessing pass CameraSelector" );
mPostProcessingCameraSelector->setCamera( mLightCamera );
Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector;
cameraSelector->setObjectName( "Sub pass Postprocessing" );
cameraSelector->setCamera( mLightCamera );

mPostprocessPassLayerFilter = new Qt3DRender::QLayerFilter( mPostProcessingCameraSelector );
Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter( cameraSelector );

mPostprocessClearBuffers = new Qt3DRender::QClearBuffers( mPostprocessPassLayerFilter );
// could be the first of this branch
new Qt3DRender::QClearBuffers( layerFilter );

mRenderCaptureTargetSelector = new Qt3DRender::QRenderTargetSelector( mPostprocessClearBuffers );
mRenderCaptureTargetSelector->setObjectName( "Postprocessing pass RenderTargetSelector" );
Qt3DRender::QLayer *postProcessingLayer = new Qt3DRender::QLayer();
mPostprocessingEntity = new QgsPostprocessingEntity( this, postProcessingLayer, mRootEntity );
layerFilter->addLayer( postProcessingLayer );
mPostprocessingEntity->setObjectName( "PostProcessingPassEntity" );

return cameraSelector;
}

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructSubPostPassForRenderCapture()
{
Qt3DRender::QFrameGraphNode *top = new Qt3DRender::QNoDraw;
top->setObjectName( "Sub pass RenderCapture" );

mRenderCapture = new Qt3DRender::QRenderCapture( top );

return top;
}

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructPostprocessingPass()
{
mRenderCaptureTargetSelector = new Qt3DRender::QRenderTargetSelector;
mRenderCaptureTargetSelector->setObjectName( "Postprocessing render pass" );
mRenderCaptureTargetSelector->setEnabled( mRenderCaptureEnabled );

Qt3DRender::QRenderTarget *renderTarget = new Qt3DRender::QRenderTarget( mRenderCaptureTargetSelector );

Expand Down Expand Up @@ -330,13 +353,12 @@ Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructPostprocessingPass()

mRenderCaptureTargetSelector->setTarget( renderTarget );

mRenderCapture = new Qt3DRender::QRenderCapture( mRenderCaptureTargetSelector );
// sub passes:
constructSubPostPassForProcessing()->setParent( mRenderCaptureTargetSelector );
constructSubPostPassForTexturesPreview()->setParent( mRenderCaptureTargetSelector );
constructSubPostPassForRenderCapture()->setParent( mRenderCaptureTargetSelector );

mPostprocessingEntity = new QgsPostprocessingEntity( this, mRootEntity );
mPostprocessPassLayerFilter->addLayer( mPostprocessingEntity->layer() );
mPostprocessingEntity->setObjectName( "PostProcessingPassEntity" );

return mPostProcessingCameraSelector;
return mRenderCaptureTargetSelector;
}

Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructAmbientOcclusionRenderPass()
Expand Down Expand Up @@ -380,8 +402,9 @@ Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructAmbientOcclusionRenderPass(

mAmbientOcclusionRenderCaptureTargetSelector->setTarget( colorRenderTarget );

mAmbientOcclusionRenderEntity = new QgsAmbientOcclusionRenderEntity( mForwardDepthTexture, mMainCamera, mRootEntity );
mAmbientOcclusionRenderLayerFilter->addLayer( mAmbientOcclusionRenderEntity->layer() );
Qt3DRender::QLayer *ambientOcclusionRenderLayer = new Qt3DRender::QLayer();
mAmbientOcclusionRenderEntity = new QgsAmbientOcclusionRenderEntity( mForwardDepthTexture, ambientOcclusionRenderLayer, mMainCamera, mRootEntity );
mAmbientOcclusionRenderLayerFilter->addLayer( ambientOcclusionRenderLayer );

return mAmbientOcclusionRenderCameraSelector;
}
Expand Down Expand Up @@ -427,8 +450,9 @@ Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructAmbientOcclusionBlurPass()

mAmbientOcclusionBlurRenderCaptureTargetSelector->setTarget( depthRenderTarget );

mAmbientOcclusionBlurEntity = new QgsAmbientOcclusionBlurEntity( mAmbientOcclusionRenderTexture, mRootEntity );
mAmbientOcclusionBlurLayerFilter->addLayer( mAmbientOcclusionBlurEntity->layer() );
Qt3DRender::QLayer *ambientOcclusionBlurLayer = new Qt3DRender::QLayer();
mAmbientOcclusionBlurEntity = new QgsAmbientOcclusionBlurEntity( mAmbientOcclusionRenderTexture, ambientOcclusionBlurLayer, mRootEntity );
mAmbientOcclusionBlurLayerFilter->addLayer( ambientOcclusionBlurLayer );

return mAmbientOcclusionBlurCameraSelector;
}
Expand Down Expand Up @@ -689,10 +713,6 @@ QgsFrameGraph::QgsFrameGraph( QSurface *surface, QSize s, Qt3DRender::QCamera *m
mRubberBandsRootEntity->setObjectName( "mRubberBandsRootEntity" );
mRubberBandsRootEntity->addComponent( mRubberBandsLayer );

// textures preview pass
Qt3DRender::QFrameGraphNode *previewPass = constructTexturesPreviewPass();
previewPass->setParent( mMainViewPort );

Qt3DRender::QParameter *depthMapIsDepthParam = new Qt3DRender::QParameter( "isDepth", true );
Qt3DRender::QParameter *shadowMapIsDepthParam = new Qt3DRender::QParameter( "isDepth", true );

Expand Down
22 changes: 8 additions & 14 deletions src/3d/qgsframegraph.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ class QgsFrameGraph : public Qt3DCore::QEntity
// calculating real 3D points from mouse coordinates (for zoom, rotation, drag..)
// Depth buffer render pass branch nodes:
Qt3DRender::QCameraSelector *mDepthRenderCameraSelector = nullptr;
Qt3DRender::QRenderStateSet *mDepthRenderStateSet = nullptr;;
Qt3DRender::QRenderStateSet *mDepthRenderStateSet = nullptr;
Qt3DRender::QLayerFilter *mDepthRenderLayerFilter = nullptr;
Qt3DRender::QRenderTargetSelector *mDepthRenderCaptureTargetSelector = nullptr;
Qt3DRender::QRenderCapture *mDepthRenderCapture = nullptr;
Expand All @@ -265,9 +265,6 @@ class QgsFrameGraph : public Qt3DCore::QEntity
Qt3DRender::QTexture2D *mDepthRenderCaptureColorTexture = nullptr;

// Post processing pass branch nodes:
Qt3DRender::QCameraSelector *mPostProcessingCameraSelector = nullptr;
Qt3DRender::QLayerFilter *mPostprocessPassLayerFilter = nullptr;
Qt3DRender::QClearBuffers *mPostprocessClearBuffers = nullptr;
Qt3DRender::QRenderTargetSelector *mRenderCaptureTargetSelector = nullptr;
Qt3DRender::QRenderCapture *mRenderCapture = nullptr;
// Post processing pass texture related objects:
Expand All @@ -276,15 +273,15 @@ class QgsFrameGraph : public Qt3DCore::QEntity

// Ambient occlusion factor generation pass
Qt3DRender::QCameraSelector *mAmbientOcclusionRenderCameraSelector = nullptr;
Qt3DRender::QRenderStateSet *mAmbientOcclusionRenderStateSet = nullptr;;
Qt3DRender::QRenderStateSet *mAmbientOcclusionRenderStateSet = nullptr;
Qt3DRender::QLayerFilter *mAmbientOcclusionRenderLayerFilter = nullptr;
Qt3DRender::QRenderTargetSelector *mAmbientOcclusionRenderCaptureTargetSelector = nullptr;
// Ambient occlusion factor generation pass texture related objects:
Qt3DRender::QTexture2D *mAmbientOcclusionRenderTexture = nullptr;

// Ambient occlusion factor blur pass
Qt3DRender::QCameraSelector *mAmbientOcclusionBlurCameraSelector = nullptr;
Qt3DRender::QRenderStateSet *mAmbientOcclusionBlurStateSet = nullptr;;
Qt3DRender::QRenderStateSet *mAmbientOcclusionBlurStateSet = nullptr;
Qt3DRender::QLayerFilter *mAmbientOcclusionBlurLayerFilter = nullptr;
Qt3DRender::QRenderTargetSelector *mAmbientOcclusionBlurRenderCaptureTargetSelector = nullptr;
// Ambient occlusion factor blur pass texture related objects:
Expand All @@ -296,12 +293,6 @@ class QgsFrameGraph : public Qt3DCore::QEntity
Qt3DRender::QRenderStateSet *mRubberBandsStateSet = nullptr;
Qt3DRender::QRenderTargetSelector *mRubberBandsRenderTargetSelector = nullptr;

// Texture preview:
Qt3DRender::QLayerFilter *mPreviewLayerFilter = nullptr;
Qt3DRender::QRenderStateSet *mPreviewRenderStateSet = nullptr;
Qt3DRender::QDepthTest *mPreviewDepthTest = nullptr;
Qt3DRender::QCullFace *mPreviewCullFace = nullptr;

bool mShadowRenderingEnabled = false;
float mShadowBias = 0.00001f;
int mShadowMapResolution = 2048;
Expand Down Expand Up @@ -344,16 +335,19 @@ class QgsFrameGraph : public Qt3DCore::QEntity

Qt3DRender::QFrameGraphNode *constructShadowRenderPass();
Qt3DRender::QFrameGraphNode *constructForwardRenderPass();
Qt3DRender::QFrameGraphNode *constructTexturesPreviewPass();
Qt3DRender::QFrameGraphNode *constructPostprocessingPass();
Qt3DRender::QFrameGraphNode *constructDepthRenderPass();
Qt3DRender::QFrameGraphNode *constructAmbientOcclusionRenderPass();
Qt3DRender::QFrameGraphNode *constructAmbientOcclusionBlurPass();
Qt3DRender::QFrameGraphNode *constructRubberBandsPass();

Qt3DRender::QFrameGraphNode *constructSubPostPassForProcessing();
Qt3DRender::QFrameGraphNode *constructSubPostPassForRenderCapture();
Qt3DRender::QFrameGraphNode *constructSubPostPassForTexturesPreview();

Qt3DCore::QEntity *constructDepthRenderQuad();

bool mRenderCaptureEnabled = true;
bool mRenderCaptureEnabled = false;

Q_DISABLE_COPY( QgsFrameGraph )
};
Expand Down
4 changes: 2 additions & 2 deletions src/3d/qgspostprocessingentity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ typedef Qt3DCore::QGeometry Qt3DQGeometry;

#include "qgsframegraph.h"

QgsPostprocessingEntity::QgsPostprocessingEntity( QgsFrameGraph *frameGraph, QNode *parent )
: QgsRenderPassQuad( parent )
QgsPostprocessingEntity::QgsPostprocessingEntity( QgsFrameGraph *frameGraph, Qt3DRender::QLayer *layer, QNode *parent )
: QgsRenderPassQuad( layer, parent )
, mFrameGraph( frameGraph )
{
mColorTextureParameter = new Qt3DRender::QParameter( QStringLiteral( "colorTexture" ), frameGraph->forwardRenderColorTexture() );
Expand Down
2 changes: 1 addition & 1 deletion src/3d/qgspostprocessingentity.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class QgsPostprocessingEntity : public QgsRenderPassQuad

public:
//! Constructor
QgsPostprocessingEntity( QgsFrameGraph *frameGraph, QNode *parent = nullptr );
QgsPostprocessingEntity( QgsFrameGraph *frameGraph, Qt3DRender::QLayer *layer, QNode *parent = nullptr );
//! Sets the parts of the scene where objects cast shadows
void setupShadowRenderingExtent( float minX, float maxX, float minZ, float maxZ );
//! Sets up a directional light that is used to render shadows
Expand Down
7 changes: 2 additions & 5 deletions src/3d/qgsrenderpassquad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ typedef Qt3DCore::QGeometry Qt3DQGeometry;
#include <QUrl>
#include <QVector3D>

QgsRenderPassQuad::QgsRenderPassQuad( QNode *parent )
QgsRenderPassQuad::QgsRenderPassQuad( Qt3DRender::QLayer *layer, QNode *parent )
: Qt3DCore::QEntity( parent )
{
Qt3DQGeometry *geom = new Qt3DQGeometry( this );
Expand Down Expand Up @@ -98,8 +98,5 @@ QgsRenderPassQuad::QgsRenderPassQuad( QNode *parent )

addComponent( mMaterial );

mLayer = new Qt3DRender::QLayer( this );
mLayer->setRecursive( true );
addComponent( mLayer );
addComponent( layer );
}

5 changes: 1 addition & 4 deletions src/3d/qgsrenderpassquad.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,11 @@ class QgsRenderPassQuad : public Qt3DCore::QEntity
Q_OBJECT
public:
//! Constructor
QgsRenderPassQuad( QNode *parent = nullptr );
QgsRenderPassQuad( Qt3DRender::QLayer *layer, QNode *parent = nullptr );

//! Returns the layer object used to select this entity for rendering in a specific rendering pass
Qt3DRender::QLayer *layer() { return mLayer; }
protected:
Qt3DRender::QMaterial *mMaterial = nullptr;
Qt3DRender::QShaderProgram *mShader = nullptr;
Qt3DRender::QLayer *mLayer = nullptr;
};

#endif // QGSRENDERPASSQUAD_H
1 change: 0 additions & 1 deletion src/3d/qgswindow3dengine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ QgsWindow3DEngine::QgsWindow3DEngine( Qgs3DMapCanvas *parent )
mMapCanvas3D->setRootEntity( mRoot );

mFrameGraph = new QgsFrameGraph( mMapCanvas3D, QSize( 1024, 768 ), mMapCanvas3D->camera(), mRoot );
mFrameGraph->setRenderCaptureEnabled( false );
mMapCanvas3D->setActiveFrameGraph( mFrameGraph->frameGraphRoot() );

// force switching to no shadow rendering
Expand Down
34 changes: 24 additions & 10 deletions tests/src/3d/testqgs3drendering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1756,17 +1756,16 @@ void TestQgs3DRendering::testDebugMap()
mapSettings.setPathResolver( project.pathResolver() );
mapSettings.setMapThemeCollection( project.mapThemeCollection() );

QgsDemTerrainGenerator *demTerrain = new QgsDemTerrainGenerator();
demTerrain->setLayer( layerDtm );
mapSettings.setTerrainGenerator( demTerrain );
mapSettings.setTerrainVerticalScale( 3 );

QgsPointLightSettings defaultPointLight;
defaultPointLight.setPosition( QgsVector3D( 0, 400, 0 ) );
defaultPointLight.setConstantAttenuation( 0 );
QgsDirectionalLightSettings defaultPointLight;
mapSettings.setLightSources( {defaultPointLight.clone() } );
mapSettings.setOutputDpi( 92 );

QgsShadowSettings shadowSettings = mapSettings.shadowSettings();
shadowSettings.setRenderShadows( true );
shadowSettings.setSelectedDirectionalLight( 0 );
shadowSettings.setMaximumShadowRenderingDistance( 2500 );
mapSettings.setShadowSettings( shadowSettings );

// =========== creating Qgs3DMapScene
QPoint winSize = QPoint( 640, 480 ); // default window size

Expand All @@ -1776,23 +1775,38 @@ void TestQgs3DRendering::testDebugMap()
engine.setRootEntity( scene );

// =========== set camera position
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 1500, 40.0, -10.0 );
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 2000, 40.0, -10.0 );

// =========== activate debug depth map
mapSettings.setDebugDepthMapSettings( true, Qt::Corner::BottomRightCorner, 0.5 );

// force QT3D backend/frontend synchronization
{
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 2005, 40.0, -10.0 );
Qgs3DUtils::captureSceneImage( engine, scene );
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 2000, 40.0, -10.0 );
}

QImage img = Qgs3DUtils::captureSceneImage( engine, scene );
QGSVERIFYIMAGECHECK( "debug_map_1", "debug_map_1", img, QString(), 100, QSize( 0, 0 ), 15 );

#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) // shadows do not work for QT6 see: https://github.com/qgis/QGIS/issues/58184
// =========== activate debug shadow map
mapSettings.setDebugShadowMapSettings( true, Qt::Corner::TopLeftCorner, 0.5 );

// force QT3D backend/frontend synchronization
{
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 2005, 40.0, -10.0 );
Qgs3DUtils::captureSceneImage( engine, scene );
scene->cameraController()->setLookingAtPoint( QVector3D( 0, 0, 0 ), 2000, 40.0, -10.0 );
}

img = Qgs3DUtils::captureSceneImage( engine, scene );
QGSVERIFYIMAGECHECK( "debug_map_2", "debug_map_2", img, QString(), 100, QSize( 0, 0 ), 15 );
#endif

delete scene;
mapSettings.setLayers( {} );
demTerrain->deleteLater();
}

void TestQgs3DRendering::do3DSceneExport( int zoomLevelsCount, int expectedObjectCount, int maxFaceCount, Qgs3DMapScene *scene, QgsPolygon3DSymbol *symbol3d, QgsVectorLayer *layerPoly, QgsOffscreen3DEngine *engine )
Expand Down
Loading

0 comments on commit 18ab826

Please sign in to comment.