Index: src/effects/SkBlurMaskFilter.cpp |
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp |
index ac10a8bd80ab1954f377d4074b3f8ce083a10583..a44563ea0883a7c28b16020b366a14f17719a079 100644 |
--- a/src/effects/SkBlurMaskFilter.cpp |
+++ b/src/effects/SkBlurMaskFilter.cpp |
@@ -697,20 +697,20 @@ private: |
typedef GrGLSLFragmentProcessor INHERITED; |
}; |
-void OutputRectBlurProfileLookup(GrGLSLFragmentBuilder* fsBuilder, |
+void OutputRectBlurProfileLookup(GrGLSLFragmentBuilder* fragBuilder, |
const GrGLSLTextureSampler& sampler, |
const char *output, |
const char *profileSize, const char *loc, |
const char *blurred_width, |
const char *sharp_width) { |
- fsBuilder->codeAppendf("float %s;", output); |
- fsBuilder->codeAppendf("{"); |
- fsBuilder->codeAppendf("float coord = ((abs(%s - 0.5 * %s) - 0.5 * %s)) / %s;", |
+ fragBuilder->codeAppendf("float %s;", output); |
+ fragBuilder->codeAppendf("{"); |
+ fragBuilder->codeAppendf("float coord = ((abs(%s - 0.5 * %s) - 0.5 * %s)) / %s;", |
loc, blurred_width, sharp_width, profileSize); |
- fsBuilder->codeAppendf("%s = ", output); |
- fsBuilder->appendTextureLookup(sampler, "vec2(coord,0.5)"); |
- fsBuilder->codeAppend(".a;"); |
- fsBuilder->codeAppendf("}"); |
+ fragBuilder->codeAppendf("%s = ", output); |
+ fragBuilder->appendTextureLookup(sampler, "vec2(coord,0.5)"); |
+ fragBuilder->codeAppend(".a;"); |
+ fragBuilder->codeAppendf("}"); |
} |
@@ -737,33 +737,33 @@ void GrGLRectBlurEffect::emitCode(EmitArgs& args) { |
"profileSize", |
&profileSizeName); |
- GrGLSLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
- const char *fragmentPos = fsBuilder->fragmentPosition(); |
+ GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; |
+ const char *fragmentPos = fragBuilder->fragmentPosition(); |
if (args.fInputColor) { |
- fsBuilder->codeAppendf("vec4 src=%s;", args.fInputColor); |
+ fragBuilder->codeAppendf("vec4 src=%s;", args.fInputColor); |
} else { |
- fsBuilder->codeAppendf("vec4 src=vec4(1);"); |
+ fragBuilder->codeAppendf("vec4 src=vec4(1);"); |
} |
- fsBuilder->codeAppendf("%s vec2 translatedPos = %s.xy - %s.xy;", precisionString, fragmentPos, |
- rectName); |
- fsBuilder->codeAppendf("%s float width = %s.z - %s.x;", precisionString, rectName, rectName); |
- fsBuilder->codeAppendf("%s float height = %s.w - %s.y;", precisionString, rectName, rectName); |
+ fragBuilder->codeAppendf("%s vec2 translatedPos = %s.xy - %s.xy;", precisionString, fragmentPos, |
+ rectName); |
+ fragBuilder->codeAppendf("%s float width = %s.z - %s.x;", precisionString, rectName, rectName); |
+ fragBuilder->codeAppendf("%s float height = %s.w - %s.y;", precisionString, rectName, rectName); |
- fsBuilder->codeAppendf("%s vec2 smallDims = vec2(width - %s, height - %s);", precisionString, |
- profileSizeName, profileSizeName); |
- fsBuilder->codeAppendf("%s float center = 2.0 * floor(%s/2.0 + .25) - 1.0;", precisionString, |
- profileSizeName); |
- fsBuilder->codeAppendf("%s vec2 wh = smallDims - vec2(center,center);", precisionString); |
+ fragBuilder->codeAppendf("%s vec2 smallDims = vec2(width - %s, height - %s);", precisionString, |
+ profileSizeName, profileSizeName); |
+ fragBuilder->codeAppendf("%s float center = 2.0 * floor(%s/2.0 + .25) - 1.0;", precisionString, |
+ profileSizeName); |
+ fragBuilder->codeAppendf("%s vec2 wh = smallDims - vec2(center,center);", precisionString); |
- OutputRectBlurProfileLookup(fsBuilder, args.fSamplers[0], "horiz_lookup", profileSizeName, |
+ OutputRectBlurProfileLookup(fragBuilder, args.fSamplers[0], "horiz_lookup", profileSizeName, |
"translatedPos.x", "width", "wh.x"); |
- OutputRectBlurProfileLookup(fsBuilder, args.fSamplers[0], "vert_lookup", profileSizeName, |
+ OutputRectBlurProfileLookup(fragBuilder, args.fSamplers[0], "vert_lookup", profileSizeName, |
"translatedPos.y", "height", "wh.y"); |
- fsBuilder->codeAppendf("float final = horiz_lookup * vert_lookup;"); |
- fsBuilder->codeAppendf("%s = src * final;", args.fOutputColor); |
+ fragBuilder->codeAppendf("float final = horiz_lookup * vert_lookup;"); |
+ fragBuilder->codeAppendf("%s = src * final;", args.fOutputColor); |
} |
void GrGLRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, |
@@ -1083,34 +1083,36 @@ void GrGLRRectBlurEffect::emitCode(EmitArgs& args) { |
"blurRadius", |
&blurRadiusName); |
- GrGLSLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
- const char* fragmentPos = fsBuilder->fragmentPosition(); |
+ GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; |
+ const char* fragmentPos = fragBuilder->fragmentPosition(); |
// warp the fragment position to the appropriate part of the 9patch blur texture |
- fsBuilder->codeAppendf("vec2 rectCenter = (%s.xy + %s.zw)/2.0;", rectName, rectName); |
- fsBuilder->codeAppendf("vec2 translatedFragPos = %s.xy - %s.xy;", fragmentPos, rectName); |
- fsBuilder->codeAppendf("float threshold = %s + 2.0*%s;", cornerRadiusName, blurRadiusName); |
- fsBuilder->codeAppendf("vec2 middle = %s.zw - %s.xy - 2.0*threshold;", rectName, rectName); |
- |
- fsBuilder->codeAppendf("if (translatedFragPos.x >= threshold && translatedFragPos.x < (middle.x+threshold)) {"); |
- fsBuilder->codeAppendf("translatedFragPos.x = threshold;\n"); |
- fsBuilder->codeAppendf("} else if (translatedFragPos.x >= (middle.x + threshold)) {"); |
- fsBuilder->codeAppendf("translatedFragPos.x -= middle.x - 1.0;"); |
- fsBuilder->codeAppendf("}"); |
- |
- fsBuilder->codeAppendf("if (translatedFragPos.y > threshold && translatedFragPos.y < (middle.y+threshold)) {"); |
- fsBuilder->codeAppendf("translatedFragPos.y = threshold;"); |
- fsBuilder->codeAppendf("} else if (translatedFragPos.y >= (middle.y + threshold)) {"); |
- fsBuilder->codeAppendf("translatedFragPos.y -= middle.y - 1.0;"); |
- fsBuilder->codeAppendf("}"); |
- |
- fsBuilder->codeAppendf("vec2 proxyDims = vec2(2.0*threshold+1.0);"); |
- fsBuilder->codeAppendf("vec2 texCoord = translatedFragPos / proxyDims;"); |
- |
- fsBuilder->codeAppendf("%s = ", args.fOutputColor); |
- fsBuilder->appendTextureLookupAndModulate(args.fInputColor, args.fSamplers[0], "texCoord"); |
- fsBuilder->codeAppend(";"); |
+ fragBuilder->codeAppendf("vec2 rectCenter = (%s.xy + %s.zw)/2.0;", rectName, rectName); |
+ fragBuilder->codeAppendf("vec2 translatedFragPos = %s.xy - %s.xy;", fragmentPos, rectName); |
+ fragBuilder->codeAppendf("float threshold = %s + 2.0*%s;", cornerRadiusName, blurRadiusName); |
+ fragBuilder->codeAppendf("vec2 middle = %s.zw - %s.xy - 2.0*threshold;", rectName, rectName); |
+ |
+ fragBuilder->codeAppendf( |
+ "if (translatedFragPos.x >= threshold && translatedFragPos.x < (middle.x+threshold)) {"); |
+ fragBuilder->codeAppendf("translatedFragPos.x = threshold;\n"); |
+ fragBuilder->codeAppendf("} else if (translatedFragPos.x >= (middle.x + threshold)) {"); |
+ fragBuilder->codeAppendf("translatedFragPos.x -= middle.x - 1.0;"); |
+ fragBuilder->codeAppendf("}"); |
+ |
+ fragBuilder->codeAppendf( |
+ "if (translatedFragPos.y > threshold && translatedFragPos.y < (middle.y+threshold)) {"); |
+ fragBuilder->codeAppendf("translatedFragPos.y = threshold;"); |
+ fragBuilder->codeAppendf("} else if (translatedFragPos.y >= (middle.y + threshold)) {"); |
+ fragBuilder->codeAppendf("translatedFragPos.y -= middle.y - 1.0;"); |
+ fragBuilder->codeAppendf("}"); |
+ |
+ fragBuilder->codeAppendf("vec2 proxyDims = vec2(2.0*threshold+1.0);"); |
+ fragBuilder->codeAppendf("vec2 texCoord = translatedFragPos / proxyDims;"); |
+ |
+ fragBuilder->codeAppendf("%s = ", args.fOutputColor); |
+ fragBuilder->appendTextureLookupAndModulate(args.fInputColor, args.fSamplers[0], "texCoord"); |
+ fragBuilder->codeAppend(";"); |
} |
void GrGLRRectBlurEffect::onSetData(const GrGLSLProgramDataManager& pdman, |