OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkBlurMaskFilter.h" | 8 #include "SkBlurMaskFilter.h" |
9 #include "SkBlurMask.h" | 9 #include "SkBlurMask.h" |
10 #include "SkGpuBlurUtils.h" | 10 #include "SkGpuBlurUtils.h" |
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
754 fragBuilder->codeAppendf("%s float height = %s.w - %s.y;", precisionString.c
_str(), rectName, | 754 fragBuilder->codeAppendf("%s float height = %s.w - %s.y;", precisionString.c
_str(), rectName, |
755 rectName); | 755 rectName); |
756 | 756 |
757 fragBuilder->codeAppendf("%s vec2 smallDims = vec2(width - %s, height - %s);
", | 757 fragBuilder->codeAppendf("%s vec2 smallDims = vec2(width - %s, height - %s);
", |
758 precisionString.c_str(), profileSizeName, profileSi
zeName); | 758 precisionString.c_str(), profileSizeName, profileSi
zeName); |
759 fragBuilder->codeAppendf("%s float center = 2.0 * floor(%s/2.0 + .25) - 1.0;
", | 759 fragBuilder->codeAppendf("%s float center = 2.0 * floor(%s/2.0 + .25) - 1.0;
", |
760 precisionString.c_str(), profileSizeName); | 760 precisionString.c_str(), profileSizeName); |
761 fragBuilder->codeAppendf("%s vec2 wh = smallDims - vec2(center,center);", | 761 fragBuilder->codeAppendf("%s vec2 wh = smallDims - vec2(center,center);", |
762 precisionString.c_str()); | 762 precisionString.c_str()); |
763 | 763 |
764 OutputRectBlurProfileLookup(fragBuilder, args.fTexSamplers[0], "horiz_lookup
", profileSizeName, | 764 const GrGLSLSampler& sampler = uniformHandler->getSampler(args.fTexSamplers[
0]); |
| 765 OutputRectBlurProfileLookup(fragBuilder, sampler, "horiz_lookup", profileSiz
eName, |
765 "translatedPos.x", "width", "wh.x"); | 766 "translatedPos.x", "width", "wh.x"); |
766 OutputRectBlurProfileLookup(fragBuilder, args.fTexSamplers[0], "vert_lookup"
, profileSizeName, | 767 OutputRectBlurProfileLookup(fragBuilder, sampler, "vert_lookup", profileSize
Name, |
767 "translatedPos.y", "height", "wh.y"); | 768 "translatedPos.y", "height", "wh.y"); |
768 | 769 |
769 fragBuilder->codeAppendf("float final = horiz_lookup * vert_lookup;"); | 770 fragBuilder->codeAppendf("float final = horiz_lookup * vert_lookup;"); |
770 fragBuilder->codeAppendf("%s = src * final;", args.fOutputColor); | 771 fragBuilder->codeAppendf("%s = src * final;", args.fOutputColor); |
771 } | 772 } |
772 | 773 |
773 void GrGLRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, | 774 void GrGLRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, |
774 const GrProcessor& proc) { | 775 const GrProcessor& proc) { |
775 const GrRectBlurEffect& rbe = proc.cast<GrRectBlurEffect>(); | 776 const GrRectBlurEffect& rbe = proc.cast<GrRectBlurEffect>(); |
776 SkRect rect = rbe.getRect(); | 777 SkRect rect = rbe.getRect(); |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 "if (translatedFragPos.y > threshold && translatedFragPos.y < (middl
e.y+threshold)) {"); | 1114 "if (translatedFragPos.y > threshold && translatedFragPos.y < (middl
e.y+threshold)) {"); |
1114 fragBuilder->codeAppendf("translatedFragPos.y = threshold;"); | 1115 fragBuilder->codeAppendf("translatedFragPos.y = threshold;"); |
1115 fragBuilder->codeAppendf("} else if (translatedFragPos.y >= (middle.y + thre
shold)) {"); | 1116 fragBuilder->codeAppendf("} else if (translatedFragPos.y >= (middle.y + thre
shold)) {"); |
1116 fragBuilder->codeAppendf("translatedFragPos.y -= middle.y - 1.0;"); | 1117 fragBuilder->codeAppendf("translatedFragPos.y -= middle.y - 1.0;"); |
1117 fragBuilder->codeAppendf("}"); | 1118 fragBuilder->codeAppendf("}"); |
1118 | 1119 |
1119 fragBuilder->codeAppendf("vec2 proxyDims = vec2(2.0*threshold+1.0);"); | 1120 fragBuilder->codeAppendf("vec2 proxyDims = vec2(2.0*threshold+1.0);"); |
1120 fragBuilder->codeAppendf("vec2 texCoord = translatedFragPos / proxyDims;"); | 1121 fragBuilder->codeAppendf("vec2 texCoord = translatedFragPos / proxyDims;"); |
1121 | 1122 |
1122 fragBuilder->codeAppendf("%s = ", args.fOutputColor); | 1123 fragBuilder->codeAppendf("%s = ", args.fOutputColor); |
1123 fragBuilder->appendTextureLookupAndModulate(args.fInputColor, args.fTexSampl
ers[0], "texCoord"); | 1124 fragBuilder->appendTextureLookupAndModulate(args.fInputColor, |
| 1125 uniformHandler->getSampler(args.
fTexSamplers[0]), |
| 1126 "texCoord"); |
1124 fragBuilder->codeAppend(";"); | 1127 fragBuilder->codeAppend(";"); |
1125 } | 1128 } |
1126 | 1129 |
1127 void GrGLRRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, | 1130 void GrGLRRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, |
1128 const GrProcessor& proc) { | 1131 const GrProcessor& proc) { |
1129 const GrRRectBlurEffect& brre = proc.cast<GrRRectBlurEffect>(); | 1132 const GrRRectBlurEffect& brre = proc.cast<GrRRectBlurEffect>(); |
1130 const SkRRect& rrect = brre.getRRect(); | 1133 const SkRRect& rrect = brre.getRRect(); |
1131 | 1134 |
1132 float blurRadius = 3.f*SkScalarCeilToScalar(brre.getSigma()-1/6.0f); | 1135 float blurRadius = 3.f*SkScalarCeilToScalar(brre.getSigma()-1/6.0f); |
1133 pdman.set1f(fBlurRadiusUniform, blurRadius); | 1136 pdman.set1f(fBlurRadiusUniform, blurRadius); |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1315 } else { | 1318 } else { |
1316 str->append("None"); | 1319 str->append("None"); |
1317 } | 1320 } |
1318 str->append("))"); | 1321 str->append("))"); |
1319 } | 1322 } |
1320 #endif | 1323 #endif |
1321 | 1324 |
1322 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) | 1325 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) |
1323 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) | 1326 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) |
1324 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1327 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |