diff options
author | 2013-03-07 17:06:57 +0000 | |
---|---|---|
committer | 2013-03-07 17:06:57 +0000 | |
commit | f910d3b23bcf590ee937628dbab8e39a98ee5860 (patch) | |
tree | f7c0ac02776334b23bf2765d1885dcd45ba398c0 /src/gpu/effects/GrConfigConversionEffect.cpp | |
parent | 327b9b205a4f11d91778c7083f0117d86fb7e780 (diff) |
Make GrGLEffects use an interface to append their code.
A small step towards encapsulating GrGLShaderBuilder.
Review URL: https://codereview.chromium.org/12547012
git-svn-id: http://skia.googlecode.com/svn/trunk@8018 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu/effects/GrConfigConversionEffect.cpp')
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp index 1dd51c888b..f2c5d0915a 100644 --- a/src/gpu/effects/GrConfigConversionEffect.cpp +++ b/src/gpu/effects/GrConfigConversionEffect.cpp @@ -31,31 +31,34 @@ public: const TextureSamplerArray& samplers) SK_OVERRIDE { const char* coords; GrSLType coordsType = fEffectMatrix.emitCode(builder, key, vertexCoords, &coords); - builder->fFSCode.appendf("\t\t%s = ", outputColor); - builder->appendTextureLookup(&builder->fFSCode, samplers[0], coords, coordsType); - builder->fFSCode.append(";\n"); + builder->fsCodeAppendf("\t\t%s = ", outputColor); + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, + samplers[0], + coords, + coordsType); + builder->fsCodeAppend(";\n"); if (GrConfigConversionEffect::kNone_PMConversion == fPMConversion) { GrAssert(fSwapRedAndBlue); - builder->fFSCode.appendf("\t%s = %s.bgra;\n", outputColor, outputColor); + builder->fsCodeAppendf("\t%s = %s.bgra;\n", outputColor, outputColor); } else { const char* swiz = fSwapRedAndBlue ? "bgr" : "rgb"; switch (fPMConversion) { case GrConfigConversionEffect::kMulByAlpha_RoundUp_PMConversion: - builder->fFSCode.appendf( + builder->fsCodeAppendf( "\t\t%s = vec4(ceil(%s.%s * %s.a * 255.0) / 255.0, %s.a);\n", outputColor, outputColor, swiz, outputColor, outputColor); break; case GrConfigConversionEffect::kMulByAlpha_RoundDown_PMConversion: - builder->fFSCode.appendf( + builder->fsCodeAppendf( "\t\t%s = vec4(floor(%s.%s * %s.a * 255.0) / 255.0, %s.a);\n", outputColor, outputColor, swiz, outputColor, outputColor); break; case GrConfigConversionEffect::kDivByAlpha_RoundUp_PMConversion: - builder->fFSCode.appendf("\t\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(ceil(%s.%s / %s.a * 255.0) / 255.0, %s.a);\n", + builder->fsCodeAppendf("\t\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(ceil(%s.%s / %s.a * 255.0) / 255.0, %s.a);\n", outputColor, outputColor, outputColor, swiz, outputColor, outputColor); break; case GrConfigConversionEffect::kDivByAlpha_RoundDown_PMConversion: - builder->fFSCode.appendf("\t\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(floor(%s.%s / %s.a * 255.0) / 255.0, %s.a);\n", + builder->fsCodeAppendf("\t\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(floor(%s.%s / %s.a * 255.0) / 255.0, %s.a);\n", outputColor, outputColor, outputColor, swiz, outputColor, outputColor); break; default: @@ -63,7 +66,9 @@ public: break; } } - GrGLSLMulVarBy4f(&builder->fFSCode, 2, outputColor, inputColor); + SkString modulate; + GrGLSLMulVarBy4f(&modulate, 2, outputColor, inputColor); + builder->fsCodeAppend(modulate.c_str()); } void setData(const GrGLUniformManager& uman, const GrEffectStage& stage) { |