Title: [114552] trunk/Source/WebCore
Revision
114552
Author
[email protected]
Date
2012-04-18 13:34:42 -0700 (Wed, 18 Apr 2012)

Log Message

[Chromium] Solid color shader should use premultiplied alpha.
https://bugs.webkit.org/show_bug.cgi?id=84215

Patch by David Reveman <[email protected]> on 2012-04-18
Reviewed by Adrienne Walker.

For efficiency and consistency, expect premultiplied alpha in
solid color shader.

* platform/graphics/chromium/LayerRendererChromium.cpp:
(WebCore::LayerRendererChromium::drawDebugBorderQuad):
(WebCore::LayerRendererChromium::drawSolidColorQuad):
* platform/graphics/chromium/ShaderChromium.cpp:
(WebCore::FragmentShaderColor::getShaderString):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (114551 => 114552)


--- trunk/Source/WebCore/ChangeLog	2012-04-18 20:23:10 UTC (rev 114551)
+++ trunk/Source/WebCore/ChangeLog	2012-04-18 20:34:42 UTC (rev 114552)
@@ -1,3 +1,19 @@
+2012-04-18  David Reveman  <[email protected]>
+
+        [Chromium] Solid color shader should use premultiplied alpha.
+        https://bugs.webkit.org/show_bug.cgi?id=84215
+
+        Reviewed by Adrienne Walker.
+
+        For efficiency and consistency, expect premultiplied alpha in
+        solid color shader.
+
+        * platform/graphics/chromium/LayerRendererChromium.cpp:
+        (WebCore::LayerRendererChromium::drawDebugBorderQuad):
+        (WebCore::LayerRendererChromium::drawSolidColorQuad):
+        * platform/graphics/chromium/ShaderChromium.cpp:
+        (WebCore::FragmentShaderColor::getShaderString):
+
 2012-04-18  Alexey Proskuryakov  <[email protected]>
 
         [WK2] Sandbox violations prevent attaching files to gmail messages

Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (114551 => 114552)


--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp	2012-04-18 20:23:10 UTC (rev 114551)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp	2012-04-18 20:34:42 UTC (rev 114552)
@@ -535,8 +535,11 @@
     LayerRendererChromium::toGLMatrix(&glMatrix[0], projectionMatrix() * renderMatrix);
     GLC(context(), context()->uniformMatrix4fv(program->vertexShader().matrixLocation(), 1, false, &glMatrix[0]));
 
-    GLC(context(), context()->uniform4f(program->fragmentShader().colorLocation(), quad->color().red() / 255.0, quad->color().green() / 255.0, quad->color().blue() / 255.0, quad->color().alpha() / 255.0));
+    const Color& color = quad->color();
+    float alpha = color.alpha() / 255.0;
 
+    GLC(context(), context()->uniform4f(program->fragmentShader().colorLocation(), (color.red() / 255.0) * alpha, (color.green() / 255.0) * alpha, (color.blue() / 255.0) * alpha, alpha));
+
     GLC(context(), context()->lineWidth(quad->width()));
 
     // The indices for the line are stored in the same array as the triangle indices.
@@ -624,8 +627,9 @@
     tileTransform.translate(tileRect.x() + tileRect.width() / 2.0, tileRect.y() + tileRect.height() / 2.0);
 
     const Color& color = quad->color();
+    float alpha = color.alpha() / 255.0;
 
-    GLC(context(), context()->uniform4f(solidColorProgram->fragmentShader().colorLocation(), color.red() / 255.0, color.green() / 255.0, color.blue() / 255.0, color.alpha() / 255.0));
+    GLC(context(), context()->uniform4f(solidColorProgram->fragmentShader().colorLocation(), (color.red() / 255.0) * alpha, (color.green() / 255.0) * alpha, (color.blue() / 255.0) * alpha, alpha));
 
     float opacity = quad->opacity();
     drawTexturedQuad(tileTransform,

Modified: trunk/Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp (114551 => 114552)


--- trunk/Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp	2012-04-18 20:23:10 UTC (rev 114551)
+++ trunk/Source/WebCore/platform/graphics/chromium/ShaderChromium.cpp	2012-04-18 20:34:42 UTC (rev 114552)
@@ -720,7 +720,7 @@
         uniform vec4 color;
         void main()
         {
-            gl_FragColor = vec4(color.xyz * color.w, color.w);
+            gl_FragColor = color;
         }
     );
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to