| 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 |