| /* |
| * Copyright 2018 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /************************************************************************************************** |
| *** This file was autogenerated from GrOverdrawFragmentProcessor.fp; do not modify. |
| **************************************************************************************************/ |
| #include "GrOverdrawFragmentProcessor.h" |
| #if SK_SUPPORT_GPU |
| #include "glsl/GrGLSLFragmentProcessor.h" |
| #include "glsl/GrGLSLFragmentShaderBuilder.h" |
| #include "glsl/GrGLSLProgramBuilder.h" |
| #include "GrTexture.h" |
| #include "SkSLCPP.h" |
| #include "SkSLUtil.h" |
| class GrGLSLOverdrawFragmentProcessor : public GrGLSLFragmentProcessor { |
| public: |
| GrGLSLOverdrawFragmentProcessor() {} |
| void emitCode(EmitArgs& args) override { |
| GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; |
| const GrOverdrawFragmentProcessor& _outer = args.fFp.cast<GrOverdrawFragmentProcessor>(); |
| (void)_outer; |
| auto color0 = _outer.color0(); |
| (void)color0; |
| auto color1 = _outer.color1(); |
| (void)color1; |
| auto color2 = _outer.color2(); |
| (void)color2; |
| auto color3 = _outer.color3(); |
| (void)color3; |
| auto color4 = _outer.color4(); |
| (void)color4; |
| auto color5 = _outer.color5(); |
| (void)color5; |
| fragBuilder->codeAppendf( |
| "half alpha = half(255.0 * float(%s.w));\nif (float(alpha) < 0.5) {\n %s = " |
| "half4(%f, %f, %f, %f);\n} else if (float(alpha) < 1.5) {\n %s = half4(%f, %f, " |
| "%f, %f);\n} else if (float(alpha) < 2.5) {\n %s = half4(%f, %f, %f, %f);\n} " |
| "else if (float(alpha) < 3.5) {\n %s = half4(%f, %f, %f, %f);\n} else if " |
| "(float(alpha) < 4.5) {\n %s = half4(%f, %f, %f, %f);\n} else {\n %s = " |
| "half4(%f, %f, %f, %f);\n}\n", |
| args.fInputColor ? args.fInputColor : "half4(1)", args.fOutputColor, |
| SkGetPackedR32(_outer.color0()) / 255.0, SkGetPackedG32(_outer.color0()) / 255.0, |
| SkGetPackedB32(_outer.color0()) / 255.0, SkGetPackedA32(_outer.color0()) / 255.0, |
| args.fOutputColor, SkGetPackedR32(_outer.color1()) / 255.0, |
| SkGetPackedG32(_outer.color1()) / 255.0, SkGetPackedB32(_outer.color1()) / 255.0, |
| SkGetPackedA32(_outer.color1()) / 255.0, args.fOutputColor, |
| SkGetPackedR32(_outer.color2()) / 255.0, SkGetPackedG32(_outer.color2()) / 255.0, |
| SkGetPackedB32(_outer.color2()) / 255.0, SkGetPackedA32(_outer.color2()) / 255.0, |
| args.fOutputColor, SkGetPackedR32(_outer.color3()) / 255.0, |
| SkGetPackedG32(_outer.color3()) / 255.0, SkGetPackedB32(_outer.color3()) / 255.0, |
| SkGetPackedA32(_outer.color3()) / 255.0, args.fOutputColor, |
| SkGetPackedR32(_outer.color4()) / 255.0, SkGetPackedG32(_outer.color4()) / 255.0, |
| SkGetPackedB32(_outer.color4()) / 255.0, SkGetPackedA32(_outer.color4()) / 255.0, |
| args.fOutputColor, SkGetPackedR32(_outer.color5()) / 255.0, |
| SkGetPackedG32(_outer.color5()) / 255.0, SkGetPackedB32(_outer.color5()) / 255.0, |
| SkGetPackedA32(_outer.color5()) / 255.0); |
| } |
| |
| private: |
| void onSetData(const GrGLSLProgramDataManager& pdman, |
| const GrFragmentProcessor& _proc) override {} |
| }; |
| GrGLSLFragmentProcessor* GrOverdrawFragmentProcessor::onCreateGLSLInstance() const { |
| return new GrGLSLOverdrawFragmentProcessor(); |
| } |
| void GrOverdrawFragmentProcessor::onGetGLSLProcessorKey(const GrShaderCaps& caps, |
| GrProcessorKeyBuilder* b) const {} |
| bool GrOverdrawFragmentProcessor::onIsEqual(const GrFragmentProcessor& other) const { |
| const GrOverdrawFragmentProcessor& that = other.cast<GrOverdrawFragmentProcessor>(); |
| (void)that; |
| if (fColor0 != that.fColor0) return false; |
| if (fColor1 != that.fColor1) return false; |
| if (fColor2 != that.fColor2) return false; |
| if (fColor3 != that.fColor3) return false; |
| if (fColor4 != that.fColor4) return false; |
| if (fColor5 != that.fColor5) return false; |
| return true; |
| } |
| GrOverdrawFragmentProcessor::GrOverdrawFragmentProcessor(const GrOverdrawFragmentProcessor& src) |
| : INHERITED(kGrOverdrawFragmentProcessor_ClassID, src.optimizationFlags()) |
| , fColor0(src.fColor0) |
| , fColor1(src.fColor1) |
| , fColor2(src.fColor2) |
| , fColor3(src.fColor3) |
| , fColor4(src.fColor4) |
| , fColor5(src.fColor5) {} |
| std::unique_ptr<GrFragmentProcessor> GrOverdrawFragmentProcessor::clone() const { |
| return std::unique_ptr<GrFragmentProcessor>(new GrOverdrawFragmentProcessor(*this)); |
| } |
| #endif |