diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp | 4 | ||||
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp index 0f08936..ea5a12f 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp @@ -874,7 +874,7 @@ namespace render { return; // Avoid running this method if possible. - if ((inEnableTransparentDepthWrite == false + if ((inEnableTransparentDepthWrite && ((m_GroupObjects.empty() && m_OpaqueObjects.empty() && m_TransparentObjects.empty()) || m_Layer.m_Flags.IsLayerEnableDepthPrepass() == false)) || m_Layer.m_Flags.IsLayerEnableDepthTest() == false) @@ -1165,7 +1165,6 @@ void SLayerRenderData::RunRenderPass(TRenderRenderableFunction inRenderFn, { QT3DS_PERF_SCOPED_TIMER(m_Renderer.GetQt3DSContext().GetPerfTimer(), "LayerRenderData: Render transparent pass1") - NVDataRef<SRenderableObject *> theTransparentObjects = GetTransparentRenderableObjects(); // Also draw opaque parts of transparent objects m_Renderer.setAlphaTest(true, 1.0f, -1.0f + (1.0f / 255.0f)); @@ -1189,6 +1188,7 @@ void SLayerRenderData::RunRenderPass(TRenderRenderableFunction inRenderFn, renderTransparentObjectsPass(inRenderFn, inEnableBlending, inEnableDepthWrite, inEnableTransparentDepthWrite, indexLight, inCamera, theFB); } + { QT3DS_PERF_SCOPED_TIMER(m_Renderer.GetQt3DSContext().GetPerfTimer(), "LayerRenderData: Render transparent pass3") diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp index dc1185c..26d2c71 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp @@ -298,7 +298,7 @@ namespace render { m_RenderedTransparentObjects.assign(m_TransparentObjects.begin(), m_TransparentObjects.end()); - if (!m_Layer.m_Flags.IsLayerEnableDepthTest()) { + if (m_Layer.m_Flags.IsLayerEnableDepthTest() == false) { m_RenderedTransparentObjects.insert(m_RenderedTransparentObjects.end(), m_OpaqueObjects.begin(), m_OpaqueObjects.end()); m_RenderedTransparentObjects.insert(m_RenderedTransparentObjects.end(), @@ -314,7 +314,11 @@ namespace render { SRenderableObject &theInfo = *m_RenderedTransparentObjects[idx]; QT3DSVec3 difference = theInfo.m_WorldCenterPoint - theCameraPosition; theInfo.m_CameraDistanceSq = difference.dot(theCameraDirection); + + if (m_Layer.m_Flags.IsLayerEnableDepthTest() == false) + theInfo.m_RenderableFlags.setAlphaTest(0); } + ForwardingAllocator alloc(m_Renderer.GetPerFrameAllocator(), "SortAllocations"); // render furthest to nearest. eastl::merge_sort(m_RenderedTransparentObjects.begin(), |