@@ -90,7 +90,17 @@ Qt3DRender::QFrameGraphNode *QgsShadowRenderingFrameGraph::constructForwardRende
90
90
mForwardClearBuffers ->setBuffers ( Qt3DRender::QClearBuffers::ColorDepthBuffer );
91
91
mForwardClearBuffers ->setClearDepthValue ( 1 .0f );
92
92
93
- mFrustumCulling = new Qt3DRender::QFrustumCulling ( mForwardClearBuffers );
93
+ Qt3DRender::QRenderStateSet *forwaredRenderStateSet = new Qt3DRender::QRenderStateSet ( mForwardClearBuffers );
94
+
95
+ Qt3DRender::QDepthTest *depthTest = new Qt3DRender::QDepthTest;
96
+ depthTest->setDepthFunction ( Qt3DRender::QDepthTest::Less );
97
+ forwaredRenderStateSet->addRenderState ( depthTest );
98
+
99
+ Qt3DRender::QCullFace *cullFace = new Qt3DRender::QCullFace;
100
+ cullFace->setMode ( Qt3DRender::QCullFace::CullingMode::Back );
101
+ forwaredRenderStateSet->addRenderState ( cullFace );
102
+
103
+ mFrustumCulling = new Qt3DRender::QFrustumCulling ( forwaredRenderStateSet );
94
104
95
105
return mMainCameraSelector ;
96
106
}
@@ -133,7 +143,7 @@ Qt3DRender::QFrameGraphNode *QgsShadowRenderingFrameGraph::constructShadowRender
133
143
mShadowRenderStateSet ->addRenderState ( shadowDepthTest );
134
144
135
145
Qt3DRender::QCullFace *shadowCullFace = new Qt3DRender::QCullFace;
136
- shadowCullFace->setMode ( Qt3DRender::QCullFace::NoCulling );
146
+ shadowCullFace->setMode ( Qt3DRender::QCullFace::CullingMode::Front );
137
147
mShadowRenderStateSet ->addRenderState ( shadowCullFace );
138
148
139
149
return mLightCameraSelectorShadowPass ;
@@ -142,7 +152,7 @@ Qt3DRender::QFrameGraphNode *QgsShadowRenderingFrameGraph::constructShadowRender
142
152
Qt3DRender::QFrameGraphNode *QgsShadowRenderingFrameGraph::constructPostprocessingPass ()
143
153
{
144
154
mPostProcessingCameraSelector = new Qt3DRender::QCameraSelector;
145
- mPostProcessingCameraSelector ->setCamera ( mMainCamera );
155
+ mPostProcessingCameraSelector ->setCamera ( mLightCamera );
146
156
147
157
mPostprocessPassLayerFilter = new Qt3DRender::QLayerFilter ( mPostProcessingCameraSelector );
148
158
mPostprocessPassLayerFilter ->addLayer ( mPostprocessPassLayer );
@@ -419,7 +429,11 @@ void calculateViewExtent( Qt3DRender::QCamera *camera, float shadowRenderingDist
419
429
QVector3D ( 0 .0f , 0 .0f , depth ),
420
430
QVector3D ( 0 .0f , 1 .0f , depth ),
421
431
QVector3D ( 1 .0f , 0 .0f , depth ),
422
- QVector3D ( 1 .0f , 1 .0f , depth )
432
+ QVector3D ( 1 .0f , 1 .0f , depth ),
433
+ QVector3D ( 0 .0f , 0 .0f , 0 ),
434
+ QVector3D ( 0 .0f , 1 .0f , 0 ),
435
+ QVector3D ( 1 .0f , 0 .0f , 0 ),
436
+ QVector3D ( 1 .0f , 1 .0f , 0 )
423
437
};
424
438
maxX = std::numeric_limits<float >::lowest ();
425
439
maxY = std::numeric_limits<float >::lowest ();
0 commit comments