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

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

Issue 815553003: Move ViewMatrix off of drawstate (Closed) Base URL: https://skia.googlesource.com/skia.git@remove-fragment-stage
Patch Set: more cleaning Created 5 years, 11 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
« 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(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 50 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex,
51 const GrTextureParams& params,
51 GrTexture* gamma, const GrTextureParams& gammaParams, 52 GrTexture* gamma, const GrTextureParams& gammaParams,
52 float lum, uint32_t flags, bool opaqueVer texColors) { 53 float lum, uint32_t flags, bool opaqueVer texColors) {
53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, gamm a, gammaParams, lum, 54 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, tex, params, gamma,
55 gammaParams, lum,
54 flags, opaqueVertexColor s)); 56 flags, opaqueVertexColor s));
55 } 57 }
56 #else 58 #else
57 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 59 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex,
60 const GrTextureParams& params,
58 uint32_t flags, bool opaqueVertexColors) { 61 uint32_t flags, bool opaqueVertexColors) {
59 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, fl ags, 62 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, viewMatrix, tex , params, flags,
60 opaqueVertexColors)); 63 opaqueVertexColors));
61 } 64 }
62 #endif 65 #endif
63 66
64 virtual ~GrDistanceFieldTextureEffect() {} 67 virtual ~GrDistanceFieldTextureEffect() {}
65 68
66 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 69 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
67 70
68 const GrAttribute* inPosition() const { return fInPosition; } 71 const GrAttribute* inPosition() const { return fInPosition; }
69 const GrAttribute* inColor() const { return fInColor; } 72 const GrAttribute* inColor() const { return fInColor; }
70 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 73 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
71 #ifdef SK_GAMMA_APPLY_TO_A8 74 #ifdef SK_GAMMA_APPLY_TO_A8
72 float getLuminance() const { return fLuminance; } 75 float getLuminance() const { return fLuminance; }
73 #endif 76 #endif
74 uint32_t getFlags() const { return fFlags; } 77 uint32_t getFlags() const { return fFlags; }
75 78
76 virtual void getGLProcessorKey(const GrBatchTracker& bt, 79 virtual void getGLProcessorKey(const GrBatchTracker& bt,
77 const GrGLCaps& caps, 80 const GrGLCaps& caps,
78 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 81 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
79 82
80 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 83 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
81 84
82 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 85 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
83 86
84 bool onCanMakeEqual(const GrBatchTracker&, 87 bool onCanMakeEqual(const GrBatchTracker&,
85 const GrGeometryProcessor&, 88 const GrGeometryProcessor&,
86 const GrBatchTracker&) const SK_OVERRIDE; 89 const GrBatchTracker&) const SK_OVERRIDE;
87 90
88 private: 91 private:
89 GrDistanceFieldTextureEffect(GrColor, GrTexture* texture, const GrTexturePar ams& params, 92 GrDistanceFieldTextureEffect(GrColor, const SkMatrix& viewMatrix, GrTexture* texture,
93 const GrTextureParams& params,
90 #ifdef SK_GAMMA_APPLY_TO_A8 94 #ifdef SK_GAMMA_APPLY_TO_A8
91 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum, 95 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum,
92 #endif 96 #endif
93 uint32_t flags, bool opaqueVertexColors); 97 uint32_t flags, bool opaqueVertexColors);
94 98
95 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 99 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
96 100
97 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE; 101 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
98 102
99 GrTextureAccess fTextureAccess; 103 GrTextureAccess fTextureAccess;
(...skipping 13 matching lines...) Expand all
113 117
114 118
115 /** 119 /**
116 * The output color of this effect is a modulation of the input color and a sampl e from a 120 * The output color of this effect is a modulation of the input color and a sampl e from a
117 * distance field texture (using a smoothed step function near 0.5). 121 * distance field texture (using a smoothed step function near 0.5).
118 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input 122 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input
119 * coords are a custom attribute. No gamma correct blending is applied. 123 * coords are a custom attribute. No gamma correct blending is applied.
120 */ 124 */
121 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor { 125 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor {
122 public: 126 public:
123 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 127 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex,
128 const GrTextureParams& params,
124 uint32_t flags, bool opaqueVertexColors) { 129 uint32_t flags, bool opaqueVertexColors) {
125 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (color, tex, para ms, flags, 130 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (color, viewMatri x, tex, params,
126 opaqueVertexColo rs)); 131 flags, opaqueVer texColors));
127 } 132 }
128 133
129 virtual ~GrDistanceFieldNoGammaTextureEffect() {} 134 virtual ~GrDistanceFieldNoGammaTextureEffect() {}
130 135
131 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 136 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
132 137
133 const GrAttribute* inPosition() const { return fInPosition; } 138 const GrAttribute* inPosition() const { return fInPosition; }
134 const GrAttribute* inColor() const { return fInColor; } 139 const GrAttribute* inColor() const { return fInColor; }
135 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 140 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
136 uint32_t getFlags() const { return fFlags; } 141 uint32_t getFlags() const { return fFlags; }
137 142
138 virtual void getGLProcessorKey(const GrBatchTracker& bt, 143 virtual void getGLProcessorKey(const GrBatchTracker& bt,
139 const GrGLCaps& caps, 144 const GrGLCaps& caps,
140 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 145 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
141 146
142 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 147 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
143 148
144 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 149 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
145 150
146 bool onCanMakeEqual(const GrBatchTracker&, 151 bool onCanMakeEqual(const GrBatchTracker&,
147 const GrGeometryProcessor&, 152 const GrGeometryProcessor&,
148 const GrBatchTracker&) const SK_OVERRIDE; 153 const GrBatchTracker&) const SK_OVERRIDE;
149 154
150 private: 155 private:
151 GrDistanceFieldNoGammaTextureEffect(GrColor, GrTexture* texture, const GrTex tureParams& params, 156 GrDistanceFieldNoGammaTextureEffect(GrColor, const SkMatrix& viewMatrix, GrT exture* texture,
152 uint32_t flags, bool opaqueVertexColors) ; 157 const GrTextureParams& params, uint32_t flags,
158 bool opaqueVertexColors);
153 159
154 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 160 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
155 161
156 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE; 162 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
157 163
158 GrTextureAccess fTextureAccess; 164 GrTextureAccess fTextureAccess;
159 uint32_t fFlags; 165 uint32_t fFlags;
160 const GrAttribute* fInPosition; 166 const GrAttribute* fInPosition;
161 const GrAttribute* fInColor; 167 const GrAttribute* fInColor;
162 const GrAttribute* fInTextureCoords; 168 const GrAttribute* fInTextureCoords;
163 169
164 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 170 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
165 171
166 typedef GrGeometryProcessor INHERITED; 172 typedef GrGeometryProcessor INHERITED;
167 }; 173 };
168 174
169 /** 175 /**
170 * The output color of this effect is a modulation of the input color and sample s from a 176 * The output color of this effect is a modulation of the input color and sample s from a
171 * distance field texture (using a smoothed step function near 0.5), adjusted fo r LCD displays. 177 * distance field texture (using a smoothed step function near 0.5), adjusted fo r LCD displays.
172 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input 178 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input
173 * coords are a custom attribute. Gamma correction is handled via a texture LUT. 179 * coords are a custom attribute. Gamma correction is handled via a texture LUT.
174 */ 180 */
175 class GrDistanceFieldLCDTextureEffect : public GrGeometryProcessor { 181 class GrDistanceFieldLCDTextureEffect : public GrGeometryProcessor {
176 public: 182 public:
177 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 183 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix , GrTexture* tex,
178 GrTexture* gamma, const GrTextureParams& gammaParams, 184 const GrTextureParams& params, GrTexture* gamma,
185 const GrTextureParams& gammaParams,
179 SkColor textColor, uint32_t flags) { 186 SkColor textColor, uint32_t flags) {
180 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect, 187 return SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
181 (color, tex, params, gamma, gammaParams, textColor, fl ags)); 188 (color, viewMatrix, tex, params, gamma, gammaParams, t extColor, flags));
182 } 189 }
183 190
184 virtual ~GrDistanceFieldLCDTextureEffect() {} 191 virtual ~GrDistanceFieldLCDTextureEffect() {}
185 192
186 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldLCDTextu re"; } 193 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldLCDTextu re"; }
187 194
188 const GrAttribute* inPosition() const { return fInPosition; } 195 const GrAttribute* inPosition() const { return fInPosition; }
189 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 196 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
190 GrColor getTextColor() const { return fTextColor; } 197 GrColor getTextColor() const { return fTextColor; }
191 uint32_t getFlags() const { return fFlags; } 198 uint32_t getFlags() const { return fFlags; }
192 199
193 virtual void getGLProcessorKey(const GrBatchTracker& bt, 200 virtual void getGLProcessorKey(const GrBatchTracker& bt,
194 const GrGLCaps& caps, 201 const GrGLCaps& caps,
195 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 202 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
196 203
197 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 204 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
198 205
199 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE; 206 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR IDE;
200 207
201 bool onCanMakeEqual(const GrBatchTracker&, 208 bool onCanMakeEqual(const GrBatchTracker&,
202 const GrGeometryProcessor&, 209 const GrGeometryProcessor&,
203 const GrBatchTracker&) const SK_OVERRIDE; 210 const GrBatchTracker&) const SK_OVERRIDE;
204 211
205 private: 212 private:
206 GrDistanceFieldLCDTextureEffect(GrColor, GrTexture* texture, const GrTexture Params& params, 213 GrDistanceFieldLCDTextureEffect(GrColor, const SkMatrix& viewMatrix, GrTextu re* texture,
214 const GrTextureParams& params,
207 GrTexture* gamma, const GrTextureParams& gam maParams, 215 GrTexture* gamma, const GrTextureParams& gam maParams,
208 SkColor textColor, 216 SkColor textColor, uint32_t flags);
209 uint32_t flags);
210 217
211 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 218 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
212 219
213 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE; 220 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
214 221
215 GrTextureAccess fTextureAccess; 222 GrTextureAccess fTextureAccess;
216 GrTextureAccess fGammaTextureAccess; 223 GrTextureAccess fGammaTextureAccess;
217 GrColor fTextColor; 224 GrColor fTextColor;
218 uint32_t fFlags; 225 uint32_t fFlags;
219 const GrAttribute* fInPosition; 226 const GrAttribute* fInPosition;
220 const GrAttribute* fInTextureCoords; 227 const GrAttribute* fInTextureCoords;
221 228
222 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 229 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
223 230
224 typedef GrGeometryProcessor INHERITED; 231 typedef GrGeometryProcessor INHERITED;
225 }; 232 };
226 233
227 #endif 234 #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