Some GrGLShaderBuilder cleanup
Review URL: https://codereview.appspot.com/6500043/
git-svn-id: http://skia.googlecode.com/svn/trunk@5322 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
index c73e884..408e702 100644
--- a/src/effects/SkLightingImageFilter.cpp
+++ b/src/effects/SkLightingImageFilter.cpp
@@ -1148,7 +1148,7 @@
interiorNormalBody.c_str(),
&interiorNormalName);
- code->appendf("\t\tvec2 coord = %s;\n", builder->fSampleCoords.c_str());
+ code->appendf("\t\tvec2 coord = %s;\n", builder->defaultTexCoordsName());
code->appendf("\t\tfloat m[9];\n");
const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp
index 846fd28..3145321 100644
--- a/src/effects/SkMagnifierImageFilter.cpp
+++ b/src/effects/SkMagnifierImageFilter.cpp
@@ -134,10 +134,10 @@
const char* samplerName) {
SkString* code = &state->fFSCode;
- code->appendf("\t\tvec2 coord = %s;\n", state->fSampleCoords.c_str());
+ code->appendf("\t\tvec2 coord = %s;\n", state->defaultTexCoordsName());
code->appendf("\t\tvec2 zoom_coord = %s + %s / %s;\n",
state->getUniformCStr(fOffsetVar),
- state->fSampleCoords.c_str(),
+ state->defaultTexCoordsName(),
state->getUniformCStr(fZoomVar));
code->appendf("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\n");
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
index 4bde3f0..eb121a7 100644
--- a/src/effects/SkMorphologyImageFilter.cpp
+++ b/src/effects/SkMorphologyImageFilter.cpp
@@ -334,7 +334,7 @@
const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
code->appendf("\t\tvec2 coord = %s - %d.0 * %s;\n",
- builder->fSampleCoords.c_str(), fRadius, imgInc);
+ builder->defaultTexCoordsName(), fRadius, imgInc);
code->appendf("\t\tfor (int i = 0; i < %d; i++) {\n", this->width());
code->appendf("\t\t\tvalue = %s(value, ", func);
builder->emitTextureLookup(samplerName, "coord");
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
index 6bcc1ba..891b1cd 100644
--- a/src/effects/gradients/SkGradientShader.cpp
+++ b/src/effects/gradients/SkGradientShader.cpp
@@ -702,10 +702,11 @@
const char* tName,
const char* outputColor,
const char* samplerName) {
- builder->fSampleCoords.printf("vec2(%s, %s)", tName,
- builder->getUniformVariable(fFSYUni).c_str());
- builder->fComplexCoord = true;
- builder->emitDefaultFetch(outputColor, samplerName);
+
+ builder->fFSCode.appendf("\tvec2 coord = vec2(%s, %s);\n",
+ tName,
+ builder->getUniformVariable(fFSYUni).c_str());
+ builder->emitTextureLookupAndModulate(outputColor, samplerName, "coord");
}
/////////////////////////////////////////////////////////////////////
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp
index 357d1db..78d2f24 100644
--- a/src/effects/gradients/SkLinearGradient.cpp
+++ b/src/effects/gradients/SkLinearGradient.cpp
@@ -552,7 +552,7 @@
const char* inputColor,
const char* samplerName) {
SkString t;
- t.printf("%s.x", builder->fSampleCoords.c_str());
+ t.printf("%s.x", builder->defaultTexCoordsName());
this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
}
diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp
index e11356a..317ab68 100644
--- a/src/effects/gradients/SkRadialGradient.cpp
+++ b/src/effects/gradients/SkRadialGradient.cpp
@@ -552,7 +552,7 @@
const char* inputColor,
const char* samplerName) {
SkString t;
- t.printf("length(%s.xy)", builder->fSampleCoords.c_str());
+ t.printf("length(%s.xy)", builder->defaultTexCoordsName());
this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
}
diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp
index 5b3e4b4..15547de 100644
--- a/src/effects/gradients/SkSweepGradient.cpp
+++ b/src/effects/gradients/SkSweepGradient.cpp
@@ -458,7 +458,7 @@
const char* samplerName) {
SkString t;
t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5",
- builder->fSampleCoords.c_str(), builder->fSampleCoords.c_str());
+ builder->defaultTexCoordsName(), builder->defaultTexCoordsName());
this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
}
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp
index cdea8d4..8b32ab6 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp
@@ -479,7 +479,7 @@
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
- if (builder->fVaryingDims == builder->fCoordDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
builder->addVarying(kFloat_GrSLType, "Conical2BCoeff",
&fVSVaryingName, &fFSVaryingName);
}
@@ -497,7 +497,7 @@
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
- if (builder->fVaryingDims == builder->fCoordDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
// r2Var = -2 * (r2Parm[2] * varCoord.x - r2Param[3] * r2Param[5])
code->appendf("\t%s = -2.0 * (%s * %s.x + %s * %s);\n",
fVSVaryingName, p2.c_str(),
@@ -535,14 +535,12 @@
// If we we're able to interpolate the linear component,
// bVar is the varying; otherwise compute it
SkString bVar;
- if (builder->fCoordDims == builder->fVaryingDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
bVar = fFSVaryingName;
- GrAssert(2 == builder->fVaryingDims);
} else {
- GrAssert(3 == builder->fVaryingDims);
bVar = "b";
code->appendf("\tfloat %s = -2.0 * (%s * %s.x + %s * %s);\n",
- bVar.c_str(), p2.c_str(), builder->fSampleCoords.c_str(),
+ bVar.c_str(), p2.c_str(), builder->defaultTexCoordsName(),
p3.c_str(), p5.c_str());
}
@@ -552,7 +550,7 @@
// c = (x^2)+(y^2) - params[4]
code->appendf("\tfloat %s = dot(%s, %s) - %s;\n", cName.c_str(),
- builder->fSampleCoords.c_str(), builder->fSampleCoords.c_str(),
+ builder->defaultTexCoordsName(), builder->defaultTexCoordsName(),
p4.c_str());
// Non-degenerate case (quadratic)
diff --git a/src/effects/gradients/SkTwoPointRadialGradient.cpp b/src/effects/gradients/SkTwoPointRadialGradient.cpp
index 8da6f83..693dc32 100644
--- a/src/effects/gradients/SkTwoPointRadialGradient.cpp
+++ b/src/effects/gradients/SkTwoPointRadialGradient.cpp
@@ -512,7 +512,7 @@
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
- if (builder->fVaryingDims == builder->fCoordDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
builder->addVarying(kFloat_GrSLType, "Radial2BCoeff",
&fVSVaryingName, &fFSVaryingName);
}
@@ -528,7 +528,7 @@
// For radial gradients without perspective we can pass the linear
// part of the quadratic as a varying.
- if (builder->fVaryingDims == builder->fCoordDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
// r2Var = 2 * (r2Parm[2] * varCoord.x - r2Param[3])
code->appendf("\t%s = 2.0 *(%s * %s.x - %s);\n",
fVSVaryingName, p2.c_str(),
@@ -561,22 +561,21 @@
// If we we're able to interpolate the linear component,
// bVar is the varying; otherwise compute it
SkString bVar;
- if (builder->fCoordDims == builder->fVaryingDims) {
+ if (!builder->defaultTextureMatrixIsPerspective()) {
bVar = fFSVaryingName;
- GrAssert(2 == builder->fVaryingDims);
} else {
- GrAssert(3 == builder->fVaryingDims);
bVar = "b";
//bVar.appendS32(stageNum);
code->appendf("\tfloat %s = 2.0 * (%s * %s.x - %s);\n",
bVar.c_str(), p2.c_str(),
- builder->fSampleCoords.c_str(), p3.c_str());
+ builder->defaultTexCoordsName(), p3.c_str());
}
// c = (x^2)+(y^2) - params[4]
code->appendf("\tfloat %s = dot(%s, %s) - %s;\n",
- cName.c_str(), builder->fSampleCoords.c_str(),
- builder->fSampleCoords.c_str(),
+ cName.c_str(),
+ builder->defaultTexCoordsName(),
+ builder->defaultTexCoordsName(),
p4.c_str());
// If we aren't degenerate, emit some extra code, and accept a slightly