diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-11-07 09:23:38 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-07 14:55:18 +0000 |
commit | 14efcbf3497e6a280cc141e6dec179b4ad4565af (patch) | |
tree | 7814950d3484348a7d2f8ff23ed1c1d604c5e79a /src/effects/SkLumaColorFilter.cpp | |
parent | 82a62d2d4ef55e53730a4f194a82d4e5da0c4a64 (diff) |
converted LumaColorFilterEffect to sksl
Bug: skia:
Change-Id: I208984ec9ad357249ee1b2fe28477f1450b4b69d
Reviewed-on: https://skia-review.googlesource.com/67848
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/effects/SkLumaColorFilter.cpp')
-rw-r--r-- | src/effects/SkLumaColorFilter.cpp | 63 |
1 files changed, 2 insertions, 61 deletions
diff --git a/src/effects/SkLumaColorFilter.cpp b/src/effects/SkLumaColorFilter.cpp index 22c0285a1e..6b7564b51a 100644 --- a/src/effects/SkLumaColorFilter.cpp +++ b/src/effects/SkLumaColorFilter.cpp @@ -13,6 +13,7 @@ #if SK_SUPPORT_GPU #include "GrContext.h" +#include "effects/GrLumaColorFilterEffect.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" #endif @@ -43,68 +44,8 @@ void SkLumaColorFilter::toString(SkString* str) const { #endif #if SK_SUPPORT_GPU -class LumaColorFilterEffect : public GrFragmentProcessor { -public: - static std::unique_ptr<GrFragmentProcessor> Make() { - return std::unique_ptr<GrFragmentProcessor>(new LumaColorFilterEffect); - } - - const char* name() const override { return "Luminance-to-Alpha"; } - - std::unique_ptr<GrFragmentProcessor> clone() const override { return Make(); } - -private: - class GLSLProcessor : public GrGLSLFragmentProcessor { - public: - static void GenKey(const GrProcessor&, const GrShaderCaps&, GrProcessorKeyBuilder*) {} - - void emitCode(EmitArgs& args) override { - if (nullptr == args.fInputColor) { - args.fInputColor = "half4(1)"; - } - - GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; - fragBuilder->codeAppendf("\thalf luma = dot(half3(%f, %f, %f), %s.rgb);\n", - SK_ITU_BT709_LUM_COEFF_R, - SK_ITU_BT709_LUM_COEFF_G, - SK_ITU_BT709_LUM_COEFF_B, - args.fInputColor); - fragBuilder->codeAppendf("\t%s = half4(0, 0, 0, luma);\n", - args.fOutputColor); - - } - - private: - typedef GrGLSLFragmentProcessor INHERITED; - }; - - LumaColorFilterEffect() - : INHERITED(kLumaColorFilterEffect_ClassID, kConstantOutputForConstantInput_OptimizationFlag) { - } - - GrGLSLFragmentProcessor* onCreateGLSLInstance() const override { - return new GLSLProcessor; - } - - virtual void onGetGLSLProcessorKey(const GrShaderCaps& caps, - GrProcessorKeyBuilder* b) const override { - GLSLProcessor::GenKey(*this, caps, b); - } - - bool onIsEqual(const GrFragmentProcessor&) const override { return true; } - - GrColor4f constantOutputForConstantInput(GrColor4f input) const override { - float luma = SK_ITU_BT709_LUM_COEFF_R * input.fRGBA[0] + - SK_ITU_BT709_LUM_COEFF_G * input.fRGBA[1] + - SK_ITU_BT709_LUM_COEFF_B * input.fRGBA[2]; - return GrColor4f(0, 0, 0, luma); - } - - typedef GrFragmentProcessor INHERITED; -}; - std::unique_ptr<GrFragmentProcessor> SkLumaColorFilter::asFragmentProcessor( GrContext*, const GrColorSpaceInfo&) const { - return LumaColorFilterEffect::Make(); + return GrLumaColorFilterEffect::Make(); } #endif |