diff options
author | Romain Guy <romainguy@google.com> | 2010-07-30 19:18:16 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2010-07-30 19:18:16 -0700 |
commit | 06f96e2652e4855b6520ad9dd70583677605b79a (patch) | |
tree | 7d0e3709c8a400e264f37206eb27a286ee50d64b /libs/hwui/ProgramCache.cpp | |
parent | 42272759e4c3c406977187fd2b4df8739edccde8 (diff) |
Refactor Skia shaders handling.
With this change, Skia shaders can easily be applied to any mesh. This change also
supports ComposeShader. For instance, this can be used to blend a gradient and a
bitmap togehter and paint a string of text with the result.
Change-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea
Diffstat (limited to 'libs/hwui/ProgramCache.cpp')
-rw-r--r-- | libs/hwui/ProgramCache.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp index c9e2d2e6d423..23923f6c6a4a 100644 --- a/libs/hwui/ProgramCache.cpp +++ b/libs/hwui/ProgramCache.cpp @@ -106,9 +106,9 @@ const char* gFS_Main_FetchBitmap = const char* gFS_Main_FetchBitmapNpot = " vec4 bitmapColor = texture2D(bitmapSampler, wrap(outBitmapTexCoords));\n"; const char* gFS_Main_BlendShadersBG = - " fragColor = blendShaders(bitmapColor, gradientColor)"; -const char* gFS_Main_BlendShadersGB = " fragColor = blendShaders(gradientColor, bitmapColor)"; +const char* gFS_Main_BlendShadersGB = + " fragColor = blendShaders(bitmapColor, gradientColor)"; const char* gFS_Main_BlendShaders_Modulate = " * fragColor.a;\n"; const char* gFS_Main_GradientShader_Modulate = @@ -144,23 +144,23 @@ const char* gPorterDuff[12] = { // Dst "return dst;\n", // SrcOver - "return vec4(src.rgb + (1.0 - src.a) * dst.rgb, src.a + dst.a - src.a * dst.a);\n", + "return src + dst * (1.0 - src.a);\n", // DstOver - "return vec4(dst.rgb + (1.0 - dst.a) * src.rgb, src.a + dst.a - src.a * dst.a);\n", + "return dst + src * (1.0 - dst.a);\n", // SrcIn - "return vec4(src.rgb * dst.a, src.a * dst.a);\n", + "return src * dst.a;\n", // DstIn - "return vec4(dst.rgb * src.a, src.a * dst.a);\n", + "return dst * src.a;\n", // SrcOut - "return vec4(src.rgb * (1.0 - dst.a), src.a * (1.0 - dst.a));\n", + "return src * (1.0 - dst.a);\n", // DstOut - "return vec4(dst.rgb * (1.0 - src.a), dst.a * (1.0 - src.a));\n", + "return dst * (1.0 - src.a);\n", // SrcAtop "return vec4(src.rgb * dst.a + (1.0 - src.a) * dst.rgb, dst.a);\n", // DstAtop "return vec4(dst.rgb * src.a + (1.0 - dst.a) * src.rgb, src.a);\n", // Xor - "return vec4(src.rgb * (1.0 - dst.a) + (1.0 - src.a) * dst.rgb, " + "return vec4(src.rgb * (1.0 - dst.a) + (1.0 - src.a) * dst.rgb, 1.0, " "src.a + dst.a - 2.0 * src.a * dst.a);\n", }; |