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