diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-02-14 12:35:45 +0200 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-02-14 12:46:56 +0200 |
commit | dd818e3bcf64669dd49235f1b9e634c8f24f4808 (patch) | |
tree | a96d0acf0eb1f6d6d9478808322b55c86ca5f69b | |
parent | 7ee97f3489bb1cba4095e58d4aa5241de772dc7b (diff) |
Fix rendering after stereoscopic mode switch
When stereoscopic mode is changed, mark layerdata dirty.
This fixes at least presentations with temporalAA on.
Task-number: QT3DS-4067
Change-Id: I99afda71f56e81d1a9b67ba1e2c882b9b33c97ee
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp | 7 | ||||
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp index 821a0b8..9c1da26 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp @@ -155,6 +155,7 @@ namespace render { , m_FeaturesDirty(true) , m_FeatureSetHash(0) , m_TooManyLightsError(false) + , m_StereoMode(StereoModes::Mono) { } @@ -1333,6 +1334,12 @@ namespace render { m_Renderer.PrepareImageForIbl(*m_Layer.m_LightProbe); wasDataDirty = true; } + if (m_StereoMode != thePrepResult.getStereoMode()) { + // When stereo mode changes we need to mark data dirty + // for e.g. temporalAA to render correctly. + m_StereoMode = thePrepResult.getStereoMode(); + wasDataDirty = true; + } bool lightProbeValid = HasValidLightProbe(m_Layer.m_LightProbe); diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h index 8b1463a..376749e 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h @@ -296,6 +296,7 @@ namespace render { bool m_FeaturesDirty; size_t m_FeatureSetHash; bool m_TooManyLightsError; + StereoModes::Enum m_StereoMode; // shadow mapps NVScopedRefCounted<Qt3DSShadowMap> m_ShadowMapManager; |