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 #include "SkBlurMaskFilter.h" | 9 #include "SkBlurMaskFilter.h" |
10 #include "SkBlurMask.h" | 10 #include "SkBlurMask.h" |
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 const char* outputColor, | 700 const char* outputColor, |
701 const char* inputColor, | 701 const char* inputColor, |
702 const TransformedCoordsArray& coords, | 702 const TransformedCoordsArray& coords, |
703 const TextureSamplerArray& samplers) { | 703 const TextureSamplerArray& samplers) { |
704 | 704 |
705 const char *rectName; | 705 const char *rectName; |
706 const char *profileSizeName; | 706 const char *profileSizeName; |
707 | 707 |
708 fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, | 708 fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, |
709 kVec4f_GrSLType, | 709 kVec4f_GrSLType, |
| 710 kDefault_GrSLPrecision, |
710 "proxyRect", | 711 "proxyRect", |
711 &rectName); | 712 &rectName); |
712 fProfileSizeUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visi
bility, | 713 fProfileSizeUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visi
bility, |
713 kFloat_GrSLType, | 714 kFloat_GrSLType, |
| 715 kDefault_GrSLPrecision, |
714 "profileSize", | 716 "profileSize", |
715 &profileSizeName); | 717 &profileSizeName); |
716 | 718 |
717 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 719 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
718 const char *fragmentPos = fsBuilder->fragmentPosition(); | 720 const char *fragmentPos = fsBuilder->fragmentPosition(); |
719 | 721 |
720 if (inputColor) { | 722 if (inputColor) { |
721 fsBuilder->codeAppendf("\tvec4 src=%s;\n", inputColor); | 723 fsBuilder->codeAppendf("\tvec4 src=%s;\n", inputColor); |
722 } else { | 724 } else { |
723 fsBuilder->codeAppendf("\tvec4 src=vec4(1)\n;"); | 725 fsBuilder->codeAppendf("\tvec4 src=vec4(1)\n;"); |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 const TextureSamplerArray& samplers) { | 1042 const TextureSamplerArray& samplers) { |
1041 const char *rectName; | 1043 const char *rectName; |
1042 const char *cornerRadiusName; | 1044 const char *cornerRadiusName; |
1043 const char *blurRadiusName; | 1045 const char *blurRadiusName; |
1044 | 1046 |
1045 // The proxy rect has left, top, right, and bottom edges correspond to | 1047 // The proxy rect has left, top, right, and bottom edges correspond to |
1046 // components x, y, z, and w, respectively. | 1048 // components x, y, z, and w, respectively. |
1047 | 1049 |
1048 fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, | 1050 fProxyRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, |
1049 kVec4f_GrSLType, | 1051 kVec4f_GrSLType, |
| 1052 kDefault_GrSLPrecision, |
1050 "proxyRect", | 1053 "proxyRect", |
1051 &rectName); | 1054 &rectName); |
1052 fCornerRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Vis
ibility, | 1055 fCornerRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Vis
ibility, |
1053 kFloat_GrSLType, | 1056 kFloat_GrSLType, |
1054 "cornerRadius", | 1057 kDefault_GrSLPrecision, |
1055 &cornerRadiusName); | 1058 "cornerRadius", |
| 1059 &cornerRadiusName); |
1056 fBlurRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, | 1060 fBlurRadiusUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, |
1057 kFloat_GrSLType, | 1061 kFloat_GrSLType, |
1058 "blurRadius", | 1062 kDefault_GrSLPrecision, |
1059 &blurRadiusName); | 1063 "blurRadius", |
| 1064 &blurRadiusName); |
1060 | 1065 |
1061 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 1066 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
1062 const char* fragmentPos = fsBuilder->fragmentPosition(); | 1067 const char* fragmentPos = fsBuilder->fragmentPosition(); |
1063 | 1068 |
1064 // warp the fragment position to the appropriate part of the 9patch blur tex
ture | 1069 // warp the fragment position to the appropriate part of the 9patch blur tex
ture |
1065 | 1070 |
1066 fsBuilder->codeAppendf("\t\tvec2 rectCenter = (%s.xy + %s.zw)/2.0;\n", rectN
ame, rectName); | 1071 fsBuilder->codeAppendf("\t\tvec2 rectCenter = (%s.xy + %s.zw)/2.0;\n", rectN
ame, rectName); |
1067 fsBuilder->codeAppendf("\t\tvec2 translatedFragPos = %s.xy - %s.xy;\n", frag
mentPos, rectName); | 1072 fsBuilder->codeAppendf("\t\tvec2 translatedFragPos = %s.xy - %s.xy;\n", frag
mentPos, rectName); |
1068 fsBuilder->codeAppendf("\t\tfloat threshold = %s + 2.0*%s;\n", cornerRadiusN
ame, blurRadiusName ); | 1073 fsBuilder->codeAppendf("\t\tfloat threshold = %s + 2.0*%s;\n", cornerRadiusN
ame, blurRadiusName ); |
1069 fsBuilder->codeAppendf("\t\tvec2 middle = %s.zw - %s.xy - 2.0*threshold;\n",
rectName, rectName ); | 1074 fsBuilder->codeAppendf("\t\tvec2 middle = %s.zw - %s.xy - 2.0*threshold;\n",
rectName, rectName ); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1262 } else { | 1267 } else { |
1263 str->append("None"); | 1268 str->append("None"); |
1264 } | 1269 } |
1265 str->append("))"); | 1270 str->append("))"); |
1266 } | 1271 } |
1267 #endif | 1272 #endif |
1268 | 1273 |
1269 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) | 1274 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) |
1270 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) | 1275 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) |
1271 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1276 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |