20#include <Qt3DRender/QCamera> 
   21#include <Qt3DRender/QRenderSurfaceSelector> 
   22#include <Qt3DRender/QViewport> 
   23#include <Qt3DRender/QCameraSelector> 
   24#include <Qt3DRender/QLayerFilter> 
   25#include <Qt3DRender/QLayer> 
   26#include <Qt3DRender/QRenderTargetSelector> 
   27#include <Qt3DRender/QRenderTarget> 
   28#include <Qt3DRender/QTexture> 
   29#include <Qt3DRender/QClearBuffers> 
   30#include <Qt3DRender/QParameter> 
   31#include <Qt3DRender/QFrustumCulling> 
   32#include <Qt3DRender/QRenderStateSet> 
   33#include <Qt3DRender/QDepthTest> 
   34#include <Qt3DRender/QCullFace> 
   35#include <Qt3DRender/QPolygonOffset> 
   36#include <Qt3DRender/qsubtreeenabler.h> 
   41  mLightCamera = 
new Qt3DRender::QCamera;
 
   42  mLightCamera->setObjectName( 
mViewName + 
"::LightCamera" );
 
   43  mEntityCastingShadowsLayer = 
new Qt3DRender::QLayer;
 
   44  mEntityCastingShadowsLayer->setRecursive( 
true );
 
   45  mEntityCastingShadowsLayer->setObjectName( 
mViewName + 
"::Layer" );
 
 
   54  mLayerFilter->setEnabled( enable );
 
 
   57Qt3DRender::QRenderTarget *QgsShadowRenderView::buildTextures()
 
   59  mMapTexture = 
new Qt3DRender::QTexture2D;
 
   60  mMapTexture->setWidth( mDefaultMapResolution );
 
   61  mMapTexture->setHeight( mDefaultMapResolution );
 
   62  mMapTexture->setFormat( Qt3DRender::QTexture2D::TextureFormat::DepthFormat );
 
   63  mMapTexture->setGenerateMipMaps( 
false );
 
   64  mMapTexture->setMagnificationFilter( Qt3DRender::QTexture2D::Linear );
 
   65  mMapTexture->setMinificationFilter( Qt3DRender::QTexture2D::Linear );
 
   66  mMapTexture->wrapMode()->setX( Qt3DRender::QTextureWrapMode::ClampToEdge );
 
   67  mMapTexture->wrapMode()->setY( Qt3DRender::QTextureWrapMode::ClampToEdge );
 
   68  mMapTexture->setObjectName( 
mViewName + 
"::MapTexture" );
 
   70  Qt3DRender::QRenderTargetOutput *renderTargetOutput = 
new Qt3DRender::QRenderTargetOutput;
 
   71  renderTargetOutput->setAttachmentPoint( Qt3DRender::QRenderTargetOutput::Depth );
 
   72  renderTargetOutput->setTexture( mMapTexture );
 
   74  Qt3DRender::QRenderTarget *renderTarget = 
new Qt3DRender::QRenderTarget;
 
   75  renderTarget->setObjectName( 
mViewName + 
"::RenderTarget" );
 
   76  renderTarget->addOutput( renderTargetOutput );
 
   81void QgsShadowRenderView::buildRenderPass()
 
   84  Qt3DRender::QCameraSelector *lightCameraSelector = 
new Qt3DRender::QCameraSelector( 
mRendererEnabler );
 
   85  lightCameraSelector->setObjectName( 
mViewName + 
"::CameraSelector" );
 
   86  lightCameraSelector->setCamera( mLightCamera );
 
   88  mLayerFilter = 
new Qt3DRender::QLayerFilter( lightCameraSelector );
 
   89  mLayerFilter->addLayer( mEntityCastingShadowsLayer );
 
   91  Qt3DRender::QRenderTargetSelector *renderTargetSelector = 
new Qt3DRender::QRenderTargetSelector( mLayerFilter );
 
   93  Qt3DRender::QClearBuffers *clearBuffers = 
new Qt3DRender::QClearBuffers( renderTargetSelector );
 
   94  clearBuffers->setBuffers( Qt3DRender::QClearBuffers::BufferType::ColorDepthBuffer );
 
   95  clearBuffers->setClearColor( QColor::fromRgbF( 0.0f, 1.0f, 0.0f ) );
 
   97  Qt3DRender::QRenderStateSet *renderStateSet = 
new Qt3DRender::QRenderStateSet( clearBuffers );
 
   99  Qt3DRender::QDepthTest *depthTest = 
new Qt3DRender::QDepthTest;
 
  100  depthTest->setDepthFunction( Qt3DRender::QDepthTest::Less );
 
  101  renderStateSet->addRenderState( depthTest );
 
  103  Qt3DRender::QCullFace *cullFace = 
new Qt3DRender::QCullFace;
 
  104  cullFace->setMode( Qt3DRender::QCullFace::CullingMode::Front );
 
  105  renderStateSet->addRenderState( cullFace );
 
  107  Qt3DRender::QPolygonOffset *polygonOffset = 
new Qt3DRender::QPolygonOffset;
 
  108  polygonOffset->setDepthSteps( 4.0 );
 
  109  polygonOffset->setScaleFactor( 1.1 );
 
  110  renderStateSet->addRenderState( polygonOffset );
 
  113  Qt3DRender::QRenderTarget *renderTarget = buildTextures();
 
  115  renderTargetSelector->setTarget( renderTarget );
 
  120  return mEntityCastingShadowsLayer;
 
 
  126  mMapTexture->setSize( width, height );
 
 
Base class for 3D render view.
 
Qt3DRender::QSubtreeEnabler * mRendererEnabler
 
virtual void setEnabled(bool enable)
Enable or disable via enable the render view sub tree.
 
Qt3DRender::QLayer * entityCastingShadowsLayer() const
Returns the layer to be used by entities to be included in this renderview.
 
void setMapSize(int width, int height)
Update shadow depth texture size.
 
virtual void setEnabled(bool enable) override
Enable or disable via enable the renderview sub tree.
 
QgsShadowRenderView(const QString &viewName)
Default constructor.
 
Qt3DRender::QTexture2D * mapTexture() const
Returns shadow depth texture.