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

Side by Side Diff: src/effects/SkBlurMaskFilter.cpp

Issue 1709153002: Add more specialized fragment builders (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make MSVC happy Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « src/effects/SkAvoidXfermode.cpp ('k') | src/effects/SkColorCubeFilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkBlurMaskFilter.h" 8 #include "SkBlurMaskFilter.h"
9 #include "SkBlurMask.h" 9 #include "SkBlurMask.h"
10 #include "SkGpuBlurUtils.h" 10 #include "SkGpuBlurUtils.h"
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 683
684 private: 684 private:
685 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle; 685 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle;
686 686
687 UniformHandle fProxyRectUniform; 687 UniformHandle fProxyRectUniform;
688 UniformHandle fProfileSizeUniform; 688 UniformHandle fProfileSizeUniform;
689 689
690 typedef GrGLSLFragmentProcessor INHERITED; 690 typedef GrGLSLFragmentProcessor INHERITED;
691 }; 691 };
692 692
693 void OutputRectBlurProfileLookup(GrGLSLFragmentBuilder* fragBuilder, 693 void OutputRectBlurProfileLookup(GrGLSLFPFragmentBuilder* fragBuilder,
694 const GrGLSLTextureSampler& sampler, 694 const GrGLSLTextureSampler& sampler,
695 const char *output, 695 const char *output,
696 const char *profileSize, const char *loc, 696 const char *profileSize, const char *loc,
697 const char *blurred_width, 697 const char *blurred_width,
698 const char *sharp_width) { 698 const char *sharp_width) {
699 fragBuilder->codeAppendf("float %s;", output); 699 fragBuilder->codeAppendf("float %s;", output);
700 fragBuilder->codeAppendf("{"); 700 fragBuilder->codeAppendf("{");
701 fragBuilder->codeAppendf("float coord = ((abs(%s - 0.5 * %s) - 0.5 * %s)) / %s;", 701 fragBuilder->codeAppendf("float coord = ((abs(%s - 0.5 * %s) - 0.5 * %s)) / %s;",
702 loc, blurred_width, sharp_width, profileSize); 702 loc, blurred_width, sharp_width, profileSize);
703 fragBuilder->codeAppendf("%s = ", output); 703 fragBuilder->codeAppendf("%s = ", output);
(...skipping 24 matching lines...) Expand all
728 kVec4f_GrSLType, 728 kVec4f_GrSLType,
729 rbe.precision(), 729 rbe.precision(),
730 "proxyRect", 730 "proxyRect",
731 &rectName); 731 &rectName);
732 fProfileSizeUniform = uniformHandler->addUniform(kFragment_GrShaderFlag, 732 fProfileSizeUniform = uniformHandler->addUniform(kFragment_GrShaderFlag,
733 kFloat_GrSLType, 733 kFloat_GrSLType,
734 kDefault_GrSLPrecision, 734 kDefault_GrSLPrecision,
735 "profileSize", 735 "profileSize",
736 &profileSizeName); 736 &profileSizeName);
737 737
738 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; 738 GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
739 const char *fragmentPos = fragBuilder->fragmentPosition(); 739 const char *fragmentPos = fragBuilder->fragmentPosition();
740 740
741 if (args.fInputColor) { 741 if (args.fInputColor) {
742 fragBuilder->codeAppendf("vec4 src=%s;", args.fInputColor); 742 fragBuilder->codeAppendf("vec4 src=%s;", args.fInputColor);
743 } else { 743 } else {
744 fragBuilder->codeAppendf("vec4 src=vec4(1);"); 744 fragBuilder->codeAppendf("vec4 src=vec4(1);");
745 } 745 }
746 746
747 fragBuilder->codeAppendf("%s vec2 translatedPos = %s.xy - %s.xy;", precision String, fragmentPos, 747 fragBuilder->codeAppendf("%s vec2 translatedPos = %s.xy - %s.xy;", precision String, fragmentPos,
748 rectName); 748 rectName);
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 kFloat_GrSLType, 1075 kFloat_GrSLType,
1076 kDefault_GrSLPrecision, 1076 kDefault_GrSLPrecision,
1077 "cornerRadius", 1077 "cornerRadius",
1078 &cornerRadiusName); 1078 &cornerRadiusName);
1079 fBlurRadiusUniform = uniformHandler->addUniform(kFragment_GrShaderFlag, 1079 fBlurRadiusUniform = uniformHandler->addUniform(kFragment_GrShaderFlag,
1080 kFloat_GrSLType, 1080 kFloat_GrSLType,
1081 kDefault_GrSLPrecision, 1081 kDefault_GrSLPrecision,
1082 "blurRadius", 1082 "blurRadius",
1083 &blurRadiusName); 1083 &blurRadiusName);
1084 1084
1085 GrGLSLFragmentBuilder* fragBuilder = args.fFragBuilder; 1085 GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
1086 const char* fragmentPos = fragBuilder->fragmentPosition(); 1086 const char* fragmentPos = fragBuilder->fragmentPosition();
1087 1087
1088 // warp the fragment position to the appropriate part of the 9patch blur tex ture 1088 // warp the fragment position to the appropriate part of the 9patch blur tex ture
1089 1089
1090 fragBuilder->codeAppendf("vec2 rectCenter = (%s.xy + %s.zw)/2.0;", rectName, rectName); 1090 fragBuilder->codeAppendf("vec2 rectCenter = (%s.xy + %s.zw)/2.0;", rectName, rectName);
1091 fragBuilder->codeAppendf("vec2 translatedFragPos = %s.xy - %s.xy;", fragment Pos, rectName); 1091 fragBuilder->codeAppendf("vec2 translatedFragPos = %s.xy - %s.xy;", fragment Pos, rectName);
1092 fragBuilder->codeAppendf("float threshold = %s + 2.0*%s;", cornerRadiusName, blurRadiusName); 1092 fragBuilder->codeAppendf("float threshold = %s + 2.0*%s;", cornerRadiusName, blurRadiusName);
1093 fragBuilder->codeAppendf("vec2 middle = %s.zw - %s.xy - 2.0*threshold;", rec tName, rectName); 1093 fragBuilder->codeAppendf("vec2 middle = %s.zw - %s.xy - 2.0*threshold;", rec tName, rectName);
1094 1094
1095 fragBuilder->codeAppendf( 1095 fragBuilder->codeAppendf(
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1304 } else { 1304 } else {
1305 str->append("None"); 1305 str->append("None");
1306 } 1306 }
1307 str->append("))"); 1307 str->append("))");
1308 } 1308 }
1309 #endif 1309 #endif
1310 1310
1311 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) 1311 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter)
1312 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) 1312 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl)
1313 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 1313 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW
« no previous file with comments | « src/effects/SkAvoidXfermode.cpp ('k') | src/effects/SkColorCubeFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698