OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "GrDashingEffect.h" | 8 #include "GrDashingEffect.h" |
9 | 9 |
10 #include "../GrAARectRenderer.h" | 10 #include "../GrAARectRenderer.h" |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 SkScalar getRadius() const { return fRadius; } | 489 SkScalar getRadius() const { return fRadius; } |
490 | 490 |
491 SkScalar getCenterX() const { return fCenterX; } | 491 SkScalar getCenterX() const { return fCenterX; } |
492 | 492 |
493 SkScalar getIntervalLength() const { return fIntervalLength; } | 493 SkScalar getIntervalLength() const { return fIntervalLength; } |
494 | 494 |
495 virtual void getGLProcessorKey(const GrBatchTracker&, | 495 virtual void getGLProcessorKey(const GrBatchTracker&, |
496 const GrGLCaps&, | 496 const GrGLCaps&, |
497 GrProcessorKeyBuilder* b) const SK_OVERRIDE; | 497 GrProcessorKeyBuilder* b) const SK_OVERRIDE; |
498 | 498 |
499 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker&) const
SK_OVERRIDE; | 499 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker&, |
| 500 const GrGLCaps&) const SK_O
VERRIDE; |
500 | 501 |
501 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR
IDE; | 502 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR
IDE; |
502 | 503 |
503 bool onCanMakeEqual(const GrBatchTracker&, | 504 bool onCanMakeEqual(const GrBatchTracker&, |
504 const GrGeometryProcessor&, | 505 const GrGeometryProcessor&, |
505 const GrBatchTracker&) const SK_OVERRIDE; | 506 const GrBatchTracker&) const SK_OVERRIDE; |
506 | 507 |
507 private: | 508 private: |
508 DashingCircleEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& i
nfo, | 509 DashingCircleEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& i
nfo, |
509 SkScalar radius, const SkMatrix& localMatrix); | 510 SkScalar radius, const SkMatrix& localMatrix); |
(...skipping 13 matching lines...) Expand all Loading... |
523 | 524 |
524 typedef GrGeometryProcessor INHERITED; | 525 typedef GrGeometryProcessor INHERITED; |
525 }; | 526 }; |
526 | 527 |
527 ////////////////////////////////////////////////////////////////////////////// | 528 ////////////////////////////////////////////////////////////////////////////// |
528 | 529 |
529 class GLDashingCircleEffect : public GrGLGeometryProcessor { | 530 class GLDashingCircleEffect : public GrGLGeometryProcessor { |
530 public: | 531 public: |
531 GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&); | 532 GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&); |
532 | 533 |
533 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; | 534 virtual void emitCode(EmitArgs&) SK_OVERRIDE; |
534 | 535 |
535 static inline void GenKey(const GrGeometryProcessor&, | 536 static inline void GenKey(const GrGeometryProcessor&, |
536 const GrBatchTracker&, | 537 const GrBatchTracker&, |
537 const GrGLCaps&, | 538 const GrGLCaps&, |
538 GrProcessorKeyBuilder*); | 539 GrProcessorKeyBuilder*); |
539 | 540 |
540 virtual void setData(const GrGLProgramDataManager&, | 541 virtual void setData(const GrGLProgramDataManager&, |
541 const GrPrimitiveProcessor&, | 542 const GrPrimitiveProcessor&, |
542 const GrBatchTracker&) SK_OVERRIDE; | 543 const GrBatchTracker&) SK_OVERRIDE; |
543 | 544 |
544 private: | 545 private: |
545 UniformHandle fParamUniform; | 546 UniformHandle fParamUniform; |
546 UniformHandle fColorUniform; | 547 UniformHandle fColorUniform; |
547 GrColor fColor; | 548 GrColor fColor; |
548 SkScalar fPrevRadius; | 549 SkScalar fPrevRadius; |
549 SkScalar fPrevCenterX; | 550 SkScalar fPrevCenterX; |
550 SkScalar fPrevIntervalLength; | 551 SkScalar fPrevIntervalLength; |
551 typedef GrGLGeometryProcessor INHERITED; | 552 typedef GrGLGeometryProcessor INHERITED; |
552 }; | 553 }; |
553 | 554 |
554 GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&, | 555 GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&, |
555 const GrBatchTracker&) { | 556 const GrBatchTracker&) { |
556 fColor = GrColor_ILLEGAL; | 557 fColor = GrColor_ILLEGAL; |
557 fPrevRadius = SK_ScalarMin; | 558 fPrevRadius = SK_ScalarMin; |
558 fPrevCenterX = SK_ScalarMin; | 559 fPrevCenterX = SK_ScalarMin; |
559 fPrevIntervalLength = SK_ScalarMax; | 560 fPrevIntervalLength = SK_ScalarMax; |
560 } | 561 } |
561 | 562 |
562 void GLDashingCircleEffect::emitCode(const EmitArgs& args) { | 563 void GLDashingCircleEffect::emitCode(EmitArgs& args) { |
563 const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>(); | 564 const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>(); |
564 const DashingCircleBatchTracker local = args.fBT.cast<DashingCircleBatchTrac
ker>(); | 565 const DashingCircleBatchTracker local = args.fBT.cast<DashingCircleBatchTrac
ker>(); |
565 GrGLGPBuilder* pb = args.fPB; | 566 GrGLGPBuilder* pb = args.fPB; |
566 const char *paramName; | 567 const char *paramName; |
567 // The param uniforms, xyz, refer to circle radius - 0.5, cicles center x co
ord, and | 568 // The param uniforms, xyz, refer to circle radius - 0.5, cicles center x co
ord, and |
568 // the total interval length of the dash. | 569 // the total interval length of the dash. |
569 fParamUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibilit
y, | 570 fParamUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibilit
y, |
570 kVec3f_GrSLType, kDefault_GrSLPrecision
, | 571 kVec3f_GrSLType, kDefault_GrSLPrecision
, |
571 "params", ¶mName); | 572 "params", ¶mName); |
572 | 573 |
573 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); | 574 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); |
574 | 575 |
| 576 // emit attributes |
| 577 vsBuilder->emitAttributes(dce); |
| 578 |
575 GrGLVertToFrag v(kVec2f_GrSLType); | 579 GrGLVertToFrag v(kVec2f_GrSLType); |
576 args.fPB->addVarying("Coord", &v); | 580 args.fPB->addVarying("Coord", &v); |
577 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dce.inCoord()->fName); | 581 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), dce.inCoord()->fName); |
578 | 582 |
579 // Setup pass through color | 583 // Setup pass through color |
580 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); | 584 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); |
581 | 585 |
582 // setup coord outputs | |
583 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), dce.inPositi
on()->fName); | |
584 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), dce.inPosition(
)->fName); | |
585 | |
586 // setup uniform viewMatrix | 586 // setup uniform viewMatrix |
587 this->addUniformViewMatrix(pb); | 587 this->addUniformViewMatrix(pb); |
588 | 588 |
589 // setup position varying | 589 // Setup position |
590 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th
is->uViewM(), | 590 const char* pos3 = "pos3"; |
591 dce.inPosition()->fName); | 591 vsBuilder->codeAppendf("vec3 %s;", pos3); |
| 592 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", pos3, this->uViewM(), dce.i
nPosition()->fName); |
| 593 |
| 594 // emit transforms |
| 595 this->emitTransforms(args.fPB, pos3, dce.inPosition()->fName, dce.localMatri
x(), |
| 596 args.fTransformsIn, args.fTransformsOut); |
| 597 |
| 598 vsBuilder->transformToNormalizedDeviceSpace(pos3); |
592 | 599 |
593 // transforms all points so that we can compare them to our test circle | 600 // transforms all points so that we can compare them to our test circle |
594 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 601 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
595 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s.
z;\n", | 602 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s.
z;\n", |
596 v.fsIn(), v.fsIn(), paramName, paramName); | 603 v.fsIn(), v.fsIn(), paramName, paramName); |
597 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n",
v.fsIn()); | 604 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n",
v.fsIn()); |
598 fsBuilder->codeAppendf("\t\tvec2 center = vec2(%s.y, 0.0);\n", paramName); | 605 fsBuilder->codeAppendf("\t\tvec2 center = vec2(%s.y, 0.0);\n", paramName); |
599 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n")
; | 606 fsBuilder->codeAppend("\t\tfloat dist = length(center - fragPosShifted);\n")
; |
600 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) { | 607 if (GrProcessorEdgeTypeIsAA(dce.getEdgeType())) { |
601 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName); | 608 fsBuilder->codeAppendf("\t\tfloat diff = dist - %s.x;\n", paramName); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou
t) const { | 669 void DashingCircleEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* ou
t) const { |
663 out->setUnknownSingleComponent(); | 670 out->setUnknownSingleComponent(); |
664 } | 671 } |
665 | 672 |
666 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, | 673 void DashingCircleEffect::getGLProcessorKey(const GrBatchTracker& bt, |
667 const GrGLCaps& caps, | 674 const GrGLCaps& caps, |
668 GrProcessorKeyBuilder* b) const { | 675 GrProcessorKeyBuilder* b) const { |
669 GLDashingCircleEffect::GenKey(*this, bt, caps, b); | 676 GLDashingCircleEffect::GenKey(*this, bt, caps, b); |
670 } | 677 } |
671 | 678 |
672 GrGLGeometryProcessor* DashingCircleEffect::createGLInstance(const GrBatchTracke
r& bt) const { | 679 GrGLPrimitiveProcessor* DashingCircleEffect::createGLInstance(const GrBatchTrack
er& bt, |
| 680 const GrGLCaps&) c
onst { |
673 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt)); | 681 return SkNEW_ARGS(GLDashingCircleEffect, (*this, bt)); |
674 } | 682 } |
675 | 683 |
676 DashingCircleEffect::DashingCircleEffect(GrColor color, | 684 DashingCircleEffect::DashingCircleEffect(GrColor color, |
677 GrPrimitiveEdgeType edgeType, | 685 GrPrimitiveEdgeType edgeType, |
678 const DashInfo& info, | 686 const DashInfo& info, |
679 SkScalar radius, | 687 SkScalar radius, |
680 const SkMatrix& localMatrix) | 688 const SkMatrix& localMatrix) |
681 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { | 689 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { |
682 this->initClassID<DashingCircleEffect>(); | 690 this->initClassID<DashingCircleEffect>(); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 784 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
777 | 785 |
778 const SkRect& getRect() const { return fRect; } | 786 const SkRect& getRect() const { return fRect; } |
779 | 787 |
780 SkScalar getIntervalLength() const { return fIntervalLength; } | 788 SkScalar getIntervalLength() const { return fIntervalLength; } |
781 | 789 |
782 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 790 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
783 const GrGLCaps& caps, | 791 const GrGLCaps& caps, |
784 GrProcessorKeyBuilder* b) const SK_OVERRIDE; | 792 GrProcessorKeyBuilder* b) const SK_OVERRIDE; |
785 | 793 |
786 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co
nst SK_OVERRIDE; | 794 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 795 const GrGLCaps&) const SK_O
VERRIDE; |
787 | 796 |
788 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR
IDE; | 797 void initBatchTracker(GrBatchTracker* bt, const InitBT& init) const SK_OVERR
IDE; |
789 | 798 |
790 bool onCanMakeEqual(const GrBatchTracker&, | 799 bool onCanMakeEqual(const GrBatchTracker&, |
791 const GrGeometryProcessor&, | 800 const GrGeometryProcessor&, |
792 const GrBatchTracker&) const SK_OVERRIDE; | 801 const GrBatchTracker&) const SK_OVERRIDE; |
793 | 802 |
794 private: | 803 private: |
795 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf
o, | 804 DashingLineEffect(GrColor, GrPrimitiveEdgeType edgeType, const DashInfo& inf
o, |
796 SkScalar strokeWidth, const SkMatrix& localMatrix); | 805 SkScalar strokeWidth, const SkMatrix& localMatrix); |
(...skipping 12 matching lines...) Expand all Loading... |
809 | 818 |
810 typedef GrGeometryProcessor INHERITED; | 819 typedef GrGeometryProcessor INHERITED; |
811 }; | 820 }; |
812 | 821 |
813 ////////////////////////////////////////////////////////////////////////////// | 822 ////////////////////////////////////////////////////////////////////////////// |
814 | 823 |
815 class GLDashingLineEffect : public GrGLGeometryProcessor { | 824 class GLDashingLineEffect : public GrGLGeometryProcessor { |
816 public: | 825 public: |
817 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&); | 826 GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&); |
818 | 827 |
819 virtual void emitCode(const EmitArgs&) SK_OVERRIDE; | 828 virtual void emitCode(EmitArgs&) SK_OVERRIDE; |
820 | 829 |
821 static inline void GenKey(const GrGeometryProcessor&, | 830 static inline void GenKey(const GrGeometryProcessor&, |
822 const GrBatchTracker&, | 831 const GrBatchTracker&, |
823 const GrGLCaps&, | 832 const GrGLCaps&, |
824 GrProcessorKeyBuilder*); | 833 GrProcessorKeyBuilder*); |
825 | 834 |
826 virtual void setData(const GrGLProgramDataManager&, | 835 virtual void setData(const GrGLProgramDataManager&, |
827 const GrPrimitiveProcessor&, | 836 const GrPrimitiveProcessor&, |
828 const GrBatchTracker&) SK_OVERRIDE; | 837 const GrBatchTracker&) SK_OVERRIDE; |
829 | 838 |
830 private: | 839 private: |
831 GrColor fColor; | 840 GrColor fColor; |
832 UniformHandle fRectUniform; | 841 UniformHandle fRectUniform; |
833 UniformHandle fIntervalUniform; | 842 UniformHandle fIntervalUniform; |
834 UniformHandle fColorUniform; | 843 UniformHandle fColorUniform; |
835 SkRect fPrevRect; | 844 SkRect fPrevRect; |
836 SkScalar fPrevIntervalLength; | 845 SkScalar fPrevIntervalLength; |
837 typedef GrGLGeometryProcessor INHERITED; | 846 typedef GrGLGeometryProcessor INHERITED; |
838 }; | 847 }; |
839 | 848 |
840 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&, | 849 GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&, |
841 const GrBatchTracker&) { | 850 const GrBatchTracker&) { |
842 fColor = GrColor_ILLEGAL; | 851 fColor = GrColor_ILLEGAL; |
843 fPrevRect.fLeft = SK_ScalarNaN; | 852 fPrevRect.fLeft = SK_ScalarNaN; |
844 fPrevIntervalLength = SK_ScalarMax; | 853 fPrevIntervalLength = SK_ScalarMax; |
845 } | 854 } |
846 | 855 |
847 void GLDashingLineEffect::emitCode(const EmitArgs& args) { | 856 void GLDashingLineEffect::emitCode(EmitArgs& args) { |
848 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); | 857 const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); |
849 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker
>(); | 858 const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker
>(); |
850 GrGLGPBuilder* pb = args.fPB; | 859 GrGLGPBuilder* pb = args.fPB; |
851 const char *rectName; | 860 const char *rectName; |
852 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot
tom - 0.5), | 861 // The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bot
tom - 0.5), |
853 // respectively. | 862 // respectively. |
854 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility
, | 863 fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility
, |
855 kVec4f_GrSLType, kDefault_GrSLPrecision, | 864 kVec4f_GrSLType, kDefault_GrSLPrecision, |
856 "rect", | 865 "rect", |
857 &rectName); | 866 &rectName); |
858 const char *intervalName; | 867 const char *intervalName; |
859 // The interval uniform's refers to the total length of the interval (on + o
ff) | 868 // The interval uniform's refers to the total length of the interval (on + o
ff) |
860 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, | 869 fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, |
861 kFloat_GrSLType, kDefault_GrSLPrecis
ion, | 870 kFloat_GrSLType, kDefault_GrSLPrecis
ion, |
862 "interval", | 871 "interval", |
863 &intervalName); | 872 &intervalName); |
864 | 873 |
865 | 874 |
866 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); | 875 GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); |
867 | 876 |
| 877 // emit attributes |
| 878 vsBuilder->emitAttributes(de); |
| 879 |
868 GrGLVertToFrag v(kVec2f_GrSLType); | 880 GrGLVertToFrag v(kVec2f_GrSLType); |
869 args.fPB->addVarying("Coord", &v); | 881 args.fPB->addVarying("Coord", &v); |
870 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName); | 882 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), de.inCoord()->fName); |
871 | 883 |
872 // Setup pass through color | 884 // Setup pass through color |
873 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); | 885 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); |
874 | 886 |
875 // setup coord outputs | |
876 vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), de.inPositio
n()->fName); | |
877 vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), de.inPosition()
->fName); | |
878 | |
879 // setup uniform viewMatrix | 887 // setup uniform viewMatrix |
880 this->addUniformViewMatrix(pb); | 888 this->addUniformViewMatrix(pb); |
881 | 889 |
882 // setup position varying | 890 // Setup position |
883 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), th
is->uViewM(), | 891 const char* pos3 = "pos3"; |
884 de.inPosition()->fName); | 892 vsBuilder->codeAppendf("vec3 %s;", pos3); |
| 893 vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", pos3, this->uViewM(), de.in
Position()->fName); |
| 894 |
| 895 // emit transforms |
| 896 this->emitTransforms(args.fPB, pos3, de.inPosition()->fName, de.localMatrix(
), |
| 897 args.fTransformsIn, args.fTransformsOut); |
| 898 |
| 899 vsBuilder->transformToNormalizedDeviceSpace(pos3); |
885 | 900 |
886 // transforms all points so that we can compare them to our test rect | 901 // transforms all points so that we can compare them to our test rect |
887 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 902 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
888 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n
", | 903 fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n
", |
889 v.fsIn(), v.fsIn(), intervalName, intervalName); | 904 v.fsIn(), v.fsIn(), intervalName, intervalName); |
890 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n",
v.fsIn()); | 905 fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n",
v.fsIn()); |
891 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) { | 906 if (GrProcessorEdgeTypeIsAA(de.getEdgeType())) { |
892 // The amount of coverage removed in x and y by the edges is computed as
a pair of negative | 907 // The amount of coverage removed in x and y by the edges is computed as
a pair of negative |
893 // numbers, xSub and ySub. | 908 // numbers, xSub and ySub. |
894 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n"); | 909 fsBuilder->codeAppend("\t\tfloat xSub, ySub;\n"); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
962 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out)
const { | 977 void DashingLineEffect::onGetInvariantOutputCoverage(GrInitInvariantOutput* out)
const { |
963 out->setUnknownSingleComponent(); | 978 out->setUnknownSingleComponent(); |
964 } | 979 } |
965 | 980 |
966 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, | 981 void DashingLineEffect::getGLProcessorKey(const GrBatchTracker& bt, |
967 const GrGLCaps& caps, | 982 const GrGLCaps& caps, |
968 GrProcessorKeyBuilder* b) const { | 983 GrProcessorKeyBuilder* b) const { |
969 GLDashingLineEffect::GenKey(*this, bt, caps, b); | 984 GLDashingLineEffect::GenKey(*this, bt, caps, b); |
970 } | 985 } |
971 | 986 |
972 GrGLGeometryProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker&
bt) const { | 987 GrGLPrimitiveProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker
& bt, |
| 988 const GrGLCaps&) con
st { |
973 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt)); | 989 return SkNEW_ARGS(GLDashingLineEffect, (*this, bt)); |
974 } | 990 } |
975 | 991 |
976 DashingLineEffect::DashingLineEffect(GrColor color, | 992 DashingLineEffect::DashingLineEffect(GrColor color, |
977 GrPrimitiveEdgeType edgeType, | 993 GrPrimitiveEdgeType edgeType, |
978 const DashInfo& info, | 994 const DashInfo& info, |
979 SkScalar strokeWidth, | 995 SkScalar strokeWidth, |
980 const SkMatrix& localMatrix) | 996 const SkMatrix& localMatrix) |
981 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { | 997 : INHERITED(color, SkMatrix::I(), localMatrix), fEdgeType(edgeType) { |
982 this->initClassID<DashingLineEffect>(); | 998 this->initClassID<DashingLineEffect>(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1049 return DashingCircleEffect::Create(color, edgeType, info, | 1065 return DashingCircleEffect::Create(color, edgeType, info, |
1050 SkScalarHalf(strokeWidth), | 1066 SkScalarHalf(strokeWidth), |
1051 localMatrix); | 1067 localMatrix); |
1052 case GrDashingEffect::kNonRound_DashCap: | 1068 case GrDashingEffect::kNonRound_DashCap: |
1053 return DashingLineEffect::Create(color, edgeType, info, strokeWidth,
localMatrix); | 1069 return DashingLineEffect::Create(color, edgeType, info, strokeWidth,
localMatrix); |
1054 default: | 1070 default: |
1055 SkFAIL("Unexpected dashed cap."); | 1071 SkFAIL("Unexpected dashed cap."); |
1056 } | 1072 } |
1057 return NULL; | 1073 return NULL; |
1058 } | 1074 } |
OLD | NEW |