OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "SkTwoPointConicalGradient_gpu.h" | 9 #include "SkTwoPointConicalGradient_gpu.h" |
10 | 10 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 SkShader::TileMode tm) { | 63 SkShader::TileMode tm) { |
64 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shader, matrix, tm)); | 64 return SkNEW_ARGS(Edge2PtConicalEffect, (ctx, shader, matrix, tm)); |
65 } | 65 } |
66 | 66 |
67 virtual ~Edge2PtConicalEffect() {} | 67 virtual ~Edge2PtConicalEffect() {} |
68 | 68 |
69 const char* name() const override { | 69 const char* name() const override { |
70 return "Two-Point Conical Gradient Edge Touching"; | 70 return "Two-Point Conical Gradient Edge Touching"; |
71 } | 71 } |
72 | 72 |
73 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri
de; | 73 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over
ride; |
74 | 74 |
75 GrGLFragmentProcessor* createGLInstance() const override; | 75 GrGLFragmentProcessor* createGLInstance() const override; |
76 | 76 |
77 // The radial gradient parameters can collapse to a linear (instead of quadr
atic) equation. | 77 // The radial gradient parameters can collapse to a linear (instead of quadr
atic) equation. |
78 SkScalar center() const { return fCenterX1; } | 78 SkScalar center() const { return fCenterX1; } |
79 SkScalar diffRadius() const { return fDiffRadius; } | 79 SkScalar diffRadius() const { return fDiffRadius; } |
80 SkScalar radius() const { return fRadius0; } | 80 SkScalar radius() const { return fRadius0; } |
81 | 81 |
82 private: | 82 private: |
83 bool onIsEqual(const GrFragmentProcessor& sBase) const override { | 83 bool onIsEqual(const GrFragmentProcessor& sBase) const override { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 virtual ~GLEdge2PtConicalEffect() { } | 142 virtual ~GLEdge2PtConicalEffect() { } |
143 | 143 |
144 virtual void emitCode(GrGLFPBuilder*, | 144 virtual void emitCode(GrGLFPBuilder*, |
145 const GrFragmentProcessor&, | 145 const GrFragmentProcessor&, |
146 const char* outputColor, | 146 const char* outputColor, |
147 const char* inputColor, | 147 const char* inputColor, |
148 const TransformedCoordsArray&, | 148 const TransformedCoordsArray&, |
149 const TextureSamplerArray&) override; | 149 const TextureSamplerArray&) override; |
150 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; | 150 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
151 | 151 |
152 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB
uilder* b); | 152 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b); |
153 | 153 |
154 protected: | 154 protected: |
155 UniformHandle fParamUni; | 155 UniformHandle fParamUni; |
156 | 156 |
157 const char* fVSVaryingName; | 157 const char* fVSVaryingName; |
158 const char* fFSVaryingName; | 158 const char* fFSVaryingName; |
159 | 159 |
160 // @{ | 160 // @{ |
161 /// Values last uploaded as uniforms | 161 /// Values last uploaded as uniforms |
162 | 162 |
163 SkScalar fCachedRadius; | 163 SkScalar fCachedRadius; |
164 SkScalar fCachedDiffRadius; | 164 SkScalar fCachedDiffRadius; |
165 | 165 |
166 // @} | 166 // @} |
167 | 167 |
168 private: | 168 private: |
169 typedef GrGLGradientEffect INHERITED; | 169 typedef GrGLGradientEffect INHERITED; |
170 | 170 |
171 }; | 171 }; |
172 | 172 |
173 void Edge2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, | 173 void Edge2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, |
174 GrProcessorKeyBuilder* b) const { | 174 GrProcessorKeyBuilder* b) const { |
175 GLEdge2PtConicalEffect::GenKey(*this, caps, b); | 175 GLEdge2PtConicalEffect::GenKey(*this, caps, b); |
176 } | 176 } |
177 | 177 |
178 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { | 178 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { |
179 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); | 179 return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); |
180 } | 180 } |
181 | 181 |
182 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); | 182 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); |
183 | 183 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 SkScalarToFloat(diffRadius) | 302 SkScalarToFloat(diffRadius) |
303 }; | 303 }; |
304 | 304 |
305 pdman.set1fv(fParamUni, 3, values); | 305 pdman.set1fv(fParamUni, 3, values); |
306 fCachedRadius = radius0; | 306 fCachedRadius = radius0; |
307 fCachedDiffRadius = diffRadius; | 307 fCachedDiffRadius = diffRadius; |
308 } | 308 } |
309 } | 309 } |
310 | 310 |
311 void GLEdge2PtConicalEffect::GenKey(const GrProcessor& processor, | 311 void GLEdge2PtConicalEffect::GenKey(const GrProcessor& processor, |
312 const GrGLCaps&, GrProcessorKeyBuilder* b) { | 312 const GrGLSLCaps&, GrProcessorKeyBuilder* b)
{ |
313 b->add32(GenBaseGradientKey(processor)); | 313 b->add32(GenBaseGradientKey(processor)); |
314 } | 314 } |
315 | 315 |
316 ////////////////////////////////////////////////////////////////////////////// | 316 ////////////////////////////////////////////////////////////////////////////// |
317 // Focal Conical Gradients | 317 // Focal Conical Gradients |
318 ////////////////////////////////////////////////////////////////////////////// | 318 ////////////////////////////////////////////////////////////////////////////// |
319 | 319 |
320 static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha
der, | 320 static ConicalType set_matrix_focal_conical(const SkTwoPointConicalGradient& sha
der, |
321 SkMatrix* invLMatrix, SkScalar* foca
lX) { | 321 SkMatrix* invLMatrix, SkScalar* foca
lX) { |
322 // Inverse of the current local matrix is passed in then, | 322 // Inverse of the current local matrix is passed in then, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 SkScalar focalX) { | 385 SkScalar focalX) { |
386 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shader, matrix, tm
, focalX)); | 386 return SkNEW_ARGS(FocalOutside2PtConicalEffect, (ctx, shader, matrix, tm
, focalX)); |
387 } | 387 } |
388 | 388 |
389 virtual ~FocalOutside2PtConicalEffect() { } | 389 virtual ~FocalOutside2PtConicalEffect() { } |
390 | 390 |
391 const char* name() const override { | 391 const char* name() const override { |
392 return "Two-Point Conical Gradient Focal Outside"; | 392 return "Two-Point Conical Gradient Focal Outside"; |
393 } | 393 } |
394 | 394 |
395 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri
de; | 395 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over
ride; |
396 | 396 |
397 GrGLFragmentProcessor* createGLInstance() const override; | 397 GrGLFragmentProcessor* createGLInstance() const override; |
398 | 398 |
399 bool isFlipped() const { return fIsFlipped; } | 399 bool isFlipped() const { return fIsFlipped; } |
400 SkScalar focal() const { return fFocalX; } | 400 SkScalar focal() const { return fFocalX; } |
401 | 401 |
402 private: | 402 private: |
403 bool onIsEqual(const GrFragmentProcessor& sBase) const override { | 403 bool onIsEqual(const GrFragmentProcessor& sBase) const override { |
404 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica
lEffect>(); | 404 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica
lEffect>(); |
405 return (INHERITED::onIsEqual(sBase) && | 405 return (INHERITED::onIsEqual(sBase) && |
(...skipping 24 matching lines...) Expand all Loading... |
430 virtual ~GLFocalOutside2PtConicalEffect() { } | 430 virtual ~GLFocalOutside2PtConicalEffect() { } |
431 | 431 |
432 virtual void emitCode(GrGLFPBuilder*, | 432 virtual void emitCode(GrGLFPBuilder*, |
433 const GrFragmentProcessor&, | 433 const GrFragmentProcessor&, |
434 const char* outputColor, | 434 const char* outputColor, |
435 const char* inputColor, | 435 const char* inputColor, |
436 const TransformedCoordsArray&, | 436 const TransformedCoordsArray&, |
437 const TextureSamplerArray&) override; | 437 const TextureSamplerArray&) override; |
438 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; | 438 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
439 | 439 |
440 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB
uilder* b); | 440 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b); |
441 | 441 |
442 protected: | 442 protected: |
443 UniformHandle fParamUni; | 443 UniformHandle fParamUni; |
444 | 444 |
445 const char* fVSVaryingName; | 445 const char* fVSVaryingName; |
446 const char* fFSVaryingName; | 446 const char* fFSVaryingName; |
447 | 447 |
448 bool fIsFlipped; | 448 bool fIsFlipped; |
449 | 449 |
450 // @{ | 450 // @{ |
451 /// Values last uploaded as uniforms | 451 /// Values last uploaded as uniforms |
452 | 452 |
453 SkScalar fCachedFocal; | 453 SkScalar fCachedFocal; |
454 | 454 |
455 // @} | 455 // @} |
456 | 456 |
457 private: | 457 private: |
458 typedef GrGLGradientEffect INHERITED; | 458 typedef GrGLGradientEffect INHERITED; |
459 | 459 |
460 }; | 460 }; |
461 | 461 |
462 void FocalOutside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, | 462 void FocalOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, |
463 GrProcessorKeyBuilder* b) c
onst { | 463 GrProcessorKeyBuilder* b) c
onst { |
464 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b); | 464 GLFocalOutside2PtConicalEffect::GenKey(*this, caps, b); |
465 } | 465 } |
466 | 466 |
467 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { | 467 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { |
468 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); | 468 return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); |
469 } | 469 } |
470 | 470 |
471 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); | 471 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); |
472 | 472 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 SkScalarToFloat(focal), | 580 SkScalarToFloat(focal), |
581 SkScalarToFloat(oneMinus2F), | 581 SkScalarToFloat(oneMinus2F), |
582 }; | 582 }; |
583 | 583 |
584 pdman.set1fv(fParamUni, 2, values); | 584 pdman.set1fv(fParamUni, 2, values); |
585 fCachedFocal = focal; | 585 fCachedFocal = focal; |
586 } | 586 } |
587 } | 587 } |
588 | 588 |
589 void GLFocalOutside2PtConicalEffect::GenKey(const GrProcessor& processor, | 589 void GLFocalOutside2PtConicalEffect::GenKey(const GrProcessor& processor, |
590 const GrGLCaps&, GrProcessorKeyBuild
er* b) { | 590 const GrGLSLCaps&, GrProcessorKeyBui
lder* b) { |
591 uint32_t* key = b->add32n(2); | 591 uint32_t* key = b->add32n(2); |
592 key[0] = GenBaseGradientKey(processor); | 592 key[0] = GenBaseGradientKey(processor); |
593 key[1] = processor.cast<FocalOutside2PtConicalEffect>().isFlipped(); | 593 key[1] = processor.cast<FocalOutside2PtConicalEffect>().isFlipped(); |
594 } | 594 } |
595 | 595 |
596 ////////////////////////////////////////////////////////////////////////////// | 596 ////////////////////////////////////////////////////////////////////////////// |
597 | 597 |
598 class GLFocalInside2PtConicalEffect; | 598 class GLFocalInside2PtConicalEffect; |
599 | 599 |
600 class FocalInside2PtConicalEffect : public GrGradientEffect { | 600 class FocalInside2PtConicalEffect : public GrGradientEffect { |
601 public: | 601 public: |
602 | 602 |
603 static GrFragmentProcessor* Create(GrContext* ctx, | 603 static GrFragmentProcessor* Create(GrContext* ctx, |
604 const SkTwoPointConicalGradient& shader, | 604 const SkTwoPointConicalGradient& shader, |
605 const SkMatrix& matrix, | 605 const SkMatrix& matrix, |
606 SkShader::TileMode tm, | 606 SkShader::TileMode tm, |
607 SkScalar focalX) { | 607 SkScalar focalX) { |
608 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shader, matrix, tm,
focalX)); | 608 return SkNEW_ARGS(FocalInside2PtConicalEffect, (ctx, shader, matrix, tm,
focalX)); |
609 } | 609 } |
610 | 610 |
611 virtual ~FocalInside2PtConicalEffect() {} | 611 virtual ~FocalInside2PtConicalEffect() {} |
612 | 612 |
613 const char* name() const override { | 613 const char* name() const override { |
614 return "Two-Point Conical Gradient Focal Inside"; | 614 return "Two-Point Conical Gradient Focal Inside"; |
615 } | 615 } |
616 | 616 |
617 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri
de; | 617 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over
ride; |
618 | 618 |
619 GrGLFragmentProcessor* createGLInstance() const override; | 619 GrGLFragmentProcessor* createGLInstance() const override; |
620 | 620 |
621 SkScalar focal() const { return fFocalX; } | 621 SkScalar focal() const { return fFocalX; } |
622 | 622 |
623 typedef GLFocalInside2PtConicalEffect GLProcessor; | 623 typedef GLFocalInside2PtConicalEffect GLProcessor; |
624 | 624 |
625 private: | 625 private: |
626 bool onIsEqual(const GrFragmentProcessor& sBase) const override { | 626 bool onIsEqual(const GrFragmentProcessor& sBase) const override { |
627 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE
ffect>(); | 627 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE
ffect>(); |
(...skipping 23 matching lines...) Expand all Loading... |
651 virtual ~GLFocalInside2PtConicalEffect() {} | 651 virtual ~GLFocalInside2PtConicalEffect() {} |
652 | 652 |
653 virtual void emitCode(GrGLFPBuilder*, | 653 virtual void emitCode(GrGLFPBuilder*, |
654 const GrFragmentProcessor&, | 654 const GrFragmentProcessor&, |
655 const char* outputColor, | 655 const char* outputColor, |
656 const char* inputColor, | 656 const char* inputColor, |
657 const TransformedCoordsArray&, | 657 const TransformedCoordsArray&, |
658 const TextureSamplerArray&) override; | 658 const TextureSamplerArray&) override; |
659 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; | 659 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
660 | 660 |
661 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB
uilder* b); | 661 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b); |
662 | 662 |
663 protected: | 663 protected: |
664 UniformHandle fFocalUni; | 664 UniformHandle fFocalUni; |
665 | 665 |
666 const char* fVSVaryingName; | 666 const char* fVSVaryingName; |
667 const char* fFSVaryingName; | 667 const char* fFSVaryingName; |
668 | 668 |
669 // @{ | 669 // @{ |
670 /// Values last uploaded as uniforms | 670 /// Values last uploaded as uniforms |
671 | 671 |
672 SkScalar fCachedFocal; | 672 SkScalar fCachedFocal; |
673 | 673 |
674 // @} | 674 // @} |
675 | 675 |
676 private: | 676 private: |
677 typedef GrGLGradientEffect INHERITED; | 677 typedef GrGLGradientEffect INHERITED; |
678 | 678 |
679 }; | 679 }; |
680 | 680 |
681 void FocalInside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, | 681 void FocalInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, |
682 GrProcessorKeyBuilder* b) const { | 682 GrProcessorKeyBuilder* b) const { |
683 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b); | 683 GLFocalInside2PtConicalEffect::GenKey(*this, caps, b); |
684 } | 684 } |
685 | 685 |
686 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { | 686 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { |
687 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); | 687 return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); |
688 } | 688 } |
689 | 689 |
690 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); | 690 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); |
691 | 691 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 const FocalInside2PtConicalEffect& data = processor.cast<FocalInside2PtConic
alEffect>(); | 769 const FocalInside2PtConicalEffect& data = processor.cast<FocalInside2PtConic
alEffect>(); |
770 SkScalar focal = data.focal(); | 770 SkScalar focal = data.focal(); |
771 | 771 |
772 if (fCachedFocal != focal) { | 772 if (fCachedFocal != focal) { |
773 pdman.set1f(fFocalUni, SkScalarToFloat(focal)); | 773 pdman.set1f(fFocalUni, SkScalarToFloat(focal)); |
774 fCachedFocal = focal; | 774 fCachedFocal = focal; |
775 } | 775 } |
776 } | 776 } |
777 | 777 |
778 void GLFocalInside2PtConicalEffect::GenKey(const GrProcessor& processor, | 778 void GLFocalInside2PtConicalEffect::GenKey(const GrProcessor& processor, |
779 const GrGLCaps&, GrProcessorKeyBuilde
r* b) { | 779 const GrGLSLCaps&, GrProcessorKeyBuil
der* b) { |
780 b->add32(GenBaseGradientKey(processor)); | 780 b->add32(GenBaseGradientKey(processor)); |
781 } | 781 } |
782 | 782 |
783 ////////////////////////////////////////////////////////////////////////////// | 783 ////////////////////////////////////////////////////////////////////////////// |
784 // Circle Conical Gradients | 784 // Circle Conical Gradients |
785 ////////////////////////////////////////////////////////////////////////////// | 785 ////////////////////////////////////////////////////////////////////////////// |
786 | 786 |
787 struct CircleConicalInfo { | 787 struct CircleConicalInfo { |
788 SkPoint fCenterEnd; | 788 SkPoint fCenterEnd; |
789 SkScalar fA; | 789 SkScalar fA; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 const SkMatrix& matrix, | 852 const SkMatrix& matrix, |
853 SkShader::TileMode tm, | 853 SkShader::TileMode tm, |
854 const CircleConicalInfo& info) { | 854 const CircleConicalInfo& info) { |
855 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shader, matrix, tm
, info)); | 855 return SkNEW_ARGS(CircleInside2PtConicalEffect, (ctx, shader, matrix, tm
, info)); |
856 } | 856 } |
857 | 857 |
858 virtual ~CircleInside2PtConicalEffect() {} | 858 virtual ~CircleInside2PtConicalEffect() {} |
859 | 859 |
860 const char* name() const override { return "Two-Point Conical Gradient Insid
e"; } | 860 const char* name() const override { return "Two-Point Conical Gradient Insid
e"; } |
861 | 861 |
862 virtual void getGLProcessorKey(const GrGLCaps& caps, | 862 virtual void getGLProcessorKey(const GrGLSLCaps& caps, |
863 GrProcessorKeyBuilder* b) const override; | 863 GrProcessorKeyBuilder* b) const override; |
864 | 864 |
865 GrGLFragmentProcessor* createGLInstance() const override; | 865 GrGLFragmentProcessor* createGLInstance() const override; |
866 | 866 |
867 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } | 867 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } |
868 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } | 868 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } |
869 SkScalar A() const { return fInfo.fA; } | 869 SkScalar A() const { return fInfo.fA; } |
870 SkScalar B() const { return fInfo.fB; } | 870 SkScalar B() const { return fInfo.fB; } |
871 SkScalar C() const { return fInfo.fC; } | 871 SkScalar C() const { return fInfo.fC; } |
872 | 872 |
(...skipping 29 matching lines...) Expand all Loading... |
902 virtual ~GLCircleInside2PtConicalEffect() {} | 902 virtual ~GLCircleInside2PtConicalEffect() {} |
903 | 903 |
904 virtual void emitCode(GrGLFPBuilder*, | 904 virtual void emitCode(GrGLFPBuilder*, |
905 const GrFragmentProcessor&, | 905 const GrFragmentProcessor&, |
906 const char* outputColor, | 906 const char* outputColor, |
907 const char* inputColor, | 907 const char* inputColor, |
908 const TransformedCoordsArray&, | 908 const TransformedCoordsArray&, |
909 const TextureSamplerArray&) override; | 909 const TextureSamplerArray&) override; |
910 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; | 910 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
911 | 911 |
912 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB
uilder* b); | 912 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b); |
913 | 913 |
914 protected: | 914 protected: |
915 UniformHandle fCenterUni; | 915 UniformHandle fCenterUni; |
916 UniformHandle fParamUni; | 916 UniformHandle fParamUni; |
917 | 917 |
918 const char* fVSVaryingName; | 918 const char* fVSVaryingName; |
919 const char* fFSVaryingName; | 919 const char* fFSVaryingName; |
920 | 920 |
921 // @{ | 921 // @{ |
922 /// Values last uploaded as uniforms | 922 /// Values last uploaded as uniforms |
923 | 923 |
924 SkScalar fCachedCenterX; | 924 SkScalar fCachedCenterX; |
925 SkScalar fCachedCenterY; | 925 SkScalar fCachedCenterY; |
926 SkScalar fCachedA; | 926 SkScalar fCachedA; |
927 SkScalar fCachedB; | 927 SkScalar fCachedB; |
928 SkScalar fCachedC; | 928 SkScalar fCachedC; |
929 | 929 |
930 // @} | 930 // @} |
931 | 931 |
932 private: | 932 private: |
933 typedef GrGLGradientEffect INHERITED; | 933 typedef GrGLGradientEffect INHERITED; |
934 | 934 |
935 }; | 935 }; |
936 | 936 |
937 void CircleInside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, | 937 void CircleInside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, |
938 GrProcessorKeyBuilder* b) c
onst { | 938 GrProcessorKeyBuilder* b) c
onst { |
939 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b); | 939 GLCircleInside2PtConicalEffect::GenKey(*this, caps, b); |
940 } | 940 } |
941 | 941 |
942 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { | 942 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { |
943 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); | 943 return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); |
944 } | 944 } |
945 | 945 |
946 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); | 946 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); |
947 | 947 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1055 | 1055 |
1056 fCachedCenterX = centerX; | 1056 fCachedCenterX = centerX; |
1057 fCachedCenterY = centerY; | 1057 fCachedCenterY = centerY; |
1058 fCachedA = A; | 1058 fCachedA = A; |
1059 fCachedB = B; | 1059 fCachedB = B; |
1060 fCachedC = C; | 1060 fCachedC = C; |
1061 } | 1061 } |
1062 } | 1062 } |
1063 | 1063 |
1064 void GLCircleInside2PtConicalEffect::GenKey(const GrProcessor& processor, | 1064 void GLCircleInside2PtConicalEffect::GenKey(const GrProcessor& processor, |
1065 const GrGLCaps&, GrProcessorKeyBuild
er* b) { | 1065 const GrGLSLCaps&, GrProcessorKeyBui
lder* b) { |
1066 b->add32(GenBaseGradientKey(processor)); | 1066 b->add32(GenBaseGradientKey(processor)); |
1067 } | 1067 } |
1068 | 1068 |
1069 ////////////////////////////////////////////////////////////////////////////// | 1069 ////////////////////////////////////////////////////////////////////////////// |
1070 | 1070 |
1071 class CircleOutside2PtConicalEffect : public GrGradientEffect { | 1071 class CircleOutside2PtConicalEffect : public GrGradientEffect { |
1072 public: | 1072 public: |
1073 | 1073 |
1074 static GrFragmentProcessor* Create(GrContext* ctx, | 1074 static GrFragmentProcessor* Create(GrContext* ctx, |
1075 const SkTwoPointConicalGradient& shader, | 1075 const SkTwoPointConicalGradient& shader, |
1076 const SkMatrix& matrix, | 1076 const SkMatrix& matrix, |
1077 SkShader::TileMode tm, | 1077 SkShader::TileMode tm, |
1078 const CircleConicalInfo& info) { | 1078 const CircleConicalInfo& info) { |
1079 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shader, matrix, t
m, info)); | 1079 return SkNEW_ARGS(CircleOutside2PtConicalEffect, (ctx, shader, matrix, t
m, info)); |
1080 } | 1080 } |
1081 | 1081 |
1082 virtual ~CircleOutside2PtConicalEffect() {} | 1082 virtual ~CircleOutside2PtConicalEffect() {} |
1083 | 1083 |
1084 const char* name() const override { return "Two-Point Conical Gradient Outsi
de"; } | 1084 const char* name() const override { return "Two-Point Conical Gradient Outsi
de"; } |
1085 | 1085 |
1086 void getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder*) const overri
de; | 1086 void getGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const over
ride; |
1087 | 1087 |
1088 GrGLFragmentProcessor* createGLInstance() const override; | 1088 GrGLFragmentProcessor* createGLInstance() const override; |
1089 | 1089 |
1090 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } | 1090 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } |
1091 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } | 1091 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } |
1092 SkScalar A() const { return fInfo.fA; } | 1092 SkScalar A() const { return fInfo.fA; } |
1093 SkScalar B() const { return fInfo.fB; } | 1093 SkScalar B() const { return fInfo.fB; } |
1094 SkScalar C() const { return fInfo.fC; } | 1094 SkScalar C() const { return fInfo.fC; } |
1095 SkScalar tLimit() const { return fTLimit; } | 1095 SkScalar tLimit() const { return fTLimit; } |
1096 bool isFlipped() const { return fIsFlipped; } | 1096 bool isFlipped() const { return fIsFlipped; } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1139 virtual ~GLCircleOutside2PtConicalEffect() {} | 1139 virtual ~GLCircleOutside2PtConicalEffect() {} |
1140 | 1140 |
1141 virtual void emitCode(GrGLFPBuilder*, | 1141 virtual void emitCode(GrGLFPBuilder*, |
1142 const GrFragmentProcessor&, | 1142 const GrFragmentProcessor&, |
1143 const char* outputColor, | 1143 const char* outputColor, |
1144 const char* inputColor, | 1144 const char* inputColor, |
1145 const TransformedCoordsArray&, | 1145 const TransformedCoordsArray&, |
1146 const TextureSamplerArray&) override; | 1146 const TextureSamplerArray&) override; |
1147 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; | 1147 void setData(const GrGLProgramDataManager&, const GrProcessor&) override; |
1148 | 1148 |
1149 static void GenKey(const GrProcessor&, const GrGLCaps& caps, GrProcessorKeyB
uilder* b); | 1149 static void GenKey(const GrProcessor&, const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b); |
1150 | 1150 |
1151 protected: | 1151 protected: |
1152 UniformHandle fCenterUni; | 1152 UniformHandle fCenterUni; |
1153 UniformHandle fParamUni; | 1153 UniformHandle fParamUni; |
1154 | 1154 |
1155 const char* fVSVaryingName; | 1155 const char* fVSVaryingName; |
1156 const char* fFSVaryingName; | 1156 const char* fFSVaryingName; |
1157 | 1157 |
1158 bool fIsFlipped; | 1158 bool fIsFlipped; |
1159 | 1159 |
1160 // @{ | 1160 // @{ |
1161 /// Values last uploaded as uniforms | 1161 /// Values last uploaded as uniforms |
1162 | 1162 |
1163 SkScalar fCachedCenterX; | 1163 SkScalar fCachedCenterX; |
1164 SkScalar fCachedCenterY; | 1164 SkScalar fCachedCenterY; |
1165 SkScalar fCachedA; | 1165 SkScalar fCachedA; |
1166 SkScalar fCachedB; | 1166 SkScalar fCachedB; |
1167 SkScalar fCachedC; | 1167 SkScalar fCachedC; |
1168 SkScalar fCachedTLimit; | 1168 SkScalar fCachedTLimit; |
1169 | 1169 |
1170 // @} | 1170 // @} |
1171 | 1171 |
1172 private: | 1172 private: |
1173 typedef GrGLGradientEffect INHERITED; | 1173 typedef GrGLGradientEffect INHERITED; |
1174 | 1174 |
1175 }; | 1175 }; |
1176 | 1176 |
1177 void CircleOutside2PtConicalEffect::getGLProcessorKey(const GrGLCaps& caps, | 1177 void CircleOutside2PtConicalEffect::getGLProcessorKey(const GrGLSLCaps& caps, |
1178 GrProcessorKeyBuilder* b)
const { | 1178 GrProcessorKeyBuilder* b)
const { |
1179 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b); | 1179 GLCircleOutside2PtConicalEffect::GenKey(*this, caps, b); |
1180 } | 1180 } |
1181 | 1181 |
1182 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { | 1182 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { |
1183 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); | 1183 return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); |
1184 } | 1184 } |
1185 | 1185 |
1186 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); | 1186 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); |
1187 | 1187 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 fCachedCenterX = centerX; | 1321 fCachedCenterX = centerX; |
1322 fCachedCenterY = centerY; | 1322 fCachedCenterY = centerY; |
1323 fCachedA = A; | 1323 fCachedA = A; |
1324 fCachedB = B; | 1324 fCachedB = B; |
1325 fCachedC = C; | 1325 fCachedC = C; |
1326 fCachedTLimit = tLimit; | 1326 fCachedTLimit = tLimit; |
1327 } | 1327 } |
1328 } | 1328 } |
1329 | 1329 |
1330 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, | 1330 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, |
1331 const GrGLCaps&, GrProcessorKeyBuil
der* b) { | 1331 const GrGLSLCaps&, GrProcessorKeyBu
ilder* b) { |
1332 uint32_t* key = b->add32n(2); | 1332 uint32_t* key = b->add32n(2); |
1333 key[0] = GenBaseGradientKey(processor); | 1333 key[0] = GenBaseGradientKey(processor); |
1334 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped(); | 1334 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped(); |
1335 } | 1335 } |
1336 | 1336 |
1337 ////////////////////////////////////////////////////////////////////////////// | 1337 ////////////////////////////////////////////////////////////////////////////// |
1338 | 1338 |
1339 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, | 1339 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, |
1340 const SkTwoPointConicalG
radient& shader, | 1340 const SkTwoPointConicalG
radient& shader, |
1341 SkShader::TileMode tm, | 1341 SkShader::TileMode tm, |
(...skipping 30 matching lines...) Expand all Loading... |
1372 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); | 1372 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); |
1373 } else if (type == kEdge_ConicalType) { | 1373 } else if (type == kEdge_ConicalType) { |
1374 set_matrix_edge_conical(shader, &matrix); | 1374 set_matrix_edge_conical(shader, &matrix); |
1375 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); | 1375 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); |
1376 } else { | 1376 } else { |
1377 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); | 1377 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); |
1378 } | 1378 } |
1379 } | 1379 } |
1380 | 1380 |
1381 #endif | 1381 #endif |
OLD | NEW |