| 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 |