| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkXfermode.h" | 10 #include "SkXfermode.h" |
| (...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 const GrDrawEffect& drawEffect, | 989 const GrDrawEffect& drawEffect, |
| 990 EffectKey key, | 990 EffectKey key, |
| 991 const char* outputColor, | 991 const char* outputColor, |
| 992 const char* inputColor, | 992 const char* inputColor, |
| 993 const TextureSamplerArray& samplers) SK_OVERRIDE { | 993 const TextureSamplerArray& samplers) SK_OVERRIDE { |
| 994 const char* dstColor = builder->dstColor(); | 994 const char* dstColor = builder->dstColor(); |
| 995 GrAssert(NULL != dstColor); | 995 GrAssert(NULL != dstColor); |
| 996 | 996 |
| 997 // We don't try to optimize for this case at all | 997 // We don't try to optimize for this case at all |
| 998 if (NULL == inputColor) { | 998 if (NULL == inputColor) { |
| 999 builder->fsCodeAppendf("\tconst vec4 ones = %s;\n", GrGLSLOnesVe
cf(4)); | 999 builder->fsCodeAppendf("\t\tconst vec4 ones = %s;\n", GrGLSLOnes
Vecf(4)); |
| 1000 inputColor = "ones"; | 1000 inputColor = "ones"; |
| 1001 } | 1001 } |
| 1002 | 1002 |
| 1003 SkXfermode::Mode mode = drawEffect.castEffect<XferEffect>().mode(); | 1003 SkXfermode::Mode mode = drawEffect.castEffect<XferEffect>().mode(); |
| 1004 builder->fsCodeAppendf("\t\t// SkXfermode::Mode: %s\n", SkXfermode::
ModeName(mode)); | 1004 builder->fsCodeAppendf("\t\t// SkXfermode::Mode: %s\n", SkXfermode::
ModeName(mode)); |
| 1005 | 1005 |
| 1006 // These all perform src-over on the alpha channel. | 1006 // These all perform src-over on the alpha channel. |
| 1007 builder->fsCodeAppendf("\t\t%s.a = %s.a + (1.0 - %s.a) * %s.a;\n", | 1007 builder->fsCodeAppendf("\t\t%s.a = %s.a + (1.0 - %s.a) * %s.a;\n", |
| 1008 outputColor, inputColor, inputColor, dstColo
r); | 1008 outputColor, inputColor, inputColor, dstColo
r); |
| 1009 | 1009 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1128 return drawEffect.castEffect<XferEffect>().mode(); | 1128 return drawEffect.castEffect<XferEffect>().mode(); |
| 1129 } | 1129 } |
| 1130 | 1130 |
| 1131 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE {} | 1131 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE {} |
| 1132 | 1132 |
| 1133 private: | 1133 private: |
| 1134 static void HardLight(GrGLShaderBuilder* builder, | 1134 static void HardLight(GrGLShaderBuilder* builder, |
| 1135 const char* final, | 1135 const char* final, |
| 1136 const char* src, | 1136 const char* src, |
| 1137 const char* dst) { | 1137 const char* dst) { |
| 1138 builder->fsCodeAppendf("\t\t%s.a = 1.0 - (1.0 - %s.a) * (1.0 - %s.a)
;\n", | |
| 1139 final, dst, src); | |
| 1140 builder->fsCodeAppendf("\t\t%s.rgb = mix(2.0 * %s.rgb * %s.rgb, ", | 1138 builder->fsCodeAppendf("\t\t%s.rgb = mix(2.0 * %s.rgb * %s.rgb, ", |
| 1141 final, src, dst); | 1139 final, src, dst); |
| 1142 builder->fsCodeAppendf("%s.aaa * %s.aaa - 2.0 * (%s.aaa - %s.rgb) *
(%s.aaa - %s.rgb),", | 1140 builder->fsCodeAppendf("%s.aaa * %s.aaa - 2.0 * (%s.aaa - %s.rgb) *
(%s.aaa - %s.rgb),", |
| 1143 src, dst, dst, dst, src, src); | 1141 src, dst, dst, dst, src, src); |
| 1144 builder->fsCodeAppendf("vec3(greaterThan(2.0 * %s.rgb, %s.aaa)));\n"
, | 1142 builder->fsCodeAppendf("vec3(greaterThan(2.0 * %s.rgb, %s.aaa)));\n"
, |
| 1145 src, src); | 1143 src, src); |
| 1146 builder->fsCodeAppendf("\t\t%s.rgb += %s.rgb * (1.0 - %s.a) + %s.rgb
* (1.0 - %s.a);\n", | 1144 builder->fsCodeAppendf("\t\t%s.rgb += %s.rgb * (1.0 - %s.a) + %s.rgb
* (1.0 - %s.a);\n", |
| 1147 final, src, dst, dst, src); | 1145 final, src, dst, dst, src); |
| 1148 } | 1146 } |
| 1149 | 1147 |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1970 return proc16; | 1968 return proc16; |
| 1971 } | 1969 } |
| 1972 | 1970 |
| 1973 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) | 1971 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkXfermode) |
| 1974 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) | 1972 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkProcCoeffXfermode) |
| 1975 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkClearXfermode) | 1973 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkClearXfermode) |
| 1976 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) | 1974 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) |
| 1977 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) | 1975 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) |
| 1978 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) | 1976 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) |
| 1979 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1977 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |