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/GrGLFragmentProcessor.h" | 10 #include "gl/GrGLFragmentProcessor.h" |
11 #include "gl/GrGLGeometryProcessor.h" | 11 #include "gl/GrGLGeometryProcessor.h" |
12 #include "gl/GrGLUtil.h" | 12 #include "gl/GrGLUtil.h" |
13 #include "gl/builders/GrGLProgramBuilder.h" | 13 #include "gl/builders/GrGLProgramBuilder.h" |
| 14 #include "glsl/GrGLSLProgramDataManager.h" |
14 | 15 |
15 class GrGLConicEffect : public GrGLGeometryProcessor { | 16 class GrGLConicEffect : public GrGLGeometryProcessor { |
16 public: | 17 public: |
17 GrGLConicEffect(const GrGeometryProcessor&); | 18 GrGLConicEffect(const GrGeometryProcessor&); |
18 | 19 |
19 void onEmitCode(EmitArgs&, GrGPArgs*) override; | 20 void onEmitCode(EmitArgs&, GrGPArgs*) override; |
20 | 21 |
21 static inline void GenKey(const GrGeometryProcessor&, | 22 static inline void GenKey(const GrGeometryProcessor&, |
22 const GrGLSLCaps&, | 23 const GrGLSLCaps&, |
23 GrProcessorKeyBuilder*); | 24 GrProcessorKeyBuilder*); |
24 | 25 |
25 void setData(const GrGLProgramDataManager& pdman, | 26 void setData(const GrGLSLProgramDataManager& pdman, |
26 const GrPrimitiveProcessor& primProc) override { | 27 const GrPrimitiveProcessor& primProc) override { |
27 const GrConicEffect& ce = primProc.cast<GrConicEffect>(); | 28 const GrConicEffect& ce = primProc.cast<GrConicEffect>(); |
28 | 29 |
29 if (!ce.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(ce.viewMa
trix())) { | 30 if (!ce.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(ce.viewMa
trix())) { |
30 fViewMatrix = ce.viewMatrix(); | 31 fViewMatrix = ce.viewMatrix(); |
31 GrGLfloat viewMatrix[3 * 3]; | 32 float viewMatrix[3 * 3]; |
32 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); | 33 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); |
33 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); | 34 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); |
34 } | 35 } |
35 | 36 |
36 if (ce.color() != fColor) { | 37 if (ce.color() != fColor) { |
37 GrGLfloat c[4]; | 38 float c[4]; |
38 GrColorToRGBAFloat(ce.color(), c); | 39 GrColorToRGBAFloat(ce.color(), c); |
39 pdman.set4fv(fColorUniform, 1, c); | 40 pdman.set4fv(fColorUniform, 1, c); |
40 fColor = ce.color(); | 41 fColor = ce.color(); |
41 } | 42 } |
42 | 43 |
43 if (ce.coverageScale() != 0xff && ce.coverageScale() != fCoverageScale)
{ | 44 if (ce.coverageScale() != 0xff && ce.coverageScale() != fCoverageScale)
{ |
44 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(ce.coverag
eScale())); | 45 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(ce.coverag
eScale())); |
45 fCoverageScale = ce.coverageScale(); | 46 fCoverageScale = ce.coverageScale(); |
46 } | 47 } |
47 } | 48 } |
48 | 49 |
49 void setTransformData(const GrPrimitiveProcessor& primProc, | 50 void setTransformData(const GrPrimitiveProcessor& primProc, |
50 const GrGLProgramDataManager& pdman, | 51 const GrGLSLProgramDataManager& pdman, |
51 int index, | 52 int index, |
52 const SkTArray<const GrCoordTransform*, true>& transfo
rms) override { | 53 const SkTArray<const GrCoordTransform*, true>& transfo
rms) override { |
53 this->setTransformDataHelper<GrConicEffect>(primProc, pdman, index, tran
sforms); | 54 this->setTransformDataHelper<GrConicEffect>(primProc, pdman, index, tran
sforms); |
54 } | 55 } |
55 | 56 |
56 private: | 57 private: |
57 SkMatrix fViewMatrix; | 58 SkMatrix fViewMatrix; |
58 GrColor fColor; | 59 GrColor fColor; |
59 uint8_t fCoverageScale; | 60 uint8_t fCoverageScale; |
60 GrPrimitiveEdgeType fEdgeType; | 61 GrPrimitiveEdgeType fEdgeType; |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 class GrGLQuadEffect : public GrGLGeometryProcessor { | 232 class GrGLQuadEffect : public GrGLGeometryProcessor { |
232 public: | 233 public: |
233 GrGLQuadEffect(const GrGeometryProcessor&); | 234 GrGLQuadEffect(const GrGeometryProcessor&); |
234 | 235 |
235 void onEmitCode(EmitArgs&, GrGPArgs*) override; | 236 void onEmitCode(EmitArgs&, GrGPArgs*) override; |
236 | 237 |
237 static inline void GenKey(const GrGeometryProcessor&, | 238 static inline void GenKey(const GrGeometryProcessor&, |
238 const GrGLSLCaps&, | 239 const GrGLSLCaps&, |
239 GrProcessorKeyBuilder*); | 240 GrProcessorKeyBuilder*); |
240 | 241 |
241 void setData(const GrGLProgramDataManager& pdman, | 242 void setData(const GrGLSLProgramDataManager& pdman, |
242 const GrPrimitiveProcessor& primProc) override { | 243 const GrPrimitiveProcessor& primProc) override { |
243 const GrQuadEffect& qe = primProc.cast<GrQuadEffect>(); | 244 const GrQuadEffect& qe = primProc.cast<GrQuadEffect>(); |
244 | 245 |
245 if (!qe.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(qe.viewMa
trix())) { | 246 if (!qe.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(qe.viewMa
trix())) { |
246 fViewMatrix = qe.viewMatrix(); | 247 fViewMatrix = qe.viewMatrix(); |
247 GrGLfloat viewMatrix[3 * 3]; | 248 float viewMatrix[3 * 3]; |
248 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); | 249 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); |
249 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); | 250 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); |
250 } | 251 } |
251 | 252 |
252 if (qe.color() != fColor) { | 253 if (qe.color() != fColor) { |
253 GrGLfloat c[4]; | 254 float c[4]; |
254 GrColorToRGBAFloat(qe.color(), c); | 255 GrColorToRGBAFloat(qe.color(), c); |
255 pdman.set4fv(fColorUniform, 1, c); | 256 pdman.set4fv(fColorUniform, 1, c); |
256 fColor = qe.color(); | 257 fColor = qe.color(); |
257 } | 258 } |
258 | 259 |
259 if (qe.coverageScale() != 0xff && qe.coverageScale() != fCoverageScale)
{ | 260 if (qe.coverageScale() != 0xff && qe.coverageScale() != fCoverageScale)
{ |
260 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(qe.coverag
eScale())); | 261 pdman.set1f(fCoverageScaleUniform, GrNormalizeByteToFloat(qe.coverag
eScale())); |
261 fCoverageScale = qe.coverageScale(); | 262 fCoverageScale = qe.coverageScale(); |
262 } | 263 } |
263 } | 264 } |
264 | 265 |
265 void setTransformData(const GrPrimitiveProcessor& primProc, | 266 void setTransformData(const GrPrimitiveProcessor& primProc, |
266 const GrGLProgramDataManager& pdman, | 267 const GrGLSLProgramDataManager& pdman, |
267 int index, | 268 int index, |
268 const SkTArray<const GrCoordTransform*, true>& transfo
rms) override { | 269 const SkTArray<const GrCoordTransform*, true>& transfo
rms) override { |
269 this->setTransformDataHelper<GrQuadEffect>(primProc, pdman, index, trans
forms); | 270 this->setTransformDataHelper<GrQuadEffect>(primProc, pdman, index, trans
forms); |
270 } | 271 } |
271 | 272 |
272 private: | 273 private: |
273 SkMatrix fViewMatrix; | 274 SkMatrix fViewMatrix; |
274 GrColor fColor; | 275 GrColor fColor; |
275 uint8_t fCoverageScale; | 276 uint8_t fCoverageScale; |
276 GrPrimitiveEdgeType fEdgeType; | 277 GrPrimitiveEdgeType fEdgeType; |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 class GrGLCubicEffect : public GrGLGeometryProcessor { | 434 class GrGLCubicEffect : public GrGLGeometryProcessor { |
434 public: | 435 public: |
435 GrGLCubicEffect(const GrGeometryProcessor&); | 436 GrGLCubicEffect(const GrGeometryProcessor&); |
436 | 437 |
437 void onEmitCode(EmitArgs&, GrGPArgs*) override; | 438 void onEmitCode(EmitArgs&, GrGPArgs*) override; |
438 | 439 |
439 static inline void GenKey(const GrGeometryProcessor&, | 440 static inline void GenKey(const GrGeometryProcessor&, |
440 const GrGLSLCaps&, | 441 const GrGLSLCaps&, |
441 GrProcessorKeyBuilder*); | 442 GrProcessorKeyBuilder*); |
442 | 443 |
443 void setData(const GrGLProgramDataManager& pdman, | 444 void setData(const GrGLSLProgramDataManager& pdman, |
444 const GrPrimitiveProcessor& primProc) override { | 445 const GrPrimitiveProcessor& primProc) override { |
445 const GrCubicEffect& ce = primProc.cast<GrCubicEffect>(); | 446 const GrCubicEffect& ce = primProc.cast<GrCubicEffect>(); |
446 | 447 |
447 if (!ce.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(ce.viewMa
trix())) { | 448 if (!ce.viewMatrix().isIdentity() && !fViewMatrix.cheapEqualTo(ce.viewMa
trix())) { |
448 fViewMatrix = ce.viewMatrix(); | 449 fViewMatrix = ce.viewMatrix(); |
449 GrGLfloat viewMatrix[3 * 3]; | 450 float viewMatrix[3 * 3]; |
450 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); | 451 GrGLGetMatrix<3>(viewMatrix, fViewMatrix); |
451 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); | 452 pdman.setMatrix3f(fViewMatrixUniform, viewMatrix); |
452 } | 453 } |
453 | 454 |
454 if (ce.color() != fColor) { | 455 if (ce.color() != fColor) { |
455 GrGLfloat c[4]; | 456 float c[4]; |
456 GrColorToRGBAFloat(ce.color(), c); | 457 GrColorToRGBAFloat(ce.color(), c); |
457 pdman.set4fv(fColorUniform, 1, c); | 458 pdman.set4fv(fColorUniform, 1, c); |
458 fColor = ce.color(); | 459 fColor = ce.color(); |
459 } | 460 } |
460 } | 461 } |
461 | 462 |
462 private: | 463 private: |
463 SkMatrix fViewMatrix; | 464 SkMatrix fViewMatrix; |
464 GrColor fColor; | 465 GrColor fColor; |
465 GrPrimitiveEdgeType fEdgeType; | 466 GrPrimitiveEdgeType fEdgeType; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 do { | 630 do { |
630 GrPrimitiveEdgeType edgeType = | 631 GrPrimitiveEdgeType edgeType = |
631 static_cast<GrPrimitiveEdgeType>( | 632 static_cast<GrPrimitiveEdgeType>( |
632 d->fRandom->nextULessThan(kGrProcessorEdgeTypeCnt)); | 633 d->fRandom->nextULessThan(kGrProcessorEdgeTypeCnt)); |
633 gp = GrCubicEffect::Create(GrRandomColor(d->fRandom), | 634 gp = GrCubicEffect::Create(GrRandomColor(d->fRandom), |
634 GrTest::TestMatrix(d->fRandom), edgeType, *d-
>fCaps); | 635 GrTest::TestMatrix(d->fRandom), edgeType, *d-
>fCaps); |
635 } while (nullptr == gp); | 636 } while (nullptr == gp); |
636 return gp; | 637 return gp; |
637 } | 638 } |
638 | 639 |
OLD | NEW |