diff options
author | 2012-10-29 12:47:51 +0000 | |
---|---|---|
committer | 2012-10-29 12:47:51 +0000 | |
commit | 47d7a8885b02478fa41069f14bba7ffbe5475d87 (patch) | |
tree | bc0a5b21c328ca3add0a9e3b941872168522c398 /src/effects/SkMagnifierImageFilter.cpp | |
parent | f78df33efc72167f94da1b0476c9a86ba18a5f2c (diff) |
Make GrGLConvolutionEffect, GrGLMorphologyEffect, and GrGLMagnifierEffect derive directly from GrGLEffect.
R=robertphillips@google.com
Review URL: https://codereview.appspot.com/6786052
git-svn-id: http://skia.googlecode.com/svn/branches/gpu_dev@6164 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects/SkMagnifierImageFilter.cpp')
-rw-r--r-- | src/effects/SkMagnifierImageFilter.cpp | 59 |
1 files changed, 27 insertions, 32 deletions
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp index 61a31aef8a..524a4bb662 100644 --- a/src/effects/SkMagnifierImageFilter.cpp +++ b/src/effects/SkMagnifierImageFilter.cpp @@ -72,18 +72,18 @@ private: // For brevity typedef GrGLUniformManager::UniformHandle UniformHandle; -class GrGLMagnifierEffect : public GrGLLegacyEffect { +class GrGLMagnifierEffect : public GrGLEffect { public: GrGLMagnifierEffect(const GrBackendEffectFactory& factory, const GrEffect& effect); - virtual void setupVariables(GrGLShaderBuilder* state) SK_OVERRIDE; - virtual void emitVS(GrGLShaderBuilder* state, - const char* vertexCoords) SK_OVERRIDE; - virtual void emitFS(GrGLShaderBuilder* state, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray&) SK_OVERRIDE; + virtual void emitCode(GrGLShaderBuilder*, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray&) SK_OVERRIDE; virtual void setData(const GrGLUniformManager& uman, const GrEffectStage& stage) SK_OVERRIDE; @@ -95,7 +95,7 @@ private: UniformHandle fZoomVar; UniformHandle fInsetVar; - typedef GrGLLegacyEffect INHERITED; + typedef GrGLEffect INHERITED; }; GrGLMagnifierEffect::GrGLMagnifierEffect(const GrBackendEffectFactory& factory, @@ -106,41 +106,37 @@ GrGLMagnifierEffect::GrGLMagnifierEffect(const GrBackendEffectFactory& factory, , fInsetVar(GrGLUniformManager::kInvalidUniformHandle) { } -void GrGLMagnifierEffect::setupVariables(GrGLShaderBuilder* state) { - fOffsetVar = state->addUniform( +void GrGLMagnifierEffect::emitCode(GrGLShaderBuilder* builder, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray& samplers) { + fOffsetVar = builder->addUniform( GrGLShaderBuilder::kFragment_ShaderType | GrGLShaderBuilder::kVertex_ShaderType, kVec2f_GrSLType, "uOffset"); - fZoomVar = state->addUniform( + fZoomVar = builder->addUniform( GrGLShaderBuilder::kFragment_ShaderType | GrGLShaderBuilder::kVertex_ShaderType, kVec2f_GrSLType, "uZoom"); - fInsetVar = state->addUniform( + fInsetVar = builder->addUniform( GrGLShaderBuilder::kFragment_ShaderType | GrGLShaderBuilder::kVertex_ShaderType, kVec2f_GrSLType, "uInset"); -} - -void GrGLMagnifierEffect::emitVS(GrGLShaderBuilder* state, - const char* vertexCoords) { -} -void GrGLMagnifierEffect::emitFS(GrGLShaderBuilder* state, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray& samplers) { - SkString* code = &state->fFSCode; + SkString* code = &builder->fFSCode; - code->appendf("\t\tvec2 coord = %s;\n", state->defaultTexCoordsName()); + code->appendf("\t\tvec2 coord = %s;\n", builder->defaultTexCoordsName()); code->appendf("\t\tvec2 zoom_coord = %s + %s / %s;\n", - state->getUniformCStr(fOffsetVar), - state->defaultTexCoordsName(), - state->getUniformCStr(fZoomVar)); + builder->getUniformCStr(fOffsetVar), + builder->defaultTexCoordsName(), + builder->getUniformCStr(fZoomVar)); code->appendf("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\n"); - code->appendf( - "\t\tdelta = delta / %s;\n", state->getUniformCStr(fInsetVar)); + code->appendf("\t\tdelta = delta / %s;\n", builder->getUniformCStr(fInsetVar)); code->appendf("\t\tfloat weight = 0.0;\n"); code->appendf("\t\tif (delta.s < 2.0 && delta.t < 2.0) {\n"); @@ -150,13 +146,12 @@ void GrGLMagnifierEffect::emitFS(GrGLShaderBuilder* state, code->appendf("\t\t\tweight = min(dist * dist, 1.0);\n"); code->appendf("\t\t} else {\n"); code->appendf("\t\t\tvec2 delta_squared = delta * delta;\n"); - code->appendf( - "\t\t\tweight = min(min(delta_squared.s, delta_squared.y), 1.0);\n"); + code->appendf("\t\t\tweight = min(min(delta_squared.s, delta_squared.y), 1.0);\n"); code->appendf("\t\t}\n"); code->appendf("\t\tvec2 mix_coord = mix(coord, zoom_coord, weight);\n"); code->appendf("\t\tvec4 output_color = "); - state->appendTextureLookup(code, samplers[0], "mix_coord"); + builder->appendTextureLookup(code, samplers[0], "mix_coord"); code->append(";\n"); code->appendf("\t\t%s = output_color;", outputColor); |