diff options
Diffstat (limited to 'src/runtimerender/rendererimpl')
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp | 18 | ||||
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp | 1 |
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( |