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

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

Issue 1029423003: Calculate inverse scale for distance fields in vertex shader (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix shader for Tegra3 Created 5 years, 8 months 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
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(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex, 50 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix ,
51 const GrTextureParams& params, 51 const SkMatrix& localMatrix,
52 GrTexture* tex, const GrTextureParams& pa rams,
52 float lum, uint32_t flags, bool opaqueVer texColors) { 53 float lum, uint32_t flags, bool opaqueVer texColors) {
53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, tex, params, lum, 54 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, loca lMatrix, tex,
54 flags, opaqueVertexColor s)); 55 params, lum, flags, opa queVertexColors));
55 } 56 }
56 #else 57 #else
57 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex, 58 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix ,
58 const GrTextureParams& params, 59 const SkMatrix& localMatrix,
60 GrTexture* tex, const GrTextureParams& pa rams,
59 uint32_t flags, bool opaqueVertexColors) { 61 uint32_t flags, bool opaqueVertexColors) {
60 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, tex , params, flags, 62 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, loca lMatrix, tex,
61 opaqueVertexColors)); 63 params, flags, opaqueVe rtexColors));
62 } 64 }
63 #endif 65 #endif
64 66
65 virtual ~GrDistanceFieldTextureEffect() {} 67 virtual ~GrDistanceFieldTextureEffect() {}
66 68
67 const char* name() const override { return "DistanceFieldTexture"; } 69 const char* name() const override { return "DistanceFieldTexture"; }
68 70
69 const Attribute* inPosition() const { return fInPosition; } 71 const Attribute* inPosition() const { return fInPosition; }
70 const Attribute* inColor() const { return fInColor; } 72 const Attribute* inColor() const { return fInColor; }
71 const Attribute* inTextureCoords() const { return fInTextureCoords; } 73 const Attribute* inTextureCoords() const { return fInTextureCoords; }
72 #ifdef SK_GAMMA_APPLY_TO_A8 74 #ifdef SK_GAMMA_APPLY_TO_A8
73 float getDistanceAdjust() const { return fDistanceAdjust; } 75 float getDistanceAdjust() const { return fDistanceAdjust; }
74 #endif 76 #endif
75 uint32_t getFlags() const { return fFlags; } 77 uint32_t getFlags() const { return fFlags; }
76 78
77 virtual void getGLProcessorKey(const GrBatchTracker& bt, 79 virtual void getGLProcessorKey(const GrBatchTracker& bt,
78 const GrGLCaps& caps, 80 const GrGLCaps& caps,
79 GrProcessorKeyBuilder* b) const override; 81 GrProcessorKeyBuilder* b) const override;
80 82
81 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, 83 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
82 const GrGLCaps&) const over ride; 84 const GrGLCaps&) const over ride;
83 85
84 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override; 86 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override;
85 87
86 bool onCanMakeEqual(const GrBatchTracker&, 88 bool onCanMakeEqual(const GrBatchTracker&,
87 const GrGeometryProcessor&, 89 const GrGeometryProcessor&,
88 const GrBatchTracker&) const override; 90 const GrBatchTracker&) const override;
89 91
90 private: 92 private:
91 GrDistanceFieldTextureEffect(GrColor, const SkMatrix& viewMatrix, GrTexture* texture, 93 GrDistanceFieldTextureEffect(GrColor, const SkMatrix& viewMatrix, const SkMa trix& localMatrix,
92 const GrTextureParams& params, 94 GrTexture* texture, const GrTextureParams& para ms,
93 #ifdef SK_GAMMA_APPLY_TO_A8 95 #ifdef SK_GAMMA_APPLY_TO_A8
94 float distanceAdjust, 96 float distanceAdjust,
95 #endif 97 #endif
96 uint32_t flags, bool opaqueVertexColors); 98 uint32_t flags, bool opaqueVertexColors);
97 99
98 bool onIsEqual(const GrGeometryProcessor& other) const override; 100 bool onIsEqual(const GrGeometryProcessor& other) const override;
99 101
100 void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const override; 102 void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const override;
101 103
102 GrTextureAccess fTextureAccess; 104 GrTextureAccess fTextureAccess;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 return result; 189 return result;
188 } 190 }
189 bool operator==(const DistanceAdjust& wa) const { 191 bool operator==(const DistanceAdjust& wa) const {
190 return (fR == wa.fR && fG == wa.fG && fB == wa.fB); 192 return (fR == wa.fR && fG == wa.fG && fB == wa.fB);
191 } 193 }
192 bool operator!=(const DistanceAdjust& wa) const { 194 bool operator!=(const DistanceAdjust& wa) const {
193 return !(*this == wa); 195 return !(*this == wa);
194 } 196 }
195 }; 197 };
196 198
197 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex, 199 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix ,
198 const GrTextureParams& params, 200 const SkMatrix& localMatrix,
201 GrTexture* tex, const GrTextureParams& pa rams,
199 DistanceAdjust distanceAdjust, uint32_t f lags) { 202 DistanceAdjust distanceAdjust, uint32_t f lags) {
200 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect, 203 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
201 (color, viewMatrix, tex, params, distanceAdjust, flags )); 204 (color, viewMatrix, localMatrix, tex, params, distance Adjust, flags));
202 } 205 }
203 206
204 virtual ~GrDistanceFieldLCDTextureEffect() {} 207 virtual ~GrDistanceFieldLCDTextureEffect() {}
205 208
206 const char* name() const override { return "DistanceFieldLCDTexture"; } 209 const char* name() const override { return "DistanceFieldLCDTexture"; }
207 210
208 const Attribute* inPosition() const { return fInPosition; } 211 const Attribute* inPosition() const { return fInPosition; }
209 const Attribute* inTextureCoords() const { return fInTextureCoords; } 212 const Attribute* inTextureCoords() const { return fInTextureCoords; }
210 DistanceAdjust getDistanceAdjust() const { return fDistanceAdjust; } 213 DistanceAdjust getDistanceAdjust() const { return fDistanceAdjust; }
211 uint32_t getFlags() const { return fFlags; } 214 uint32_t getFlags() const { return fFlags; }
212 215
213 virtual void getGLProcessorKey(const GrBatchTracker& bt, 216 virtual void getGLProcessorKey(const GrBatchTracker& bt,
214 const GrGLCaps& caps, 217 const GrGLCaps& caps,
215 GrProcessorKeyBuilder* b) const override; 218 GrProcessorKeyBuilder* b) const override;
216 219
217 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, 220 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt,
218 const GrGLCaps&) const over ride; 221 const GrGLCaps&) const over ride;
219 222
220 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override; 223 void initBatchTracker(GrBatchTracker* bt, const GrPipelineInfo& init) const override;
221 224
222 bool onCanMakeEqual(const GrBatchTracker&, 225 bool onCanMakeEqual(const GrBatchTracker&,
223 const GrGeometryProcessor&, 226 const GrGeometryProcessor&,
224 const GrBatchTracker&) const override; 227 const GrBatchTracker&) const override;
225 228
226 private: 229 private:
227 GrDistanceFieldLCDTextureEffect(GrColor, const SkMatrix& viewMatrix, GrTextu re* texture, 230 GrDistanceFieldLCDTextureEffect(GrColor, const SkMatrix& viewMatrix,
228 const GrTextureParams& params, 231 const SkMatrix& localMatrix,
232 GrTexture* texture, const GrTextureParams& p arams,
229 DistanceAdjust wa, uint32_t flags); 233 DistanceAdjust wa, uint32_t flags);
230 234
231 bool onIsEqual(const GrGeometryProcessor& other) const override; 235 bool onIsEqual(const GrGeometryProcessor& other) const override;
232 236
233 void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const override; 237 void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const override;
234 238
235 GrTextureAccess fTextureAccess; 239 GrTextureAccess fTextureAccess;
236 DistanceAdjust fDistanceAdjust; 240 DistanceAdjust fDistanceAdjust;
237 uint32_t fFlags; 241 uint32_t fFlags;
238 const Attribute* fInPosition; 242 const Attribute* fInPosition;
239 const Attribute* fInTextureCoords; 243 const Attribute* fInTextureCoords;
240 244
241 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 245 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
242 246
243 typedef GrGeometryProcessor INHERITED; 247 typedef GrGeometryProcessor INHERITED;
244 }; 248 };
245 249
246 #endif 250 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrDistanceFieldTextContext.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698