| 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/GrGLProcessor.h" | 10 #include "gl/GrGLProcessor.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 vsBuilder->emitAttributes(gp); | 76 vsBuilder->emitAttributes(gp); |
| 77 | 77 |
| 78 GrGLVertToFrag v(kVec4f_GrSLType); | 78 GrGLVertToFrag v(kVec4f_GrSLType); |
| 79 args.fPB->addVarying("ConicCoeffs", &v); | 79 args.fPB->addVarying("ConicCoeffs", &v); |
| 80 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); | 80 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName); |
| 81 | 81 |
| 82 // Setup pass through color | 82 // Setup pass through color |
| 83 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, | 83 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, |
| 84 &fColorUniform); | 84 &fColorUniform); |
| 85 | 85 |
| 86 // setup uniform viewMatrix | |
| 87 this->addUniformViewMatrix(pb); | |
| 88 | |
| 89 // Setup position | 86 // Setup position |
| 90 SetupPosition(vsBuilder, gpArgs, gp.inPosition()->fName, gp.viewMatrix(), th
is->uViewM()); | 87 this->setupPosition(pb, gpArgs, gp.inPosition()->fName, gp.viewMatrix()); |
| 91 | 88 |
| 92 // emit transforms with position | 89 // emit transforms with position |
| 93 this->emitTransforms(pb, gpArgs->fPositionVar, gp.inPosition()->fName, gp.lo
calMatrix(), | 90 this->emitTransforms(pb, gpArgs->fPositionVar, gp.inPosition()->fName, gp.lo
calMatrix(), |
| 94 args.fTransformsIn, args.fTransformsOut); | 91 args.fTransformsIn, args.fTransformsOut); |
| 95 | 92 |
| 96 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 93 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
| 97 fsBuilder->codeAppend("float edgeAlpha;"); | 94 fsBuilder->codeAppend("float edgeAlpha;"); |
| 98 | 95 |
| 99 switch (fEdgeType) { | 96 switch (fEdgeType) { |
| 100 case kHairlineAA_GrProcessorEdgeType: { | 97 case kHairlineAA_GrProcessorEdgeType: { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);"); | 143 fsBuilder->codeAppend("edgeAlpha = float(edgeAlpha < 0.0);"); |
| 147 break; | 144 break; |
| 148 } | 145 } |
| 149 default: | 146 default: |
| 150 SkFAIL("Shouldn't get here"); | 147 SkFAIL("Shouldn't get here"); |
| 151 } | 148 } |
| 152 | 149 |
| 153 if (0xff != local.fCoverageScale) { | 150 if (0xff != local.fCoverageScale) { |
| 154 const char* coverageScale; | 151 const char* coverageScale; |
| 155 fCoverageScaleUniform = pb->addUniform(GrGLProgramBuilder::kFragment_Vis
ibility, | 152 fCoverageScaleUniform = pb->addUniform(GrGLProgramBuilder::kFragment_Vis
ibility, |
| 156 kFloat_GrSLType, | 153 kFloat_GrSLType, |
| 157 kDefault_GrSLPrecision, | 154 kDefault_GrSLPrecision, |
| 158 "Coverage", | 155 "Coverage", |
| 159 &coverageScale); | 156 &coverageScale); |
| 160 fsBuilder->codeAppendf("%s = vec4(%s * edgeAlpha);", args.fOutputCoverag
e, coverageScale); | 157 fsBuilder->codeAppendf("%s = vec4(%s * edgeAlpha);", args.fOutputCoverag
e, coverageScale); |
| 161 } else { | 158 } else { |
| 162 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage); | 159 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage); |
| 163 } | 160 } |
| 164 } | 161 } |
| 165 | 162 |
| 166 void GrGLConicEffect::GenKey(const GrGeometryProcessor& gp, | 163 void GrGLConicEffect::GenKey(const GrGeometryProcessor& gp, |
| 167 const GrBatchTracker& bt, | 164 const GrBatchTracker& bt, |
| 168 const GrGLCaps&, | 165 const GrGLCaps&, |
| 169 GrProcessorKeyBuilder* b) { | 166 GrProcessorKeyBuilder* b) { |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 vsBuilder->emitAttributes(gp); | 311 vsBuilder->emitAttributes(gp); |
| 315 | 312 |
| 316 GrGLVertToFrag v(kVec4f_GrSLType); | 313 GrGLVertToFrag v(kVec4f_GrSLType); |
| 317 args.fPB->addVarying("HairQuadEdge", &v); | 314 args.fPB->addVarying("HairQuadEdge", &v); |
| 318 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); | 315 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName); |
| 319 | 316 |
| 320 // Setup pass through color | 317 // Setup pass through color |
| 321 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, | 318 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, |
| 322 &fColorUniform); | 319 &fColorUniform); |
| 323 | 320 |
| 324 // setup uniform viewMatrix | |
| 325 this->addUniformViewMatrix(pb); | |
| 326 | |
| 327 // Setup position | 321 // Setup position |
| 328 SetupPosition(vsBuilder, gpArgs, gp.inPosition()->fName, gp.viewMatrix(), th
is->uViewM()); | 322 this->setupPosition(pb, gpArgs, gp.inPosition()->fName, gp.viewMatrix()); |
| 329 | 323 |
| 330 // emit transforms with position | 324 // emit transforms with position |
| 331 this->emitTransforms(pb, gpArgs->fPositionVar, gp.inPosition()->fName, gp.lo
calMatrix(), | 325 this->emitTransforms(pb, gpArgs->fPositionVar, gp.inPosition()->fName, gp.lo
calMatrix(), |
| 332 args.fTransformsIn, args.fTransformsOut); | 326 args.fTransformsIn, args.fTransformsOut); |
| 333 | 327 |
| 334 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 328 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
| 335 fsBuilder->codeAppendf("float edgeAlpha;"); | 329 fsBuilder->codeAppendf("float edgeAlpha;"); |
| 336 | 330 |
| 337 switch (fEdgeType) { | 331 switch (fEdgeType) { |
| 338 case kHairlineAA_GrProcessorEdgeType: { | 332 case kHairlineAA_GrProcessorEdgeType: { |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 vsBuilder->emitAttributes(gp); | 525 vsBuilder->emitAttributes(gp); |
| 532 | 526 |
| 533 GrGLVertToFrag v(kVec4f_GrSLType); | 527 GrGLVertToFrag v(kVec4f_GrSLType); |
| 534 args.fPB->addVarying("CubicCoeffs", &v, kHigh_GrSLPrecision); | 528 args.fPB->addVarying("CubicCoeffs", &v, kHigh_GrSLPrecision); |
| 535 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName); | 529 vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName); |
| 536 | 530 |
| 537 // Setup pass through color | 531 // Setup pass through color |
| 538 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, | 532 this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputCol
or, NULL, |
| 539 &fColorUniform); | 533 &fColorUniform); |
| 540 | 534 |
| 541 // setup uniform viewMatrix | |
| 542 this->addUniformViewMatrix(args.fPB); | |
| 543 | |
| 544 // Setup position | 535 // Setup position |
| 545 SetupPosition(vsBuilder, gpArgs, gp.inPosition()->fName, gp.viewMatrix(), th
is->uViewM()); | 536 this->setupPosition(args.fPB, gpArgs, gp.inPosition()->fName, gp.viewMatrix(
)); |
| 546 | 537 |
| 547 // emit transforms with position | 538 // emit transforms with position |
| 548 this->emitTransforms(args.fPB, gpArgs->fPositionVar, gp.inPosition()->fName,
gp.localMatrix(), | 539 this->emitTransforms(args.fPB, gpArgs->fPositionVar, gp.inPosition()->fName,
gp.localMatrix(), |
| 549 args.fTransformsIn, args.fTransformsOut); | 540 args.fTransformsIn, args.fTransformsOut); |
| 550 | 541 |
| 551 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 542 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
| 552 | 543 |
| 553 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision
); | 544 GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision
); |
| 554 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); | 545 GrGLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); |
| 555 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); | 546 GrGLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 GrGeometryProcessor* gp; | 696 GrGeometryProcessor* gp; |
| 706 do { | 697 do { |
| 707 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( | 698 GrPrimitiveEdgeType edgeType = static_cast<GrPrimitiveEdgeType>( |
| 708 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); | 699 random->nextULessThan(kGrPro
cessorEdgeTypeCnt)); |
| 709 gp = GrCubicEffect::Create(GrRandomColor(random), | 700 gp = GrCubicEffect::Create(GrRandomColor(random), |
| 710 GrProcessorUnitTest::TestMatrix(random), edge
Type, caps); | 701 GrProcessorUnitTest::TestMatrix(random), edge
Type, caps); |
| 711 } while (NULL == gp); | 702 } while (NULL == gp); |
| 712 return gp; | 703 return gp; |
| 713 } | 704 } |
| 714 | 705 |
| OLD | NEW |