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