summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
index 362a602..43934b1 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
@@ -1490,8 +1490,15 @@ namespace render {
theRenderContext, &NVRenderContext::GetViewport, &NVRenderContext::SetViewport,
theNewViewport);
QT3DSVec4 clearColor(0.0f);
- if (m_Layer.m_Background == LayerBackground::Color)
+ if (m_Layer.m_Background == LayerBackground::Color) {
clearColor = m_Layer.m_ClearColor;
+ // Framebuffer holds premultiplied colors so the clearcolor must be premultiplied
+ if (clearColor.w < 1.0f) {
+ clearColor.x *= clearColor.w;
+ clearColor.y *= clearColor.w;
+ clearColor.z *= clearColor.w;
+ }
+ }
NVRenderContextScopedProperty<QT3DSVec4> __clearColor(
theRenderContext, &NVRenderContext::GetClearColor, &NVRenderContext::SetClearColor,
@@ -1776,9 +1783,16 @@ namespace render {
theContext.SetScissorRect(
m_LayerPrepResult->GetLayerToPresentationScissorRect().ToIntegerRect());
if (m_Layer.m_Background == LayerBackground::Color) {
+ QT3DSVec4 clearColor = m_Layer.m_ClearColor;
+ // Framebuffer holds premultiplied colors so the clearcolor must be premultiplied
+ if (clearColor.w < 1.0f) {
+ clearColor.x *= clearColor.w;
+ clearColor.y *= clearColor.w;
+ clearColor.z *= clearColor.w;
+ }
NVRenderContextScopedProperty<QT3DSVec4> __clearColor(
theContext, &NVRenderContext::GetClearColor, &NVRenderContext::SetClearColor,
- m_Layer.m_ClearColor);
+ clearColor);
theContext.Clear(NVRenderClearValues::Color);
}
RenderToViewport();