| Index: src/effects/SkAlphaThresholdFilter.cpp
|
| diff --git a/src/effects/SkAlphaThresholdFilter.cpp b/src/effects/SkAlphaThresholdFilter.cpp
|
| index ff5e93e0362a04dde266b29bdc79c82ceb525829..e6f1f088cbae9f1ca8775643ade00ad1f9bacaa6 100644
|
| --- a/src/effects/SkAlphaThresholdFilter.cpp
|
| +++ b/src/effects/SkAlphaThresholdFilter.cpp
|
| @@ -146,40 +146,40 @@ void GrGLAlphaThresholdEffect::emitCode(EmitArgs& args) {
|
| kFloat_GrSLType, kDefault_GrSLPrecision,
|
| "outer_threshold");
|
|
|
| - GrGLSLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder();
|
| - SkString coords2D = fsBuilder->ensureFSCoords2D(args.fCoords, 0);
|
| - SkString maskCoords2D = fsBuilder->ensureFSCoords2D(args.fCoords, 1);
|
| -
|
| - fsBuilder->codeAppendf("\t\tvec2 coord = %s;\n", coords2D.c_str());
|
| - fsBuilder->codeAppendf("\t\tvec2 mask_coord = %s;\n", maskCoords2D.c_str());
|
| - fsBuilder->codeAppend("\t\tvec4 input_color = ");
|
| - fsBuilder->appendTextureLookup(args.fSamplers[0], "coord");
|
| - fsBuilder->codeAppend(";\n");
|
| - fsBuilder->codeAppend("\t\tvec4 mask_color = ");
|
| - fsBuilder->appendTextureLookup(args.fSamplers[1], "mask_coord");
|
| - fsBuilder->codeAppend(";\n");
|
| -
|
| - fsBuilder->codeAppendf("\t\tfloat inner_thresh = %s;\n",
|
| - args.fBuilder->getUniformCStr(fInnerThresholdVar));
|
| - fsBuilder->codeAppendf("\t\tfloat outer_thresh = %s;\n",
|
| - args.fBuilder->getUniformCStr(fOuterThresholdVar));
|
| - fsBuilder->codeAppend("\t\tfloat mask = mask_color.a;\n");
|
| -
|
| - fsBuilder->codeAppend("vec4 color = input_color;\n");
|
| - fsBuilder->codeAppend("\t\tif (mask < 0.5) {\n"
|
| - "\t\t\tif (color.a > outer_thresh) {\n"
|
| - "\t\t\t\tfloat scale = outer_thresh / color.a;\n"
|
| - "\t\t\t\tcolor.rgb *= scale;\n"
|
| - "\t\t\t\tcolor.a = outer_thresh;\n"
|
| - "\t\t\t}\n"
|
| - "\t\t} else if (color.a < inner_thresh) {\n"
|
| - "\t\t\tfloat scale = inner_thresh / max(0.001, color.a);\n"
|
| - "\t\t\tcolor.rgb *= scale;\n"
|
| - "\t\t\tcolor.a = inner_thresh;\n"
|
| - "\t\t}\n");
|
| -
|
| - fsBuilder->codeAppendf("%s = %s;\n", args.fOutputColor,
|
| - (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr4("color")).c_str());
|
| + GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder;
|
| + SkString coords2D = fragBuilder->ensureFSCoords2D(args.fCoords, 0);
|
| + SkString maskCoords2D = fragBuilder->ensureFSCoords2D(args.fCoords, 1);
|
| +
|
| + fragBuilder->codeAppendf("\t\tvec2 coord = %s;\n", coords2D.c_str());
|
| + fragBuilder->codeAppendf("\t\tvec2 mask_coord = %s;\n", maskCoords2D.c_str());
|
| + fragBuilder->codeAppend("\t\tvec4 input_color = ");
|
| + fragBuilder->appendTextureLookup(args.fSamplers[0], "coord");
|
| + fragBuilder->codeAppend(";\n");
|
| + fragBuilder->codeAppend("\t\tvec4 mask_color = ");
|
| + fragBuilder->appendTextureLookup(args.fSamplers[1], "mask_coord");
|
| + fragBuilder->codeAppend(";\n");
|
| +
|
| + fragBuilder->codeAppendf("\t\tfloat inner_thresh = %s;\n",
|
| + args.fBuilder->getUniformCStr(fInnerThresholdVar));
|
| + fragBuilder->codeAppendf("\t\tfloat outer_thresh = %s;\n",
|
| + args.fBuilder->getUniformCStr(fOuterThresholdVar));
|
| + fragBuilder->codeAppend("\t\tfloat mask = mask_color.a;\n");
|
| +
|
| + fragBuilder->codeAppend("vec4 color = input_color;\n");
|
| + fragBuilder->codeAppend("\t\tif (mask < 0.5) {\n"
|
| + "\t\t\tif (color.a > outer_thresh) {\n"
|
| + "\t\t\t\tfloat scale = outer_thresh / color.a;\n"
|
| + "\t\t\t\tcolor.rgb *= scale;\n"
|
| + "\t\t\t\tcolor.a = outer_thresh;\n"
|
| + "\t\t\t}\n"
|
| + "\t\t} else if (color.a < inner_thresh) {\n"
|
| + "\t\t\tfloat scale = inner_thresh / max(0.001, color.a);\n"
|
| + "\t\t\tcolor.rgb *= scale;\n"
|
| + "\t\t\tcolor.a = inner_thresh;\n"
|
| + "\t\t}\n");
|
| +
|
| + fragBuilder->codeAppendf("%s = %s;\n", args.fOutputColor,
|
| + (GrGLSLExpr4(args.fInputColor) * GrGLSLExpr4("color")).c_str());
|
| }
|
|
|
| void GrGLAlphaThresholdEffect::onSetData(const GrGLSLProgramDataManager& pdman,
|
|
|