diff options
author | Tony Leinonen <tony.leinonen@qt.io> | 2020-10-13 12:12:56 +0300 |
---|---|---|
committer | Tony Leinonen <tony.leinonen@qt.io> | 2020-10-15 14:27:56 +0300 |
commit | f719f0c951b7d626fcce9ac8eaeeae76b9be9d31 (patch) | |
tree | 658b934ce59f40f85cff4cf43f6c0b8c74546443 /src/Authoring | |
parent | e676aafa1986f5f6592b53e39c198e13a77c4177 (diff) |
Handle editor preview depth prepass better
Editor now shows everything with depth prepass enabled.
Scene camera shows layers how depth prepass was set in their advanced
properties.
Task-number: QT3DS-4174
Change-Id: I93259fb26a4932b96729442d924e0685ee33562c
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring')
-rw-r--r-- | src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp b/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp index e261fda1..d24f1061 100644 --- a/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp +++ b/src/Authoring/Qt3DStudio/Render/StudioRendererTranslation.cpp @@ -2881,17 +2881,17 @@ void STranslation::Render(int inWidgetId, bool inDrawGuides, bool scenePreviewPa if (m_axisHelperEnabled) m_Context.GetRenderer().AddRenderWidget(*m_AxisHelperWidget); } - + QVector<bool> layerDepthPrepasses = {}; if (scenePreviewPass) { m_Context.GetRenderContext().SetViewport(GetPreviewViewport()); m_Context.SetSceneColor(Option<QT3DSVec4>()); - + } else { SLayer *child = m_Scene->m_FirstChild; do { + layerDepthPrepasses.append(child->m_Flags.IsLayerEnableDepthPrepass()); child->m_Flags.SetLayerEnableDepthPrepass(true); child = (SLayer *)child->m_NextSibling; } while (child); - } m_Scene->PrepareForRender(m_Context); @@ -3068,6 +3068,15 @@ void STranslation::Render(int inWidgetId, bool inDrawGuides, bool scenePreviewPa theRenderContext.SetDepthWriteEnabled( false ); m_Context.GetRenderer().RenderQuad( theDimensions, theVP, *m_PickBuffer ); }*/ + if (!scenePreviewPass) { + SLayer *child = m_Scene->m_FirstChild; + int childIndex = 0; + do { + child->m_Flags.SetLayerEnableDepthPrepass(layerDepthPrepasses.at(childIndex)); + child = (SLayer *)child->m_NextSibling; + ++childIndex; + } while (child); + } } } |