Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2017 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 /**************************************************************************************************
      9  *** This file was autogenerated from GrBlurredEdgeFragmentProcessor.fp; do not modify.
     10  **************************************************************************************************/
     11 #include "GrBlurredEdgeFragmentProcessor.h"
     12 #include "glsl/GrGLSLFragmentProcessor.h"
     13 #include "glsl/GrGLSLFragmentShaderBuilder.h"
     14 #include "glsl/GrGLSLProgramBuilder.h"
     15 #include "GrTexture.h"
     16 #include "SkSLCPP.h"
     17 #include "SkSLUtil.h"
     18 class GrGLSLBlurredEdgeFragmentProcessor : public GrGLSLFragmentProcessor {
     19 public:
     20     GrGLSLBlurredEdgeFragmentProcessor() {}
     21     void emitCode(EmitArgs& args) override {
     22         GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
     23         const GrBlurredEdgeFragmentProcessor& _outer =
     24                 args.fFp.cast<GrBlurredEdgeFragmentProcessor>();
     25         (void)_outer;
     26         auto mode = _outer.mode();
     27         (void)mode;
     28         fragBuilder->codeAppendf(
     29                 "half factor = half(1.0 - float(%s.w));\n@switch (%d) {\n    case 0:\n        "
     30                 "factor = half(exp(float(float(-factor * factor) * 4.0)) - "
     31                 "0.017999999999999999);\n        break;\n    case 1:\n        factor = "
     32                 "half(smoothstep(1.0, 0.0, float(factor)));\n        break;\n}\n%s = "
     33                 "half4(factor);\n",
     34                 args.fInputColor, (int)_outer.mode(), args.fOutputColor);
     35     }
     36 
     37 private:
     38     void onSetData(const GrGLSLProgramDataManager& pdman,
     39                    const GrFragmentProcessor& _proc) override {}
     40 };
     41 GrGLSLFragmentProcessor* GrBlurredEdgeFragmentProcessor::onCreateGLSLInstance() const {
     42     return new GrGLSLBlurredEdgeFragmentProcessor();
     43 }
     44 void GrBlurredEdgeFragmentProcessor::onGetGLSLProcessorKey(const GrShaderCaps& caps,
     45                                                            GrProcessorKeyBuilder* b) const {
     46     b->add32((int32_t)fMode);
     47 }
     48 bool GrBlurredEdgeFragmentProcessor::onIsEqual(const GrFragmentProcessor& other) const {
     49     const GrBlurredEdgeFragmentProcessor& that = other.cast<GrBlurredEdgeFragmentProcessor>();
     50     (void)that;
     51     if (fMode != that.fMode) return false;
     52     return true;
     53 }
     54 GrBlurredEdgeFragmentProcessor::GrBlurredEdgeFragmentProcessor(
     55         const GrBlurredEdgeFragmentProcessor& src)
     56         : INHERITED(kGrBlurredEdgeFragmentProcessor_ClassID, src.optimizationFlags())
     57         , fMode(src.fMode) {}
     58 std::unique_ptr<GrFragmentProcessor> GrBlurredEdgeFragmentProcessor::clone() const {
     59     return std::unique_ptr<GrFragmentProcessor>(new GrBlurredEdgeFragmentProcessor(*this));
     60 }
     61