summaryrefslogtreecommitdiff
path: root/libs/hwui/ProgramCache.cpp
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2016-12-13 18:24:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-12-13 18:24:36 +0000
commita247df04267b97fc25adda30f0ad8e920e249153 (patch)
tree3af1a80c05b2833590d7aaf8f0f77b0f9ddb37ed /libs/hwui/ProgramCache.cpp
parentbe53bbba13accf2ea75383596aeb1e800c1e8421 (diff)
parenta0ed6f03f6f06eb41cbcc15c0a99b4a78fd91bef (diff)
Merge "Pre-multiply gradient colors the right way"
Diffstat (limited to 'libs/hwui/ProgramCache.cpp')
-rw-r--r--libs/hwui/ProgramCache.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp
index 0c2309faf4ea..2688ba484212 100644
--- a/libs/hwui/ProgramCache.cpp
+++ b/libs/hwui/ProgramCache.cpp
@@ -175,10 +175,11 @@ const char* gFS_Gradient_Functions =
const char* gFS_Gradient_Preamble[2] = {
// Linear framebuffer
"\nvec4 dither(const vec4 color) {\n"
- " return vec4(color.rgb + (triangleNoise(gl_FragCoord.xy * screenSize.xy) / 255.0), color.a);"
+ " return vec4(color.rgb + (triangleNoise(gl_FragCoord.xy * screenSize.xy) / 255.0), color.a);\n"
"}\n"
"\nvec4 gammaMix(const vec4 a, const vec4 b, float v) {\n"
- " return pow(mix(a, b, v), vec4(vec3(1.0 / 2.2), 1.0));"
+ " vec4 c = pow(mix(a, b, v), vec4(vec3(1.0 / 2.2), 1.0));\n"
+ " return vec4(c.rgb * c.a, c.a);\n"
"}\n",
// sRGB framebuffer
"\nvec4 dither(const vec4 color) {\n"
@@ -186,7 +187,8 @@ const char* gFS_Gradient_Preamble[2] = {
" return vec4(dithered * dithered, color.a);\n"
"}\n"
"\nvec4 gammaMix(const vec4 a, const vec4 b, float v) {\n"
- " return mix(a, b, v);"
+ " vec4 c = mix(a, b, v);\n"
+ " return vec4(c.rgb * c.a, c.a);\n"
"}\n"
};