Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Unified Diff: src/effects/SkPerlinNoiseShader.cpp

Issue 23018003: Rename GrGLUniformManager to GrGLUniform and ref GrGLUniforms directly Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/effects/SkMorphologyImageFilter.cpp ('k') | src/effects/SkTableColorFilter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/effects/SkPerlinNoiseShader.cpp
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp
index 1d26920c501db288e86babd562c02f34616630c5..428d88a00e2d3fbe380dacd48bd57859263c7929 100644
--- a/src/effects/SkPerlinNoiseShader.cpp
+++ b/src/effects/SkPerlinNoiseShader.cpp
@@ -506,15 +506,15 @@ public:
static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&);
- virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
+ virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE;
protected:
SkPerlinNoiseShader::Type fType;
bool fStitchTiles;
int fNumOctaves;
- GrGLUniformManager::UniformHandle fBaseFrequencyUni;
- GrGLUniformManager::UniformHandle fAlphaUni;
- GrGLUniformManager::UniformHandle fInvMatrixUni;
+ GrGLUniform* fBaseFrequencyUni;
+ GrGLUniform* fAlphaUni;
+ GrGLUniform* fInvMatrixUni;
GrGLEffectMatrix fEffectMatrix;
private:
@@ -535,10 +535,10 @@ public:
const char* inputColor,
const TextureSamplerArray&) SK_OVERRIDE;
- virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
+ virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE;
private:
- GrGLUniformManager::UniformHandle fStitchDataUni;
+ GrGLUniform* fStitchDataUni;
typedef GrGLNoise INHERITED;
};
@@ -559,10 +559,10 @@ public:
const char* inputColor,
const TextureSamplerArray&) SK_OVERRIDE;
- virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE;
+ virtual void setData(const GrGLContext&, const GrDrawEffect&) SK_OVERRIDE;
private:
- GrGLUniformManager::UniformHandle fSeedUni;
+ GrGLUniform* fSeedUni;
typedef GrGLNoise INHERITED;
};
@@ -752,18 +752,21 @@ void GrGLSimplexNoise::emitCode(GrGLShaderBuilder* builder,
const char* vCoords;
fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &vCoords);
- fSeedUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kFloat_GrSLType, "seed");
- const char* seedUni = builder->getUniformCStr(fSeedUni);
- fInvMatrixUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kMat33f_GrSLType, "invMatrix");
- const char* invMatrixUni = builder->getUniformCStr(fInvMatrixUni);
- fBaseFrequencyUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kVec2f_GrSLType, "baseFrequency");
- const char* baseFrequencyUni = builder->getUniformCStr(fBaseFrequencyUni);
- fAlphaUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kFloat_GrSLType, "alpha");
- const char* alphaUni = builder->getUniformCStr(fAlphaUni);
+ GrGLShaderBuilder::Uniform* seedUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kFloat_GrSLType, "seed");
+ fSeedUni = seedUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* invMatrixUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kMat33f_GrSLType, "invMatrix");
+ fInvMatrixUni = invMatrixUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* baseFrequencyUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kVec2f_GrSLType, "baseFrequency");
+ fBaseFrequencyUni = baseFrequencyUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* alphaUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kFloat_GrSLType, "alpha");
+ fAlphaUni = alphaUni->glUniform();
// Add vec3 modulo 289 function
static const GrGLShaderVar gVec3Args[] = {
@@ -904,15 +907,15 @@ void GrGLSimplexNoise::emitCode(GrGLShaderBuilder* builder,
// There are rounding errors if the floor operation is not performed here
builder->fsCodeAppendf(
"\t\tvec3 %s = vec3(floor((%s*vec3(%s, 1.0)).xy) * vec2(0.66) * %s, 0.0);\n",
- noiseVecIni, invMatrixUni, vCoords, baseFrequencyUni);
+ noiseVecIni, invMatrixUni->c_str(), vCoords, baseFrequencyUni->c_str());
// Perturb the texcoords with three components of noise
builder->fsCodeAppendf("\t\t%s += 0.1 * vec3(%s(%s + vec3( 0.0, 0.0, %s)),"
"%s(%s + vec3( 43.0, 17.0, %s)),"
"%s(%s + vec3(-17.0, -43.0, %s)));\n",
- noiseVecIni, noiseFuncName.c_str(), noiseVecIni, seedUni,
- noiseFuncName.c_str(), noiseVecIni, seedUni,
- noiseFuncName.c_str(), noiseVecIni, seedUni);
+ noiseVecIni, noiseFuncName.c_str(), noiseVecIni, seedUni->c_str(),
+ noiseFuncName.c_str(), noiseVecIni, seedUni->c_str(),
+ noiseFuncName.c_str(), noiseVecIni, seedUni->c_str());
builder->fsCodeAppendf("\t\t%s = vec4(0.0);\n", outputColor);
@@ -928,7 +931,7 @@ void GrGLSimplexNoise::emitCode(GrGLShaderBuilder* builder,
builder->fsCodeAppendf(
"\t\t\t\t%s[channel] += %s.x * %s(%s * %s.yyy - vec3(%s[%s], %s[%s], %s * %s.z));\n",
outputColor, factors, noiseFuncName.c_str(), noiseVecIni, factors, xOffsets, channel,
- yOffsets, channel, seedUni, factors);
+ yOffsets, channel, seedUni->c_str(), factors);
builder->fsCodeAppend("\t\t\t}\n"); // end of the for loop on channels
@@ -947,7 +950,7 @@ void GrGLSimplexNoise::emitCode(GrGLShaderBuilder* builder,
outputColor, outputColor, sum);
}
- builder->fsCodeAppendf("\t\t%s.a *= %s;\n", outputColor, alphaUni);
+ builder->fsCodeAppendf("\t\t%s.a *= %s;\n", outputColor, alphaUni->c_str());
// Clamp values
builder->fsCodeAppendf("\t\t%s = clamp(%s, 0.0, 1.0);\n", outputColor, outputColor);
@@ -968,21 +971,24 @@ void GrGLPerlinNoise::emitCode(GrGLShaderBuilder* builder,
const char* vCoords;
fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &vCoords);
- fInvMatrixUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kMat33f_GrSLType, "invMatrix");
- const char* invMatrixUni = builder->getUniformCStr(fInvMatrixUni);
- fBaseFrequencyUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kVec2f_GrSLType, "baseFrequency");
- const char* baseFrequencyUni = builder->getUniformCStr(fBaseFrequencyUni);
- fAlphaUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kFloat_GrSLType, "alpha");
- const char* alphaUni = builder->getUniformCStr(fAlphaUni);
-
- const char* stitchDataUni = NULL;
+ GrGLShaderBuilder::Uniform* invMatrixUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kMat33f_GrSLType, "invMatrix");
+ fInvMatrixUni = invMatrixUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* baseFrequencyUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kVec2f_GrSLType,
+ "baseFrequency");
+ fBaseFrequencyUni = baseFrequencyUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* alphaUni =
+ builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kFloat_GrSLType, "alpha");
+ fAlphaUni = alphaUni->glUniform();
+
+ GrGLShaderBuilder::Uniform* stitchDataUni = NULL;
if (fStitchTiles) {
- fStitchDataUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
- kVec2f_GrSLType, "stitchData");
- stitchDataUni = builder->getUniformCStr(fStitchDataUni);
+ stitchDataUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
+ kVec2f_GrSLType, "stitchData");
+ fStitchDataUni = stitchDataUni->glUniform();
}
// There are 4 lines, so the center of each line is 1/8, 3/8, 5/8 and 7/8
@@ -1148,14 +1154,14 @@ void GrGLPerlinNoise::emitCode(GrGLShaderBuilder* builder,
// There are rounding errors if the floor operation is not performed here
builder->fsCodeAppendf("\n\t\tvec2 %s = floor((%s * vec3(%s, 1.0)).xy) * %s;",
- noiseVec, invMatrixUni, vCoords, baseFrequencyUni);
+ noiseVec, invMatrixUni->c_str(), vCoords, baseFrequencyUni->c_str());
// Clear the color accumulator
builder->fsCodeAppendf("\n\t\t%s = vec4(0.0);", outputColor);
if (fStitchTiles) {
// Set up TurbulenceInitial stitch values.
- builder->fsCodeAppendf("\n\t\tvec2 %s = %s;", stitchData, stitchDataUni);
+ builder->fsCodeAppendf("\n\t\tvec2 %s = %s;", stitchData, stitchDataUni->c_str());
}
builder->fsCodeAppendf("\n\t\tfloat %s = 1.0;", ratio);
@@ -1203,7 +1209,7 @@ void GrGLPerlinNoise::emitCode(GrGLShaderBuilder* builder,
builder->fsCodeAppendf("\n\t\t%s = %s * vec4(0.5) + vec4(0.5);", outputColor, outputColor);
}
- builder->fsCodeAppendf("\n\t\t%s.a *= %s;", outputColor, alphaUni);
+ builder->fsCodeAppendf("\n\t\t%s.a *= %s;", outputColor, alphaUni->c_str());
// Clamp values
builder->fsCodeAppendf("\n\t\t%s = clamp(%s, 0.0, 1.0);", outputColor, outputColor);
@@ -1252,12 +1258,12 @@ GrGLEffect::EffectKey GrGLNoise::GenKey(const GrDrawEffect& drawEffect, const Gr
drawEffect.castEffect<GrPerlinNoiseEffect>().coordsType(), NULL);
}
-void GrGLNoise::setData(const GrGLUniformManager& uman, const GrDrawEffect& drawEffect) {
+void GrGLNoise::setData(const GrGLContext& context, const GrDrawEffect& drawEffect) {
const GrPerlinNoiseEffect& turbulence = drawEffect.castEffect<GrPerlinNoiseEffect>();
const SkVector& baseFrequency = turbulence.baseFrequency();
- uman.set2f(fBaseFrequencyUni, baseFrequency.fX, baseFrequency.fY);
- uman.set1f(fAlphaUni, SkScalarDiv(SkIntToScalar(turbulence.alpha()), SkIntToScalar(255)));
+ fBaseFrequencyUni->set2f(context, baseFrequency.fX, baseFrequency.fY);
+ fAlphaUni->set1f(context, SkScalarDiv(SkIntToScalar(turbulence.alpha()), SkIntToScalar(255)));
SkMatrix m = turbulence.matrix();
SkMatrix invM;
@@ -1266,30 +1272,30 @@ void GrGLNoise::setData(const GrGLUniformManager& uman, const GrDrawEffect& draw
} else {
invM.postConcat(invM); // Square the matrix
}
- uman.setSkMatrix(fInvMatrixUni, invM);
+ fInvMatrixUni->setSkMatrix(context, invM);
// This (1,1) translation is due to WebKit's 1 based coordinates for the noise
// (as opposed to 0 based, usually). The same adjustment is in the shadeSpan() functions.
m.postTranslate(SK_Scalar1, SK_Scalar1);
- fEffectMatrix.setData(uman, m, drawEffect, NULL);
+ fEffectMatrix.setData(context, m, drawEffect, NULL);
}
-void GrGLPerlinNoise::setData(const GrGLUniformManager& uman, const GrDrawEffect& drawEffect) {
- INHERITED::setData(uman, drawEffect);
+void GrGLPerlinNoise::setData(const GrGLContext& context, const GrDrawEffect& drawEffect) {
+ INHERITED::setData(context, drawEffect);
const GrPerlinNoiseEffect& turbulence = drawEffect.castEffect<GrPerlinNoiseEffect>();
if (turbulence.stitchTiles()) {
const SkPerlinNoiseShader::StitchData& stitchData = turbulence.stitchData();
- uman.set2f(fStitchDataUni, SkIntToScalar(stitchData.fWidth),
+ fStitchDataUni->set2f(context, SkIntToScalar(stitchData.fWidth),
SkIntToScalar(stitchData.fHeight));
}
}
-void GrGLSimplexNoise::setData(const GrGLUniformManager& uman, const GrDrawEffect& drawEffect) {
- INHERITED::setData(uman, drawEffect);
+void GrGLSimplexNoise::setData(const GrGLContext& context, const GrDrawEffect& drawEffect) {
+ INHERITED::setData(context, drawEffect);
const GrSimplexNoiseEffect& turbulence = drawEffect.castEffect<GrSimplexNoiseEffect>();
- uman.set1f(fSeedUni, turbulence.seed());
+ fSeedUni->set1f(context, turbulence.seed());
}
/////////////////////////////////////////////////////////////////////
« no previous file with comments | « src/effects/SkMorphologyImageFilter.cpp ('k') | src/effects/SkTableColorFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698