OLD | NEW |
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 #include "GrBezierEffect.h" | 8 #include "GrBezierEffect.h" |
9 | 9 |
10 #include "gl/GrGLEffect.h" | 10 #include "gl/GrGLEffect.h" |
11 #include "gl/GrGLSL.h" | 11 #include "gl/GrGLSL.h" |
12 #include "GrTBackendEffectFactory.h" | 12 #include "GrTBackendEffectFactory.h" |
13 | 13 |
14 class GrGLConicEffect : public GrGLEffect { | 14 class GrGLConicEffect : public GrGLEffect { |
15 public: | 15 public: |
16 GrGLConicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 16 GrGLConicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
17 | 17 |
18 virtual void emitCode(GrGLShaderBuilder* builder, | 18 virtual void emitCode(GrGLShaderBuilder* builder, |
19 const GrDrawEffect& drawEffect, | 19 const GrDrawEffect& drawEffect, |
20 EffectKey key, | 20 EffectKey key, |
21 const char* outputColor, | 21 const char* outputColor, |
22 const char* inputColor, | 22 const char* inputColor, |
| 23 const TransformedCoordsArray&, |
23 const TextureSamplerArray&) SK_OVERRIDE; | 24 const TextureSamplerArray&) SK_OVERRIDE; |
24 | 25 |
25 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 26 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
26 | 27 |
27 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 28 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
28 | 29 |
29 private: | 30 private: |
30 GrBezierEdgeType fEdgeType; | 31 GrBezierEdgeType fEdgeType; |
31 | 32 |
32 typedef GrGLEffect INHERITED; | 33 typedef GrGLEffect INHERITED; |
33 }; | 34 }; |
34 | 35 |
35 GrGLConicEffect::GrGLConicEffect(const GrBackendEffectFactory& factory, | 36 GrGLConicEffect::GrGLConicEffect(const GrBackendEffectFactory& factory, |
36 const GrDrawEffect& drawEffect) | 37 const GrDrawEffect& drawEffect) |
37 : INHERITED (factory) { | 38 : INHERITED (factory) { |
38 const GrConicEffect& ce = drawEffect.castEffect<GrConicEffect>(); | 39 const GrConicEffect& ce = drawEffect.castEffect<GrConicEffect>(); |
39 fEdgeType = ce.getEdgeType(); | 40 fEdgeType = ce.getEdgeType(); |
40 } | 41 } |
41 | 42 |
42 void GrGLConicEffect::emitCode(GrGLShaderBuilder* builder, | 43 void GrGLConicEffect::emitCode(GrGLShaderBuilder* builder, |
43 const GrDrawEffect& drawEffect, | 44 const GrDrawEffect& drawEffect, |
44 EffectKey key, | 45 EffectKey key, |
45 const char* outputColor, | 46 const char* outputColor, |
46 const char* inputColor, | 47 const char* inputColor, |
| 48 const TransformedCoordsArray&, |
47 const TextureSamplerArray& samplers) { | 49 const TextureSamplerArray& samplers) { |
48 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 50 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
49 SkASSERT(NULL != vertexBuilder); | 51 SkASSERT(NULL != vertexBuilder); |
50 | 52 |
51 const char *vsName, *fsName; | 53 const char *vsName, *fsName; |
52 | 54 |
53 vertexBuilder->addVarying(kVec4f_GrSLType, "ConicCoeffs", | 55 vertexBuilder->addVarying(kVec4f_GrSLType, "ConicCoeffs", |
54 &vsName, &fsName); | 56 &vsName, &fsName); |
55 const SkString* attr0Name = | 57 const SkString* attr0Name = |
56 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 58 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 | 158 |
157 class GrGLQuadEffect : public GrGLEffect { | 159 class GrGLQuadEffect : public GrGLEffect { |
158 public: | 160 public: |
159 GrGLQuadEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 161 GrGLQuadEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
160 | 162 |
161 virtual void emitCode(GrGLShaderBuilder* builder, | 163 virtual void emitCode(GrGLShaderBuilder* builder, |
162 const GrDrawEffect& drawEffect, | 164 const GrDrawEffect& drawEffect, |
163 EffectKey key, | 165 EffectKey key, |
164 const char* outputColor, | 166 const char* outputColor, |
165 const char* inputColor, | 167 const char* inputColor, |
| 168 const TransformedCoordsArray&, |
166 const TextureSamplerArray&) SK_OVERRIDE; | 169 const TextureSamplerArray&) SK_OVERRIDE; |
167 | 170 |
168 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 171 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
169 | 172 |
170 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 173 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
171 | 174 |
172 private: | 175 private: |
173 GrBezierEdgeType fEdgeType; | 176 GrBezierEdgeType fEdgeType; |
174 | 177 |
175 typedef GrGLEffect INHERITED; | 178 typedef GrGLEffect INHERITED; |
176 }; | 179 }; |
177 | 180 |
178 GrGLQuadEffect::GrGLQuadEffect(const GrBackendEffectFactory& factory, | 181 GrGLQuadEffect::GrGLQuadEffect(const GrBackendEffectFactory& factory, |
179 const GrDrawEffect& drawEffect) | 182 const GrDrawEffect& drawEffect) |
180 : INHERITED (factory) { | 183 : INHERITED (factory) { |
181 const GrQuadEffect& ce = drawEffect.castEffect<GrQuadEffect>(); | 184 const GrQuadEffect& ce = drawEffect.castEffect<GrQuadEffect>(); |
182 fEdgeType = ce.getEdgeType(); | 185 fEdgeType = ce.getEdgeType(); |
183 } | 186 } |
184 | 187 |
185 void GrGLQuadEffect::emitCode(GrGLShaderBuilder* builder, | 188 void GrGLQuadEffect::emitCode(GrGLShaderBuilder* builder, |
186 const GrDrawEffect& drawEffect, | 189 const GrDrawEffect& drawEffect, |
187 EffectKey key, | 190 EffectKey key, |
188 const char* outputColor, | 191 const char* outputColor, |
189 const char* inputColor, | 192 const char* inputColor, |
| 193 const TransformedCoordsArray&, |
190 const TextureSamplerArray& samplers) { | 194 const TextureSamplerArray& samplers) { |
191 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 195 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
192 SkASSERT(NULL != vertexBuilder); | 196 SkASSERT(NULL != vertexBuilder); |
193 | 197 |
194 const char *vsName, *fsName; | 198 const char *vsName, *fsName; |
195 | 199 |
196 const SkString* attrName = | 200 const SkString* attrName = |
197 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 201 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
198 builder->fsCodeAppendf("\t\tfloat edgeAlpha;\n"); | 202 builder->fsCodeAppendf("\t\tfloat edgeAlpha;\n"); |
199 | 203 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 | 292 |
289 class GrGLCubicEffect : public GrGLEffect { | 293 class GrGLCubicEffect : public GrGLEffect { |
290 public: | 294 public: |
291 GrGLCubicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); | 295 GrGLCubicEffect(const GrBackendEffectFactory&, const GrDrawEffect&); |
292 | 296 |
293 virtual void emitCode(GrGLShaderBuilder* builder, | 297 virtual void emitCode(GrGLShaderBuilder* builder, |
294 const GrDrawEffect& drawEffect, | 298 const GrDrawEffect& drawEffect, |
295 EffectKey key, | 299 EffectKey key, |
296 const char* outputColor, | 300 const char* outputColor, |
297 const char* inputColor, | 301 const char* inputColor, |
| 302 const TransformedCoordsArray&, |
298 const TextureSamplerArray&) SK_OVERRIDE; | 303 const TextureSamplerArray&) SK_OVERRIDE; |
299 | 304 |
300 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); | 305 static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
301 | 306 |
302 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} | 307 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER
RIDE {} |
303 | 308 |
304 private: | 309 private: |
305 GrBezierEdgeType fEdgeType; | 310 GrBezierEdgeType fEdgeType; |
306 | 311 |
307 typedef GrGLEffect INHERITED; | 312 typedef GrGLEffect INHERITED; |
308 }; | 313 }; |
309 | 314 |
310 GrGLCubicEffect::GrGLCubicEffect(const GrBackendEffectFactory& factory, | 315 GrGLCubicEffect::GrGLCubicEffect(const GrBackendEffectFactory& factory, |
311 const GrDrawEffect& drawEffect) | 316 const GrDrawEffect& drawEffect) |
312 : INHERITED (factory) { | 317 : INHERITED (factory) { |
313 const GrCubicEffect& ce = drawEffect.castEffect<GrCubicEffect>(); | 318 const GrCubicEffect& ce = drawEffect.castEffect<GrCubicEffect>(); |
314 fEdgeType = ce.getEdgeType(); | 319 fEdgeType = ce.getEdgeType(); |
315 } | 320 } |
316 | 321 |
317 void GrGLCubicEffect::emitCode(GrGLShaderBuilder* builder, | 322 void GrGLCubicEffect::emitCode(GrGLShaderBuilder* builder, |
318 const GrDrawEffect& drawEffect, | 323 const GrDrawEffect& drawEffect, |
319 EffectKey key, | 324 EffectKey key, |
320 const char* outputColor, | 325 const char* outputColor, |
321 const char* inputColor, | 326 const char* inputColor, |
| 327 const TransformedCoordsArray&, |
322 const TextureSamplerArray& samplers) { | 328 const TextureSamplerArray& samplers) { |
323 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); | 329 GrGLShaderBuilder::VertexBuilder* vertexBuilder = builder->getVertexBuilder(
); |
324 SkASSERT(NULL != vertexBuilder); | 330 SkASSERT(NULL != vertexBuilder); |
325 | 331 |
326 const char *vsName, *fsName; | 332 const char *vsName, *fsName; |
327 | 333 |
328 vertexBuilder->addVarying(kVec4f_GrSLType, "CubicCoeffs", | 334 vertexBuilder->addVarying(kVec4f_GrSLType, "CubicCoeffs", |
329 &vsName, &fsName); | 335 &vsName, &fsName); |
330 const SkString* attr0Name = | 336 const SkString* attr0Name = |
331 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); | 337 vertexBuilder->getEffectAttributeName(drawEffect.getVertexAttribIndices(
)[0]); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 | 423 |
418 GR_DEFINE_EFFECT_TEST(GrCubicEffect); | 424 GR_DEFINE_EFFECT_TEST(GrCubicEffect); |
419 | 425 |
420 GrEffectRef* GrCubicEffect::TestCreate(SkRandom* random, | 426 GrEffectRef* GrCubicEffect::TestCreate(SkRandom* random, |
421 GrContext*, | 427 GrContext*, |
422 const GrDrawTargetCaps& caps, | 428 const GrDrawTargetCaps& caps, |
423 GrTexture*[]) { | 429 GrTexture*[]) { |
424 const GrBezierEdgeType edgeType = static_cast<GrBezierEdgeType>(random->next
ULessThan(3)); | 430 const GrBezierEdgeType edgeType = static_cast<GrBezierEdgeType>(random->next
ULessThan(3)); |
425 return GrCubicEffect::Create(edgeType, caps); | 431 return GrCubicEffect::Create(edgeType, caps); |
426 } | 432 } |
OLD | NEW |