Chromium Code Reviews| Index: src/effects/SkDisplacementMapEffect.cpp |
| diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp |
| index 27509dc55b599d624a260c8c420dea2375d09c8b..0e6d1b04a70e5162ea26744cf6b79fd2de3d1ff9 100644 |
| --- a/src/effects/SkDisplacementMapEffect.cpp |
| +++ b/src/effects/SkDisplacementMapEffect.cpp |
| @@ -306,12 +306,7 @@ public: |
| GrGLDisplacementMapEffect(const GrProcessor&); |
| virtual ~GrGLDisplacementMapEffect(); |
| - virtual void emitCode(GrGLFPBuilder*, |
| - const GrFragmentProcessor&, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray&, |
| - const TextureSamplerArray&) override; |
| + virtual void emitCode(EmitArgs&) override; |
| static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProcessorKeyBuilder*); |
| @@ -560,33 +555,27 @@ GrGLDisplacementMapEffect::GrGLDisplacementMapEffect(const GrProcessor& proc) |
| GrGLDisplacementMapEffect::~GrGLDisplacementMapEffect() { |
| } |
| -void GrGLDisplacementMapEffect::emitCode(GrGLFPBuilder* builder, |
| - const GrFragmentProcessor& fp, |
| - const char* outputColor, |
| - const char* inputColor, |
| - const TransformedCoordsArray& coords, |
| - const TextureSamplerArray& samplers) { |
| - const GrTextureDomain& domain = fp.cast<GrDisplacementMapEffect>().domain(); |
| - sk_ignore_unused_variable(inputColor); |
| +void GrGLDisplacementMapEffect::emitCode(EmitArgs& args) { |
| + const GrTextureDomain& domain = args.fFp.cast<GrDisplacementMapEffect>().domain(); |
| - fScaleUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| + fScaleUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| kVec2f_GrSLType, kDefault_GrSLPrecision, "Scale"); |
| - const char* scaleUni = builder->getUniformCStr(fScaleUni); |
| + const char* scaleUni = args.fBuilder->getUniformCStr(fScaleUni); |
| const char* dColor = "dColor"; |
| const char* cCoords = "cCoords"; |
| const char* nearZero = "1e-6"; // Since 6.10352e−5 is the smallest half float, use |
| // a number smaller than that to approximate 0, but |
| // leave room for 32-bit float GPU rounding errors. |
| - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
| + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
| fsBuilder->codeAppendf("\t\tvec4 %s = ", dColor); |
| - fsBuilder->appendTextureLookup(samplers[0], coords[0].c_str(), coords[0].getType()); |
| + fsBuilder->appendTextureLookup(args.fSamplers[0], args.fCoords[0].c_str(), args.fCoords[0].getType()); |
|
joshualitt
2015/07/22 19:34:04
line wrap @100
|
| fsBuilder->codeAppend(";\n"); |
| // Unpremultiply the displacement |
| fsBuilder->codeAppendf("\t\t%s.rgb = (%s.a < %s) ? vec3(0.0) : clamp(%s.rgb / %s.a, 0.0, 1.0);", |
| dColor, dColor, nearZero, dColor, dColor); |
| - SkString coords2D = fsBuilder->ensureFSCoords2D(coords, 1); |
| + SkString coords2D = fsBuilder->ensureFSCoords2D(args.fCoords, 1); |
| fsBuilder->codeAppendf("\t\tvec2 %s = %s + %s*(%s.", |
| cCoords, coords2D.c_str(), scaleUni, dColor); |
| @@ -627,7 +616,7 @@ void GrGLDisplacementMapEffect::emitCode(GrGLFPBuilder* builder, |
| } |
| fsBuilder->codeAppend("-vec2(0.5));\t\t"); |
| - fGLDomain.sampleTexture(fsBuilder, domain, outputColor, SkString(cCoords), samplers[1]); |
| + fGLDomain.sampleTexture(fsBuilder, domain, args.fOutputColor, SkString(cCoords), args.fSamplers[1]); |
|
joshualitt
2015/07/22 19:34:04
line wrap @100
|
| fsBuilder->codeAppend(";\n"); |
| } |