summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/rendererimpl')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp18
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp1
2 files changed, 16 insertions, 3 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();
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
index a3d3fab..eb560aa 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
@@ -2399,7 +2399,6 @@ namespace render {
fragmentGenerator.Append("void main() {");
fragmentGenerator.Append("\tvec2 theCoords = uv_coords;\n");
fragmentGenerator.Append("\tvec4 theLayerTexture = texture2D( layer_image, theCoords );\n");
- fragmentGenerator.Append("\tif( theLayerTexture.a == 0.0 ) discard;\n");
fragmentGenerator.Append("\tfragOutput = theLayerTexture;\n");
fragmentGenerator.Append("}");
NVRenderShaderProgram *theShader = GetProgramGenerator().CompileGeneratedShader(