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 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
701 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) { | 701 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) { |
702 const FocalInside2PtConicalEffect& ge = args.fFp.cast<FocalInside2PtConicalE
ffect>(); | 702 const FocalInside2PtConicalEffect& ge = args.fFp.cast<FocalInside2PtConicalE
ffect>(); |
703 this->emitUniforms(args.fBuilder, ge); | 703 this->emitUniforms(args.fBuilder, ge); |
704 fFocalUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, | 704 fFocalUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, |
705 kFloat_GrSLType, kDefault_GrSLPrecision, | 705 kFloat_GrSLType, kDefault_GrSLPrecision, |
706 "Conical2FSParams"); | 706 "Conical2FSParams"); |
707 SkString tName("t"); | 707 SkString tName("t"); |
708 | 708 |
709 // this is the distance along x-axis from the end center to focal point in | 709 // this is the distance along x-axis from the end center to focal point in |
710 // transformed coordinates | 710 // transformed coordinates |
711 GrGLShaderVar focal = args.fBuilder->getUniformVariable(fFocalUni); | 711 GrGLSLShaderVar focal = args.fBuilder->getUniformVariable(fFocalUni); |
712 | 712 |
713 // if we have a vec3 from being in perspective, convert it to a vec2 first | 713 // if we have a vec3 from being in perspective, convert it to a vec2 first |
714 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); | 714 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
715 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); | 715 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); |
716 const char* coords2D = coords2DString.c_str(); | 716 const char* coords2D = coords2DString.c_str(); |
717 | 717 |
718 // t = p.x * focalX + length(p) | 718 // t = p.x * focalX + length(p) |
719 fsBuilder->codeAppendf("\tfloat %s = %s.x * %s + length(%s);\n", tName.c_st
r(), | 719 fsBuilder->codeAppendf("\tfloat %s = %s.x * %s + length(%s);\n", tName.c_st
r(), |
720 coords2D, focal.c_str(), coords2D); | 720 coords2D, focal.c_str(), coords2D); |
721 | 721 |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 const CircleInside2PtConicalEffect& ge = args.fFp.cast<CircleInside2PtConica
lEffect>(); | 947 const CircleInside2PtConicalEffect& ge = args.fFp.cast<CircleInside2PtConica
lEffect>(); |
948 this->emitUniforms(args.fBuilder, ge); | 948 this->emitUniforms(args.fBuilder, ge); |
949 fCenterUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, | 949 fCenterUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, |
950 kVec2f_GrSLType, kDefault_GrSLPrecision, | 950 kVec2f_GrSLType, kDefault_GrSLPrecision, |
951 "Conical2FSCenter"); | 951 "Conical2FSCenter"); |
952 fParamUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, | 952 fParamUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, |
953 kVec3f_GrSLType, kDefault_GrSLPrecision, | 953 kVec3f_GrSLType, kDefault_GrSLPrecision, |
954 "Conical2FSParams"); | 954 "Conical2FSParams"); |
955 SkString tName("t"); | 955 SkString tName("t"); |
956 | 956 |
957 GrGLShaderVar center = args.fBuilder->getUniformVariable(fCenterUni); | 957 GrGLSLShaderVar center = args.fBuilder->getUniformVariable(fCenterUni); |
958 // params.x = A | 958 // params.x = A |
959 // params.y = B | 959 // params.y = B |
960 // params.z = C | 960 // params.z = C |
961 GrGLShaderVar params = args.fBuilder->getUniformVariable(fParamUni); | 961 GrGLSLShaderVar params = args.fBuilder->getUniformVariable(fParamUni); |
962 | 962 |
963 // if we have a vec3 from being in perspective, convert it to a vec2 first | 963 // if we have a vec3 from being in perspective, convert it to a vec2 first |
964 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); | 964 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
965 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); | 965 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); |
966 const char* coords2D = coords2DString.c_str(); | 966 const char* coords2D = coords2DString.c_str(); |
967 | 967 |
968 // p = coords2D | 968 // p = coords2D |
969 // e = center end | 969 // e = center end |
970 // r = radius end | 970 // r = radius end |
971 // A = dot(e, e) - r^2 + 2 * r - 1 | 971 // A = dot(e, e) - r^2 + 2 * r - 1 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1177 const CircleOutside2PtConicalEffect& ge = args.fFp.cast<CircleOutside2PtConi
calEffect>(); | 1177 const CircleOutside2PtConicalEffect& ge = args.fFp.cast<CircleOutside2PtConi
calEffect>(); |
1178 this->emitUniforms(args.fBuilder, ge); | 1178 this->emitUniforms(args.fBuilder, ge); |
1179 fCenterUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, | 1179 fCenterUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, |
1180 kVec2f_GrSLType, kDefault_GrSLPrecision, | 1180 kVec2f_GrSLType, kDefault_GrSLPrecision, |
1181 "Conical2FSCenter"); | 1181 "Conical2FSCenter"); |
1182 fParamUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, | 1182 fParamUni = args.fBuilder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, |
1183 kVec4f_GrSLType, kDefault_GrSLPrecision, | 1183 kVec4f_GrSLType, kDefault_GrSLPrecision, |
1184 "Conical2FSParams"); | 1184 "Conical2FSParams"); |
1185 SkString tName("t"); | 1185 SkString tName("t"); |
1186 | 1186 |
1187 GrGLShaderVar center = args.fBuilder->getUniformVariable(fCenterUni); | 1187 GrGLSLShaderVar center = args.fBuilder->getUniformVariable(fCenterUni); |
1188 // params.x = A | 1188 // params.x = A |
1189 // params.y = B | 1189 // params.y = B |
1190 // params.z = C | 1190 // params.z = C |
1191 GrGLShaderVar params = args.fBuilder->getUniformVariable(fParamUni); | 1191 GrGLSLShaderVar params = args.fBuilder->getUniformVariable(fParamUni); |
1192 | 1192 |
1193 // if we have a vec3 from being in perspective, convert it to a vec2 first | 1193 // if we have a vec3 from being in perspective, convert it to a vec2 first |
1194 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); | 1194 GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); |
1195 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); | 1195 SkString coords2DString = fsBuilder->ensureFSCoords2D(args.fCoords, 0); |
1196 const char* coords2D = coords2DString.c_str(); | 1196 const char* coords2D = coords2DString.c_str(); |
1197 | 1197 |
1198 // output will default to transparent black (we simply won't write anything | 1198 // output will default to transparent black (we simply won't write anything |
1199 // else to it if invalid, instead of discarding or returning prematurely) | 1199 // else to it if invalid, instead of discarding or returning prematurely) |
1200 fsBuilder->codeAppendf("\t%s = vec4(0.0,0.0,0.0,0.0);\n", args.fOutputColor)
; | 1200 fsBuilder->codeAppendf("\t%s = vec4(0.0,0.0,0.0,0.0);\n", args.fOutputColor)
; |
1201 | 1201 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1302 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); | 1302 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); |
1303 } else if (type == kEdge_ConicalType) { | 1303 } else if (type == kEdge_ConicalType) { |
1304 set_matrix_edge_conical(shader, &matrix); | 1304 set_matrix_edge_conical(shader, &matrix); |
1305 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); | 1305 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); |
1306 } else { | 1306 } else { |
1307 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); | 1307 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); |
1308 } | 1308 } |
1309 } | 1309 } |
1310 | 1310 |
1311 #endif | 1311 #endif |
OLD | NEW |