Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: src/gpu/effects/GrDistanceFieldTextureEffect.h

Issue 783763002: Initial CL to move color / coverage off of drawstate (Closed) Base URL: https://skia.googlesource.com/skia.git@no-static-gp
Patch Set: bug fix Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrDistanceFieldTextureEffect_DEFINED 8 #ifndef GrDistanceFieldTextureEffect_DEFINED
9 #define GrDistanceFieldTextureEffect_DEFINED 9 #define GrDistanceFieldTextureEffect_DEFINED
10 10
(...skipping 29 matching lines...) Expand all
40 40
41 /** 41 /**
42 * The output color of this effect is a modulation of the input color and a samp le from a 42 * The output color of this effect is a modulation of the input color and a samp le from a
43 * distance field texture (using a smoothed step function near 0.5). 43 * distance field texture (using a smoothed step function near 0.5).
44 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input 44 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input
45 * coords are a custom attribute. Gamma correction is handled via a texture LUT. 45 * coords are a custom attribute. Gamma correction is handled via a texture LUT.
46 */ 46 */
47 class GrDistanceFieldTextureEffect : public GrGeometryProcessor { 47 class GrDistanceFieldTextureEffect : public GrGeometryProcessor {
48 public: 48 public:
49 #ifdef SK_GAMMA_APPLY_TO_A8 49 #ifdef SK_GAMMA_APPLY_TO_A8
50 static GrGeometryProcessor* Create(GrTexture* tex, const GrTextureParams& pa rams, 50 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
51 GrTexture* gamma, const GrTextureParams& gammaParams, 51 GrTexture* gamma, const GrTextureParams& gammaParams,
52 float lum, uint32_t flags) { 52 float lum, uint32_t flags) {
53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params, gamma, gamm aParams, lum, 53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, gamm a, gammaParams, lum,
54 flags)); 54 flags));
55 } 55 }
56 #else 56 #else
57 static GrGeometryProcessor* Create(GrTexture* tex, const GrTextureParams& pa rams, 57 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
58 uint32_t flags) { 58 uint32_t flags) {
59 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params, flags)); 59 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, fl ags));
60 } 60 }
61 #endif 61 #endif
62 62
63 virtual ~GrDistanceFieldTextureEffect() {} 63 virtual ~GrDistanceFieldTextureEffect() {}
64 64
65 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 65 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
66 66
67 const GrAttribute* inPosition() const { return fInPosition; } 67 const GrAttribute* inPosition() const { return fInPosition; }
68 const GrAttribute* inColor() const { return fInColor; } 68 const GrAttribute* inColor() const { return fInColor; }
69 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 69 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
70 #ifdef SK_GAMMA_APPLY_TO_A8 70 #ifdef SK_GAMMA_APPLY_TO_A8
71 float getLuminance() const { return fLuminance; } 71 float getLuminance() const { return fLuminance; }
72 #endif 72 #endif
73 uint32_t getFlags() const { return fFlags; } 73 uint32_t getFlags() const { return fFlags; }
74 74
75 virtual void getGLProcessorKey(const GrBatchTracker& bt, 75 virtual void getGLProcessorKey(const GrBatchTracker& bt,
76 const GrGLCaps& caps, 76 const GrGLCaps& caps,
77 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 77 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
78 78
79 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 79 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
80 80
81 private: 81 private:
82 GrDistanceFieldTextureEffect(GrTexture* texture, const GrTextureParams& para ms, 82 GrDistanceFieldTextureEffect(GrColor, GrTexture* texture, const GrTexturePar ams& params,
83 #ifdef SK_GAMMA_APPLY_TO_A8 83 #ifdef SK_GAMMA_APPLY_TO_A8
84 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum, 84 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum,
85 #endif 85 #endif
86 uint32_t flags); 86 uint32_t flags);
87 87
88 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 88 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
89 89
90 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 90 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE;
91 91
92 GrTextureAccess fTextureAccess; 92 GrTextureAccess fTextureAccess;
(...skipping 13 matching lines...) Expand all
106 106
107 107
108 /** 108 /**
109 * The output color of this effect is a modulation of the input color and a sampl e from a 109 * The output color of this effect is a modulation of the input color and a sampl e from a
110 * distance field texture (using a smoothed step function near 0.5). 110 * distance field texture (using a smoothed step function near 0.5).
111 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input 111 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input
112 * coords are a custom attribute. No gamma correct blending is applied. 112 * coords are a custom attribute. No gamma correct blending is applied.
113 */ 113 */
114 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor { 114 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor {
115 public: 115 public:
116 static GrGeometryProcessor* Create(GrTexture* tex, const GrTextureParams& pa rams, 116 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
117 uint32_t flags) { 117 uint32_t flags) {
118 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (tex, params, fla gs)); 118 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (color, tex, para ms, flags));
119 } 119 }
120 120
121 virtual ~GrDistanceFieldNoGammaTextureEffect() {} 121 virtual ~GrDistanceFieldNoGammaTextureEffect() {}
122 122
123 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 123 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
124 124
125 const GrAttribute* inPosition() const { return fInPosition; } 125 const GrAttribute* inPosition() const { return fInPosition; }
126 const GrAttribute* inColor() const { return fInColor; } 126 const GrAttribute* inColor() const { return fInColor; }
127 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 127 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
128 uint32_t getFlags() const { return fFlags; } 128 uint32_t getFlags() const { return fFlags; }
129 129
130 virtual void getGLProcessorKey(const GrBatchTracker& bt, 130 virtual void getGLProcessorKey(const GrBatchTracker& bt,
131 const GrGLCaps& caps, 131 const GrGLCaps& caps,
132 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 132 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
133 133
134 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 134 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
135 135
136 private: 136 private:
137 GrDistanceFieldNoGammaTextureEffect(GrTexture* texture, const GrTextureParam s& params, 137 GrDistanceFieldNoGammaTextureEffect(GrColor, GrTexture* texture, const GrTex tureParams& params,
138 uint32_t flags); 138 uint32_t flags);
139 139
140 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 140 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
141 141
142 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 142 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE;
143 143
144 GrTextureAccess fTextureAccess; 144 GrTextureAccess fTextureAccess;
145 uint32_t fFlags; 145 uint32_t fFlags;
146 const GrAttribute* fInPosition; 146 const GrAttribute* fInPosition;
147 const GrAttribute* fInColor; 147 const GrAttribute* fInColor;
148 const GrAttribute* fInTextureCoords; 148 const GrAttribute* fInTextureCoords;
149 149
150 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 150 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
151 151
152 typedef GrGeometryProcessor INHERITED; 152 typedef GrGeometryProcessor INHERITED;
153 }; 153 };
154 154
155 /** 155 /**
156 * The output color of this effect is a modulation of the input color and sample s from a 156 * The output color of this effect is a modulation of the input color and sample s from a
157 * distance field texture (using a smoothed step function near 0.5), adjusted fo r LCD displays. 157 * distance field texture (using a smoothed step function near 0.5), adjusted fo r LCD displays.
158 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input 158 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input
159 * coords are a custom attribute. Gamma correction is handled via a texture LUT. 159 * coords are a custom attribute. Gamma correction is handled via a texture LUT.
160 */ 160 */
161 class GrDistanceFieldLCDTextureEffect : public GrGeometryProcessor { 161 class GrDistanceFieldLCDTextureEffect : public GrGeometryProcessor {
162 public: 162 public:
163 static GrGeometryProcessor* Create(GrTexture* tex, const GrTextureParams& pa rams, 163 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
164 GrTexture* gamma, const GrTextureParams& gammaParams, 164 GrTexture* gamma, const GrTextureParams& gammaParams,
165 SkColor textColor, uint32_t flags) { 165 SkColor textColor, uint32_t flags) {
166 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect, 166 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
167 (tex, params, gamma, gammaParams, textColor, flags)); 167 (color, tex, params, gamma, gammaParams, textColor, fl ags));
168 } 168 }
169 169
170 virtual ~GrDistanceFieldLCDTextureEffect() {} 170 virtual ~GrDistanceFieldLCDTextureEffect() {}
171 171
172 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldLCDTextu re"; } 172 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldLCDTextu re"; }
173 173
174 const GrAttribute* inPosition() const { return fInPosition; } 174 const GrAttribute* inPosition() const { return fInPosition; }
175 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 175 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
176 GrColor getTextColor() const { return fTextColor; } 176 GrColor getTextColor() const { return fTextColor; }
177 uint32_t getFlags() const { return fFlags; } 177 uint32_t getFlags() const { return fFlags; }
178 178
179 virtual void getGLProcessorKey(const GrBatchTracker& bt, 179 virtual void getGLProcessorKey(const GrBatchTracker& bt,
180 const GrGLCaps& caps, 180 const GrGLCaps& caps,
181 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 181 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
182 182
183 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 183 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
184 184
185 private: 185 private:
186 GrDistanceFieldLCDTextureEffect(GrTexture* texture, const GrTextureParams& p arams, 186 GrDistanceFieldLCDTextureEffect(GrColor, GrTexture* texture, const GrTexture Params& params,
187 GrTexture* gamma, const GrTextureParams& gam maParams, 187 GrTexture* gamma, const GrTextureParams& gam maParams,
188 SkColor textColor, 188 SkColor textColor,
189 uint32_t flags); 189 uint32_t flags);
190 190
191 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 191 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
192 192
193 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 193 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE;
194 194
195 GrTextureAccess fTextureAccess; 195 GrTextureAccess fTextureAccess;
196 GrTextureAccess fGammaTextureAccess; 196 GrTextureAccess fGammaTextureAccess;
197 GrColor fTextColor; 197 GrColor fTextColor;
198 uint32_t fFlags; 198 uint32_t fFlags;
199 const GrAttribute* fInPosition; 199 const GrAttribute* fInPosition;
200 const GrAttribute* fInTextureCoords; 200 const GrAttribute* fInTextureCoords;
201 201
202 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 202 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
203 203
204 typedef GrGeometryProcessor INHERITED; 204 typedef GrGeometryProcessor INHERITED;
205 }; 205 };
206 206
207 #endif 207 #endif
OLDNEW
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698