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 "GrBatch.h" | 10 #include "GrBatch.h" |
(...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); | 884 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); |
885 | 885 |
886 // Setup position | 886 // Setup position |
887 this->setupPosition(pb, gpArgs, dce.inPosition()->fName, dce.viewMatrix()); | 887 this->setupPosition(pb, gpArgs, dce.inPosition()->fName, dce.viewMatrix()); |
888 | 888 |
889 // emit transforms | 889 // emit transforms |
890 this->emitTransforms(args.fPB, gpArgs->fPositionVar, dce.inPosition()->fName
, dce.localMatrix(), | 890 this->emitTransforms(args.fPB, gpArgs->fPositionVar, dce.inPosition()->fName
, dce.localMatrix(), |
891 args.fTransformsIn, args.fTransformsOut); | 891 args.fTransformsIn, args.fTransformsOut); |
892 | 892 |
893 // transforms all points so that we can compare them to our test circle | 893 // transforms all points so that we can compare them to our test circle |
894 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 894 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
895 fsBuilder->codeAppendf("float xShifted = %s.x - floor(%s.x / %s.z) * %s.z;", | 895 fsBuilder->codeAppendf("float xShifted = %s.x - floor(%s.x / %s.z) * %s.z;", |
896 dashParams.fsIn(), dashParams.fsIn(), dashParams.fsIn
(), | 896 dashParams.fsIn(), dashParams.fsIn(), dashParams.fsIn
(), |
897 dashParams.fsIn()); | 897 dashParams.fsIn()); |
898 fsBuilder->codeAppendf("vec2 fragPosShifted = vec2(xShifted, %s.y);", dashPa
rams.fsIn()); | 898 fsBuilder->codeAppendf("vec2 fragPosShifted = vec2(xShifted, %s.y);", dashPa
rams.fsIn()); |
899 fsBuilder->codeAppendf("vec2 center = vec2(%s.y, 0.0);", circleParams.fsIn()
); | 899 fsBuilder->codeAppendf("vec2 center = vec2(%s.y, 0.0);", circleParams.fsIn()
); |
900 fsBuilder->codeAppend("float dist = length(center - fragPosShifted);"); | 900 fsBuilder->codeAppend("float dist = length(center - fragPosShifted);"); |
901 if (dce.aaMode() != kBW_DashAAMode) { | 901 if (dce.aaMode() != kBW_DashAAMode) { |
902 fsBuilder->codeAppendf("float diff = dist - %s.x;", circleParams.fsIn())
; | 902 fsBuilder->codeAppendf("float diff = dist - %s.x;", circleParams.fsIn())
; |
903 fsBuilder->codeAppend("diff = 1.0 - diff;"); | 903 fsBuilder->codeAppend("diff = 1.0 - diff;"); |
904 fsBuilder->codeAppend("float alpha = clamp(diff, 0.0, 1.0);"); | 904 fsBuilder->codeAppend("float alpha = clamp(diff, 0.0, 1.0);"); |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1127 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); | 1127 this->setupColorPassThrough(pb, local.fInputColorType, args.fOutputColor, NU
LL, &fColorUniform); |
1128 | 1128 |
1129 // Setup position | 1129 // Setup position |
1130 this->setupPosition(pb, gpArgs, de.inPosition()->fName, de.viewMatrix()); | 1130 this->setupPosition(pb, gpArgs, de.inPosition()->fName, de.viewMatrix()); |
1131 | 1131 |
1132 // emit transforms | 1132 // emit transforms |
1133 this->emitTransforms(args.fPB, gpArgs->fPositionVar, de.inPosition()->fName,
de.localMatrix(), | 1133 this->emitTransforms(args.fPB, gpArgs->fPositionVar, de.inPosition()->fName,
de.localMatrix(), |
1134 args.fTransformsIn, args.fTransformsOut); | 1134 args.fTransformsIn, args.fTransformsOut); |
1135 | 1135 |
1136 // transforms all points so that we can compare them to our test rect | 1136 // transforms all points so that we can compare them to our test rect |
1137 GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 1137 GrGLFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
1138 fsBuilder->codeAppendf("float xShifted = %s.x - floor(%s.x / %s.z) * %s.z;", | 1138 fsBuilder->codeAppendf("float xShifted = %s.x - floor(%s.x / %s.z) * %s.z;", |
1139 inDashParams.fsIn(), inDashParams.fsIn(), inDashParam
s.fsIn(), | 1139 inDashParams.fsIn(), inDashParams.fsIn(), inDashParam
s.fsIn(), |
1140 inDashParams.fsIn()); | 1140 inDashParams.fsIn()); |
1141 fsBuilder->codeAppendf("vec2 fragPosShifted = vec2(xShifted, %s.y);", inDash
Params.fsIn()); | 1141 fsBuilder->codeAppendf("vec2 fragPosShifted = vec2(xShifted, %s.y);", inDash
Params.fsIn()); |
1142 if (de.aaMode() == kEdgeAA_DashAAMode) { | 1142 if (de.aaMode() == kEdgeAA_DashAAMode) { |
1143 // The amount of coverage removed in x and y by the edges is computed as
a pair of negative | 1143 // The amount of coverage removed in x and y by the edges is computed as
a pair of negative |
1144 // numbers, xSub and ySub. | 1144 // numbers, xSub and ySub. |
1145 fsBuilder->codeAppend("float xSub, ySub;"); | 1145 fsBuilder->codeAppend("float xSub, ySub;"); |
1146 fsBuilder->codeAppendf("xSub = min(fragPosShifted.x - %s.x, 0.0);", inRe
ctParams.fsIn()); | 1146 fsBuilder->codeAppendf("xSub = min(fragPosShifted.x - %s.x, 0.0);", inRe
ctParams.fsIn()); |
1147 fsBuilder->codeAppendf("xSub += min(%s.z - fragPosShifted.x, 0.0);", inR
ectParams.fsIn()); | 1147 fsBuilder->codeAppendf("xSub += min(%s.z - fragPosShifted.x, 0.0);", inR
ectParams.fsIn()); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1273 switch (cap) { | 1273 switch (cap) { |
1274 case kRound_DashCap: | 1274 case kRound_DashCap: |
1275 return DashingCircleEffect::Create(color, dashAAMode, localMatrix); | 1275 return DashingCircleEffect::Create(color, dashAAMode, localMatrix); |
1276 case kNonRound_DashCap: | 1276 case kNonRound_DashCap: |
1277 return DashingLineEffect::Create(color, dashAAMode, localMatrix); | 1277 return DashingLineEffect::Create(color, dashAAMode, localMatrix); |
1278 default: | 1278 default: |
1279 SkFAIL("Unexpected dashed cap."); | 1279 SkFAIL("Unexpected dashed cap."); |
1280 } | 1280 } |
1281 return NULL; | 1281 return NULL; |
1282 } | 1282 } |
OLD | NEW |