summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp4
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp6
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(),