blob: 71704847d432ae596d183d0d92712e5399a81aef [file] [log] [blame]
Ethan Nicholasd608c092017-10-26 09:30:08 -04001/*
Ethan Nicholas130fb3f2018-02-01 12:14:34 -05002 * Copyright 2018 Google Inc.
Ethan Nicholasd608c092017-10-26 09:30:08 -04003 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Ethan Nicholas130fb3f2018-02-01 12:14:34 -05008/**************************************************************************************************
9 *** This file was autogenerated from GrOverdrawFragmentProcessor.fp; do not modify.
10 **************************************************************************************************/
Ethan Nicholasd608c092017-10-26 09:30:08 -040011#include "GrOverdrawFragmentProcessor.h"
Ethan Nicholasd608c092017-10-26 09:30:08 -040012#include "glsl/GrGLSLFragmentProcessor.h"
13#include "glsl/GrGLSLFragmentShaderBuilder.h"
14#include "glsl/GrGLSLProgramBuilder.h"
Ethan Nicholas2d5f9b32017-12-13 14:36:14 -050015#include "GrTexture.h"
Ethan Nicholasd608c092017-10-26 09:30:08 -040016#include "SkSLCPP.h"
17#include "SkSLUtil.h"
18class GrGLSLOverdrawFragmentProcessor : public GrGLSLFragmentProcessor {
19public:
20 GrGLSLOverdrawFragmentProcessor() {}
21 void emitCode(EmitArgs& args) override {
22 GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
23 const GrOverdrawFragmentProcessor& _outer = args.fFp.cast<GrOverdrawFragmentProcessor>();
24 (void)_outer;
25 auto color0 = _outer.color0();
26 (void)color0;
27 auto color1 = _outer.color1();
28 (void)color1;
29 auto color2 = _outer.color2();
30 (void)color2;
31 auto color3 = _outer.color3();
32 (void)color3;
33 auto color4 = _outer.color4();
34 (void)color4;
35 auto color5 = _outer.color5();
36 (void)color5;
37 fragBuilder->codeAppendf(
38 "half alpha = half(255.0 * float(%s.w));\nif (float(alpha) < 0.5) {\n %s = "
39 "half4(%f, %f, %f, %f);\n} else if (float(alpha) < 1.5) {\n %s = half4(%f, %f, "
40 "%f, %f);\n} else if (float(alpha) < 2.5) {\n %s = half4(%f, %f, %f, %f);\n} "
41 "else if (float(alpha) < 3.5) {\n %s = half4(%f, %f, %f, %f);\n} else if "
42 "(float(alpha) < 4.5) {\n %s = half4(%f, %f, %f, %f);\n} else {\n %s = "
43 "half4(%f, %f, %f, %f);\n}\n",
Michael Ludwig231de032018-08-30 14:33:01 -040044 args.fInputColor, args.fOutputColor, SkGetPackedR32(_outer.color0()) / 255.0,
45 SkGetPackedG32(_outer.color0()) / 255.0, SkGetPackedB32(_outer.color0()) / 255.0,
46 SkGetPackedA32(_outer.color0()) / 255.0, args.fOutputColor,
47 SkGetPackedR32(_outer.color1()) / 255.0, SkGetPackedG32(_outer.color1()) / 255.0,
48 SkGetPackedB32(_outer.color1()) / 255.0, SkGetPackedA32(_outer.color1()) / 255.0,
49 args.fOutputColor, SkGetPackedR32(_outer.color2()) / 255.0,
50 SkGetPackedG32(_outer.color2()) / 255.0, SkGetPackedB32(_outer.color2()) / 255.0,
51 SkGetPackedA32(_outer.color2()) / 255.0, args.fOutputColor,
52 SkGetPackedR32(_outer.color3()) / 255.0, SkGetPackedG32(_outer.color3()) / 255.0,
53 SkGetPackedB32(_outer.color3()) / 255.0, SkGetPackedA32(_outer.color3()) / 255.0,
54 args.fOutputColor, SkGetPackedR32(_outer.color4()) / 255.0,
55 SkGetPackedG32(_outer.color4()) / 255.0, SkGetPackedB32(_outer.color4()) / 255.0,
56 SkGetPackedA32(_outer.color4()) / 255.0, args.fOutputColor,
57 SkGetPackedR32(_outer.color5()) / 255.0, SkGetPackedG32(_outer.color5()) / 255.0,
58 SkGetPackedB32(_outer.color5()) / 255.0, SkGetPackedA32(_outer.color5()) / 255.0);
Ethan Nicholasd608c092017-10-26 09:30:08 -040059 }
60
61private:
62 void onSetData(const GrGLSLProgramDataManager& pdman,
63 const GrFragmentProcessor& _proc) override {}
64};
65GrGLSLFragmentProcessor* GrOverdrawFragmentProcessor::onCreateGLSLInstance() const {
66 return new GrGLSLOverdrawFragmentProcessor();
67}
68void GrOverdrawFragmentProcessor::onGetGLSLProcessorKey(const GrShaderCaps& caps,
69 GrProcessorKeyBuilder* b) const {}
70bool GrOverdrawFragmentProcessor::onIsEqual(const GrFragmentProcessor& other) const {
71 const GrOverdrawFragmentProcessor& that = other.cast<GrOverdrawFragmentProcessor>();
72 (void)that;
73 if (fColor0 != that.fColor0) return false;
74 if (fColor1 != that.fColor1) return false;
75 if (fColor2 != that.fColor2) return false;
76 if (fColor3 != that.fColor3) return false;
77 if (fColor4 != that.fColor4) return false;
78 if (fColor5 != that.fColor5) return false;
79 return true;
80}
81GrOverdrawFragmentProcessor::GrOverdrawFragmentProcessor(const GrOverdrawFragmentProcessor& src)
82 : INHERITED(kGrOverdrawFragmentProcessor_ClassID, src.optimizationFlags())
83 , fColor0(src.fColor0)
84 , fColor1(src.fColor1)
85 , fColor2(src.fColor2)
86 , fColor3(src.fColor3)
87 , fColor4(src.fColor4)
88 , fColor5(src.fColor5) {}
89std::unique_ptr<GrFragmentProcessor> GrOverdrawFragmentProcessor::clone() const {
90 return std::unique_ptr<GrFragmentProcessor>(new GrOverdrawFragmentProcessor(*this));
91}