summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/rendererimpl')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp26
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h2
2 files changed, 16 insertions, 12 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
index a53a40a..bfd52d6 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
@@ -1409,17 +1409,21 @@ namespace render {
theTextScaleFactor = m_Camera->GetTextScaleFactor(
thePrepResult.GetLayerToPresentationViewport(),
thePrepResult.GetPresentationDesignDimensions());
- SClipPlane nearPlane;
- QT3DSMat33 theUpper33(m_Camera->m_GlobalTransform.getUpper3x3InverseTranspose());
-
- QT3DSVec3 dir(theUpper33.transform(QT3DSVec3(0, 0, -1)));
- dir.normalize();
- nearPlane.normal = dir;
- QT3DSVec3 theGlobalPos = m_Camera->GetGlobalPos() + m_Camera->m_ClipNear * dir;
- nearPlane.d = -(dir.dot(theGlobalPos));
- // the near plane's bbox edges are calculated in the clipping frustum's
- // constructor.
- m_ClippingFrustum = SClippingFrustum(m_ViewProjection, nearPlane);
+ if (m_Camera->m_EnableFrustumCulling) {
+ SClipPlane nearPlane;
+ QT3DSMat33 theUpper33(m_Camera->m_GlobalTransform.getUpper3x3InverseTranspose());
+
+ QT3DSVec3 dir(theUpper33.transform(QT3DSVec3(0, 0, -1)));
+ dir.normalize();
+ nearPlane.normal = dir;
+ QT3DSVec3 theGlobalPos = m_Camera->GetGlobalPos() + m_Camera->m_ClipNear * dir;
+ nearPlane.d = -(dir.dot(theGlobalPos));
+ // the near plane's bbox edges are calculated in the clipping frustum's
+ // constructor.
+ m_ClippingFrustum = SClippingFrustum(m_ViewProjection, nearPlane);
+ } else if (m_ClippingFrustum.hasValue()) {
+ m_ClippingFrustum.setEmpty();
+ }
} else {
m_ViewProjection = QT3DSMat44::createIdentity();
}
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
index 9cb53f8..1eb8766 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
@@ -270,7 +270,7 @@ namespace render {
TRenderableObjectList m_RenderedOpaqueObjects;
TRenderableObjectList m_RenderedTransparentObjects;
QT3DSMat44 m_ViewProjection;
- SClippingFrustum m_ClippingFrustum;
+ Option<SClippingFrustum> m_ClippingFrustum;
Option<SLayerRenderPreparationResult> m_LayerPrepResult;
// Widgets drawn at particular times during the rendering process
nvvector<IRenderWidget *> m_IRenderWidgets;