mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
qgsrenderpassquad: Do not create its own Qlayer
Homogenize the layer responsibility: it is handled outside the entity and then passed to it.
This commit is contained in:
parent
3b912d171c
commit
9d5363dc18
@ -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 );
|
||||
@ -29,4 +29,3 @@ QgsAmbientOcclusionBlurEntity::QgsAmbientOcclusionBlurEntity( Qt3DRender::QTextu
|
||||
mShader->setVertexShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( vertexShaderPath ) ) );
|
||||
mShader->setFragmentShaderCode( Qt3DRender::QShaderProgram::loadSource( QUrl( fragmentShaderPath ) ) );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 );
|
||||
|
@ -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 );
|
||||
|
@ -332,8 +332,9 @@ Qt3DRender::QFrameGraphNode *QgsFrameGraph::constructPostprocessingPass()
|
||||
|
||||
mRenderCapture = new Qt3DRender::QRenderCapture( mRenderCaptureTargetSelector );
|
||||
|
||||
mPostprocessingEntity = new QgsPostprocessingEntity( this, mRootEntity );
|
||||
mPostprocessPassLayerFilter->addLayer( mPostprocessingEntity->layer() );
|
||||
Qt3DRender::QLayer *postProcessingLayer = new Qt3DRender::QLayer();
|
||||
mPostprocessingEntity = new QgsPostprocessingEntity( this, postProcessingLayer, mRootEntity );
|
||||
mPostprocessPassLayerFilter->addLayer( postProcessingLayer );
|
||||
mPostprocessingEntity->setObjectName( "PostProcessingPassEntity" );
|
||||
|
||||
return mPostProcessingCameraSelector;
|
||||
@ -380,8 +381,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;
|
||||
}
|
||||
@ -427,8 +429,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;
|
||||
}
|
||||
|
@ -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() );
|
||||
|
@ -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
|
||||
|
@ -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 );
|
||||
@ -98,8 +98,5 @@ QgsRenderPassQuad::QgsRenderPassQuad( QNode *parent )
|
||||
|
||||
addComponent( mMaterial );
|
||||
|
||||
mLayer = new Qt3DRender::QLayer( this );
|
||||
mLayer->setRecursive( true );
|
||||
addComponent( mLayer );
|
||||
addComponent( layer );
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user