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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) | 220 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) |
221 : fVSVaryingName(nullptr) | 221 : fVSVaryingName(nullptr) |
222 , fFSVaryingName(nullptr) | 222 , fFSVaryingName(nullptr) |
223 , fCachedRadius(-SK_ScalarMax) | 223 , fCachedRadius(-SK_ScalarMax) |
224 , fCachedDiffRadius(-SK_ScalarMax) {} | 224 , fCachedDiffRadius(-SK_ScalarMax) {} |
225 | 225 |
226 void GLEdge2PtConicalEffect::emitCode(EmitArgs& args) { | 226 void GLEdge2PtConicalEffect::emitCode(EmitArgs& args) { |
227 const Edge2PtConicalEffect& ge = args.fFp.cast<Edge2PtConicalEffect>(); | 227 const Edge2PtConicalEffect& ge = args.fFp.cast<Edge2PtConicalEffect>(); |
228 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; | 228 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; |
229 this->emitUniforms(uniformHandler, ge); | 229 this->emitUniforms(uniformHandler, ge); |
230 fParamUni = uniformHandler->addUniformArray(GrGLSLUniformHandler::kFragment_
Visibility, | 230 fParamUni = uniformHandler->addUniformArray(kFragment_GrShaderFlag, |
231 kFloat_GrSLType, kDefault_GrSLPr
ecision, | 231 kFloat_GrSLType, kDefault_GrSLPr
ecision, |
232 "Conical2FSParams", 3); | 232 "Conical2FSParams", 3); |
233 | 233 |
234 SkString cName("c"); | 234 SkString cName("c"); |
235 SkString tName("t"); | 235 SkString tName("t"); |
236 SkString p0; // start radius | 236 SkString p0; // start radius |
237 SkString p1; // start radius squared | 237 SkString p1; // start radius squared |
238 SkString p2; // difference in radii (r1 - r0) | 238 SkString p2; // difference in radii (r1 - r0) |
239 | 239 |
240 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); | 240 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 , fFSVaryingName(nullptr) | 503 , fFSVaryingName(nullptr) |
504 , fCachedFocal(SK_ScalarMax) { | 504 , fCachedFocal(SK_ScalarMax) { |
505 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon
icalEffect>(); | 505 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon
icalEffect>(); |
506 fIsFlipped = data.isFlipped(); | 506 fIsFlipped = data.isFlipped(); |
507 } | 507 } |
508 | 508 |
509 void GLFocalOutside2PtConicalEffect::emitCode(EmitArgs& args) { | 509 void GLFocalOutside2PtConicalEffect::emitCode(EmitArgs& args) { |
510 const FocalOutside2PtConicalEffect& ge = args.fFp.cast<FocalOutside2PtConica
lEffect>(); | 510 const FocalOutside2PtConicalEffect& ge = args.fFp.cast<FocalOutside2PtConica
lEffect>(); |
511 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; | 511 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; |
512 this->emitUniforms(uniformHandler, ge); | 512 this->emitUniforms(uniformHandler, ge); |
513 fParamUni = uniformHandler->addUniformArray(GrGLSLUniformHandler::kFragment_
Visibility, | 513 fParamUni = uniformHandler->addUniformArray(kFragment_GrShaderFlag, |
514 kFloat_GrSLType, kDefault_GrSLPr
ecision, | 514 kFloat_GrSLType, kDefault_GrSLPr
ecision, |
515 "Conical2FSParams", 2); | 515 "Conical2FSParams", 2); |
516 SkString tName("t"); | 516 SkString tName("t"); |
517 SkString p0; // focalX | 517 SkString p0; // focalX |
518 SkString p1; // 1 - focalX * focalX | 518 SkString p1; // 1 - focalX * focalX |
519 | 519 |
520 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); | 520 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); |
521 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); | 521 uniformHandler->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); |
522 | 522 |
523 // if we have a vec3 from being in perspective, convert it to a vec2 first | 523 // if we have a vec3 from being in perspective, convert it to a vec2 first |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 | 713 |
714 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) | 714 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) |
715 : fVSVaryingName(nullptr) | 715 : fVSVaryingName(nullptr) |
716 , fFSVaryingName(nullptr) | 716 , fFSVaryingName(nullptr) |
717 , fCachedFocal(SK_ScalarMax) {} | 717 , fCachedFocal(SK_ScalarMax) {} |
718 | 718 |
719 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) { | 719 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) { |
720 const FocalInside2PtConicalEffect& ge = args.fFp.cast<FocalInside2PtConicalE
ffect>(); | 720 const FocalInside2PtConicalEffect& ge = args.fFp.cast<FocalInside2PtConicalE
ffect>(); |
721 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; | 721 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; |
722 this->emitUniforms(uniformHandler, ge); | 722 this->emitUniforms(uniformHandler, ge); |
723 fFocalUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visib
ility, | 723 fFocalUni = uniformHandler->addUniform(kFragment_GrShaderFlag, |
724 kFloat_GrSLType, kDefault_GrSLPrecisi
on, | 724 kFloat_GrSLType, kDefault_GrSLPrecisi
on, |
725 "Conical2FSParams"); | 725 "Conical2FSParams"); |
726 SkString tName("t"); | 726 SkString tName("t"); |
727 | 727 |
728 // this is the distance along x-axis from the end center to focal point in | 728 // this is the distance along x-axis from the end center to focal point in |
729 // transformed coordinates | 729 // transformed coordinates |
730 GrGLSLShaderVar focal = uniformHandler->getUniformVariable(fFocalUni); | 730 GrGLSLShaderVar focal = uniformHandler->getUniformVariable(fFocalUni); |
731 | 731 |
732 // if we have a vec3 from being in perspective, convert it to a vec2 first | 732 // if we have a vec3 from being in perspective, convert it to a vec2 first |
733 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; | 733 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
965 , fCachedCenterX(SK_ScalarMax) | 965 , fCachedCenterX(SK_ScalarMax) |
966 , fCachedCenterY(SK_ScalarMax) | 966 , fCachedCenterY(SK_ScalarMax) |
967 , fCachedA(SK_ScalarMax) | 967 , fCachedA(SK_ScalarMax) |
968 , fCachedB(SK_ScalarMax) | 968 , fCachedB(SK_ScalarMax) |
969 , fCachedC(SK_ScalarMax) {} | 969 , fCachedC(SK_ScalarMax) {} |
970 | 970 |
971 void GLCircleInside2PtConicalEffect::emitCode(EmitArgs& args) { | 971 void GLCircleInside2PtConicalEffect::emitCode(EmitArgs& args) { |
972 const CircleInside2PtConicalEffect& ge = args.fFp.cast<CircleInside2PtConica
lEffect>(); | 972 const CircleInside2PtConicalEffect& ge = args.fFp.cast<CircleInside2PtConica
lEffect>(); |
973 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; | 973 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; |
974 this->emitUniforms(uniformHandler, ge); | 974 this->emitUniforms(uniformHandler, ge); |
975 fCenterUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visi
bility, | 975 fCenterUni = uniformHandler->addUniform(kFragment_GrShaderFlag, |
976 kVec2f_GrSLType, kDefault_GrSLPrecis
ion, | 976 kVec2f_GrSLType, kDefault_GrSLPrecis
ion, |
977 "Conical2FSCenter"); | 977 "Conical2FSCenter"); |
978 fParamUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visib
ility, | 978 fParamUni = uniformHandler->addUniform(kFragment_GrShaderFlag, |
979 kVec3f_GrSLType, kDefault_GrSLPrecisi
on, | 979 kVec3f_GrSLType, kDefault_GrSLPrecisi
on, |
980 "Conical2FSParams"); | 980 "Conical2FSParams"); |
981 SkString tName("t"); | 981 SkString tName("t"); |
982 | 982 |
983 GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni); | 983 GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni); |
984 // params.x = A | 984 // params.x = A |
985 // params.y = B | 985 // params.y = B |
986 // params.z = C | 986 // params.z = C |
987 GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni); | 987 GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni); |
988 | 988 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 , fCachedC(SK_ScalarMax) | 1202 , fCachedC(SK_ScalarMax) |
1203 , fCachedTLimit(SK_ScalarMax) { | 1203 , fCachedTLimit(SK_ScalarMax) { |
1204 const CircleOutside2PtConicalEffect& data = processor.cast<CircleOutside2PtC
onicalEffect>(); | 1204 const CircleOutside2PtConicalEffect& data = processor.cast<CircleOutside2PtC
onicalEffect>(); |
1205 fIsFlipped = data.isFlipped(); | 1205 fIsFlipped = data.isFlipped(); |
1206 } | 1206 } |
1207 | 1207 |
1208 void GLCircleOutside2PtConicalEffect::emitCode(EmitArgs& args) { | 1208 void GLCircleOutside2PtConicalEffect::emitCode(EmitArgs& args) { |
1209 const CircleOutside2PtConicalEffect& ge = args.fFp.cast<CircleOutside2PtConi
calEffect>(); | 1209 const CircleOutside2PtConicalEffect& ge = args.fFp.cast<CircleOutside2PtConi
calEffect>(); |
1210 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; | 1210 GrGLSLUniformHandler* uniformHandler = args.fUniformHandler; |
1211 this->emitUniforms(uniformHandler, ge); | 1211 this->emitUniforms(uniformHandler, ge); |
1212 fCenterUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visi
bility, | 1212 fCenterUni = uniformHandler->addUniform(kFragment_GrShaderFlag, |
1213 kVec2f_GrSLType, kDefault_GrSLPrecis
ion, | 1213 kVec2f_GrSLType, kDefault_GrSLPrecis
ion, |
1214 "Conical2FSCenter"); | 1214 "Conical2FSCenter"); |
1215 fParamUni = uniformHandler->addUniform(GrGLSLUniformHandler::kFragment_Visib
ility, | 1215 fParamUni = uniformHandler->addUniform(kFragment_GrShaderFlag, |
1216 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, | 1216 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, |
1217 "Conical2FSParams"); | 1217 "Conical2FSParams"); |
1218 SkString tName("t"); | 1218 SkString tName("t"); |
1219 | 1219 |
1220 GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni); | 1220 GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni); |
1221 // params.x = A | 1221 // params.x = A |
1222 // params.y = B | 1222 // params.y = B |
1223 // params.z = C | 1223 // params.z = C |
1224 GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni); | 1224 GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni); |
1225 | 1225 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); | 1342 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); |
1343 } else if (type == kEdge_ConicalType) { | 1343 } else if (type == kEdge_ConicalType) { |
1344 set_matrix_edge_conical(shader, &matrix); | 1344 set_matrix_edge_conical(shader, &matrix); |
1345 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); | 1345 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); |
1346 } else { | 1346 } else { |
1347 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); | 1347 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); |
1348 } | 1348 } |
1349 } | 1349 } |
1350 | 1350 |
1351 #endif | 1351 #endif |
OLD | NEW |