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 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 | 228 |
229 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 229 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder, |
230 const GrFragmentProcessor& fp, | 230 const GrFragmentProcessor& fp, |
231 const char* outputColor, | 231 const char* outputColor, |
232 const char* inputColor, | 232 const char* inputColor, |
233 const TransformedCoordsArray& coords, | 233 const TransformedCoordsArray& coords, |
234 const TextureSamplerArray& samplers) { | 234 const TextureSamplerArray& samplers) { |
235 const Edge2PtConicalEffect& ge = fp.cast<Edge2PtConicalEffect>(); | 235 const Edge2PtConicalEffect& ge = fp.cast<Edge2PtConicalEffect>(); |
236 this->emitUniforms(builder, ge); | 236 this->emitUniforms(builder, ge); |
237 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit
y, | 237 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit
y, |
238 kFloat_GrSLType, "Conical2FSParams", 3)
; | 238 kFloat_GrSLType, kDefault_GrSLPrecision
, |
| 239 "Conical2FSParams", 3); |
239 | 240 |
240 SkString cName("c"); | 241 SkString cName("c"); |
241 SkString tName("t"); | 242 SkString tName("t"); |
242 SkString p0; // start radius | 243 SkString p0; // start radius |
243 SkString p1; // start radius squared | 244 SkString p1; // start radius squared |
244 SkString p2; // difference in radii (r1 - r0) | 245 SkString p2; // difference in radii (r1 - r0) |
245 | 246 |
246 builder->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); | 247 builder->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); |
247 builder->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); | 248 builder->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); |
248 builder->getUniformVariable(fParamUni).appendArrayAccess(2, &p2); | 249 builder->getUniformVariable(fParamUni).appendArrayAccess(2, &p2); |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 | 514 |
514 void GLFocalOutside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 515 void GLFocalOutside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, |
515 const GrFragmentProcessor& fp, | 516 const GrFragmentProcessor& fp, |
516 const char* outputColor, | 517 const char* outputColor, |
517 const char* inputColor, | 518 const char* inputColor, |
518 const TransformedCoordsArray& coor
ds, | 519 const TransformedCoordsArray& coor
ds, |
519 const TextureSamplerArray& sampler
s) { | 520 const TextureSamplerArray& sampler
s) { |
520 const FocalOutside2PtConicalEffect& ge = fp.cast<FocalOutside2PtConicalEffec
t>(); | 521 const FocalOutside2PtConicalEffect& ge = fp.cast<FocalOutside2PtConicalEffec
t>(); |
521 this->emitUniforms(builder, ge); | 522 this->emitUniforms(builder, ge); |
522 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit
y, | 523 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit
y, |
523 kFloat_GrSLType, "Conical2FSParams", 2)
; | 524 kFloat_GrSLType, kDefault_GrSLPrecision
, |
| 525 "Conical2FSParams", 2); |
524 SkString tName("t"); | 526 SkString tName("t"); |
525 SkString p0; // focalX | 527 SkString p0; // focalX |
526 SkString p1; // 1 - focalX * focalX | 528 SkString p1; // 1 - focalX * focalX |
527 | 529 |
528 builder->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); | 530 builder->getUniformVariable(fParamUni).appendArrayAccess(0, &p0); |
529 builder->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); | 531 builder->getUniformVariable(fParamUni).appendArrayAccess(1, &p1); |
530 | 532 |
531 // if we have a vec3 from being in perspective, convert it to a vec2 first | 533 // if we have a vec3 from being in perspective, convert it to a vec2 first |
532 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 534 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
533 SkString coords2DString = fsBuilder->ensureFSCoords2D(coords, 0); | 535 SkString coords2DString = fsBuilder->ensureFSCoords2D(coords, 0); |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 | 729 |
728 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 730 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, |
729 const GrFragmentProcessor& fp, | 731 const GrFragmentProcessor& fp, |
730 const char* outputColor, | 732 const char* outputColor, |
731 const char* inputColor, | 733 const char* inputColor, |
732 const TransformedCoordsArray& coord
s, | 734 const TransformedCoordsArray& coord
s, |
733 const TextureSamplerArray& samplers
) { | 735 const TextureSamplerArray& samplers
) { |
734 const FocalInside2PtConicalEffect& ge = fp.cast<FocalInside2PtConicalEffect>
(); | 736 const FocalInside2PtConicalEffect& ge = fp.cast<FocalInside2PtConicalEffect>
(); |
735 this->emitUniforms(builder, ge); | 737 this->emitUniforms(builder, ge); |
736 fFocalUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 738 fFocalUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
737 kFloat_GrSLType, "Conical2FSParams"); | 739 kFloat_GrSLType, kDefault_GrSLPrecision, |
| 740 "Conical2FSParams"); |
738 SkString tName("t"); | 741 SkString tName("t"); |
739 | 742 |
740 // this is the distance along x-axis from the end center to focal point in | 743 // this is the distance along x-axis from the end center to focal point in |
741 // transformed coordinates | 744 // transformed coordinates |
742 GrGLShaderVar focal = builder->getUniformVariable(fFocalUni); | 745 GrGLShaderVar focal = builder->getUniformVariable(fFocalUni); |
743 | 746 |
744 // if we have a vec3 from being in perspective, convert it to a vec2 first | 747 // if we have a vec3 from being in perspective, convert it to a vec2 first |
745 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 748 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
746 SkString coords2DString = fsBuilder->ensureFSCoords2D(coords, 0); | 749 SkString coords2DString = fsBuilder->ensureFSCoords2D(coords, 0); |
747 const char* coords2D = coords2DString.c_str(); | 750 const char* coords2D = coords2DString.c_str(); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 | 986 |
984 void GLCircleInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 987 void GLCircleInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, |
985 const GrFragmentProcessor& fp, | 988 const GrFragmentProcessor& fp, |
986 const char* outputColor, | 989 const char* outputColor, |
987 const char* inputColor, | 990 const char* inputColor, |
988 const TransformedCoordsArray& coor
ds, | 991 const TransformedCoordsArray& coor
ds, |
989 const TextureSamplerArray& sampler
s) { | 992 const TextureSamplerArray& sampler
s) { |
990 const CircleInside2PtConicalEffect& ge = fp.cast<CircleInside2PtConicalEffec
t>(); | 993 const CircleInside2PtConicalEffect& ge = fp.cast<CircleInside2PtConicalEffec
t>(); |
991 this->emitUniforms(builder, ge); | 994 this->emitUniforms(builder, ge); |
992 fCenterUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 995 fCenterUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
993 kVec2f_GrSLType, "Conical2FSCenter"); | 996 kVec2f_GrSLType, kDefault_GrSLPrecision, |
| 997 "Conical2FSCenter"); |
994 fParamUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 998 fParamUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
995 kVec3f_GrSLType, "Conical2FSParams"); | 999 kVec3f_GrSLType, kDefault_GrSLPrecision, |
| 1000 "Conical2FSParams"); |
996 SkString tName("t"); | 1001 SkString tName("t"); |
997 | 1002 |
998 GrGLShaderVar center = builder->getUniformVariable(fCenterUni); | 1003 GrGLShaderVar center = builder->getUniformVariable(fCenterUni); |
999 // params.x = A | 1004 // params.x = A |
1000 // params.y = B | 1005 // params.y = B |
1001 // params.z = C | 1006 // params.z = C |
1002 GrGLShaderVar params = builder->getUniformVariable(fParamUni); | 1007 GrGLShaderVar params = builder->getUniformVariable(fParamUni); |
1003 | 1008 |
1004 // if we have a vec3 from being in perspective, convert it to a vec2 first | 1009 // if we have a vec3 from being in perspective, convert it to a vec2 first |
1005 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 1010 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1224 | 1229 |
1225 void GLCircleOutside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 1230 void GLCircleOutside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, |
1226 const GrFragmentProcessor& fp, | 1231 const GrFragmentProcessor& fp, |
1227 const char* outputColor, | 1232 const char* outputColor, |
1228 const char* inputColor, | 1233 const char* inputColor, |
1229 const TransformedCoordsArray& coo
rds, | 1234 const TransformedCoordsArray& coo
rds, |
1230 const TextureSamplerArray& sample
rs) { | 1235 const TextureSamplerArray& sample
rs) { |
1231 const CircleOutside2PtConicalEffect& ge = fp.cast<CircleOutside2PtConicalEff
ect>(); | 1236 const CircleOutside2PtConicalEffect& ge = fp.cast<CircleOutside2PtConicalEff
ect>(); |
1232 this->emitUniforms(builder, ge); | 1237 this->emitUniforms(builder, ge); |
1233 fCenterUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 1238 fCenterUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
1234 kVec2f_GrSLType, "Conical2FSCenter"); | 1239 kVec2f_GrSLType, kDefault_GrSLPrecision, |
| 1240 "Conical2FSCenter"); |
1235 fParamUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 1241 fParamUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
1236 kVec4f_GrSLType, "Conical2FSParams"); | 1242 kVec4f_GrSLType, kDefault_GrSLPrecision, |
| 1243 "Conical2FSParams"); |
1237 SkString tName("t"); | 1244 SkString tName("t"); |
1238 | 1245 |
1239 GrGLShaderVar center = builder->getUniformVariable(fCenterUni); | 1246 GrGLShaderVar center = builder->getUniformVariable(fCenterUni); |
1240 // params.x = A | 1247 // params.x = A |
1241 // params.y = B | 1248 // params.y = B |
1242 // params.z = C | 1249 // params.z = C |
1243 GrGLShaderVar params = builder->getUniformVariable(fParamUni); | 1250 GrGLShaderVar params = builder->getUniformVariable(fParamUni); |
1244 | 1251 |
1245 // if we have a vec3 from being in perspective, convert it to a vec2 first | 1252 // if we have a vec3 from being in perspective, convert it to a vec2 first |
1246 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); | 1253 GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1353 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); | 1360 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); |
1354 } else if (type == kEdge_ConicalType) { | 1361 } else if (type == kEdge_ConicalType) { |
1355 set_matrix_edge_conical(shader, &matrix); | 1362 set_matrix_edge_conical(shader, &matrix); |
1356 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); | 1363 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); |
1357 } else { | 1364 } else { |
1358 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); | 1365 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); |
1359 } | 1366 } |
1360 } | 1367 } |
1361 | 1368 |
1362 #endif | 1369 #endif |
OLD | NEW |