Home | History | Annotate | Download | only in core

Lines Matching refs:fsBuilder

831             GrGLFragmentShaderBuilder* fsBuilder = builder->getFragmentShaderBuilder();
835 fsBuilder->codeAppendf("\t\tvec4 %s = ", dstColor);
836 fsBuilder->appendTextureLookup(samplers[0], coords[0].c_str(), coords[0].getType());
837 fsBuilder->codeAppendf(";\n");
839 dstColor = fsBuilder->dstColor();
845 fsBuilder->codeAppendf("\t\tconst vec4 ones = vec4(1);\n");
848 fsBuilder->codeAppendf("\t\t// SkXfermode::Mode: %s\n", SkXfermode::ModeName(mode));
851 fsBuilder->codeAppendf("\t\t%s.a = %s.a + (1.0 - %s.a) * %s.a;\n",
857 HardLight(fsBuilder, outputColor, dstColor, inputColor);
860 fsBuilder->codeAppendf("\t\t%s.rgb = min((1.0 - %s.a) * %s.rgb + %s.rgb, "
867 fsBuilder->codeAppendf("\t\t%s.rgb = max((1.0 - %s.a) * %s.rgb + %s.rgb, "
874 ColorDodgeComponent(fsBuilder, outputColor, inputColor, dstColor, 'r');
875 ColorDodgeComponent(fsBuilder, outputColor, inputColor, dstColor, 'g');
876 ColorDodgeComponent(fsBuilder, outputColor, inputColor, dstColor, 'b');
879 ColorBurnComponent(fsBuilder, outputColor, inputColor, dstColor, 'r');
880 ColorBurnComponent(fsBuilder, outputColor, inputColor, dstColor, 'g');
881 ColorBurnComponent(fsBuilder, outputColor, inputColor, dstColor, 'b');
884 HardLight(fsBuilder, outputColor, inputColor, dstColor);
887 fsBuilder
888 fsBuilder->codeAppendf("\t\t\t%s.rgba = %s;\n", outputColor, inputColor);
889 fsBuilder->codeAppendf("\t\t} else {\n");
890 SoftLightComponentPosDstAlpha(fsBuilder, outputColor, inputColor, dstColor, 'r');
891 SoftLightComponentPosDstAlpha(fsBuilder, outputColor, inputColor, dstColor, 'g');
892 SoftLightComponentPosDstAlpha(fsBuilder, outputColor, inputColor, dstColor, 'b');
893 fsBuilder->codeAppendf("\t\t}\n");
896 fsBuilder->codeAppendf("\t\t%s.rgb = %s.rgb + %s.rgb -"
902 fsBuilder->codeAppendf("\t\t%s.rgb = %s.rgb + %s.rgb - "
907 fsBuilder->codeAppendf("\t\t%s.rgb = (1.0 - %s.a) * %s.rgb + "
916 AddSatFunction(fsBuilder, &setSat);
917 AddLumFunction(fsBuilder, &setLum);
918 fsBuilder->codeAppendf("\t\tvec4 dstSrcAlpha = %s * %s.a;\n",
920 fsBuilder->codeAppendf("\t\t%s.rgb = %s(%s(%s.rgb * %s.a, dstSrcAlpha.rgb), dstSrcAlpha.a, dstSrcAlpha.rgb);\n",
923 fsBuilder->codeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb + (1.0 - %s.a) * %s.rgb;\n",
930 AddSatFunction(fsBuilder, &setSat);
931 AddLumFunction(fsBuilder, &setLum);
932 fsBuilder->codeAppendf("\t\tvec4 dstSrcAlpha = %s * %s.a;\n",
934 fsBuilder->codeAppendf("\t\t%s.rgb = %s(%s(dstSrcAlpha.rgb, %s.rgb * %s.a), dstSrcAlpha.a, dstSrcAlpha.rgb);\n",
937 fsBuilder->codeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb + (1.0 - %s.a) * %s.rgb;\n",
944 AddLumFunction(fsBuilder, &setLum);
945 fsBuilder->codeAppendf("\t\tvec4 srcDstAlpha = %s * %s.a;\n",
947 fsBuilder->codeAppendf("\t\t%s.rgb = %s(srcDstAlpha.rgb, srcDstAlpha.a, %s.rgb * %s.a);\n",
949 fsBuilder->codeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb + (1.0 - %s.a) * %s.rgb;\n",
956 AddLumFunction(fsBuilder, &setLum);
957 fsBuilder->codeAppendf("\t\tvec4 srcDstAlpha = %s * %s.a;\n",
959 fsBuilder->codeAppendf("\t\t%s.rgb = %s(%s.rgb * %s.a, srcDstAlpha.a, srcDstAlpha.rgb);\n",
961 fsBuilder->codeAppendf("\t\t%s.rgb += (1.0 - %s.a) * %s.rgb + (1.0 - %s.a) * %s.rgb;\n",
981 static void HardLight(GrGLFragmentShaderBuilder* fsBuilder,
988 fsBuilder->codeAppendf("\t\tif (2.0 * %s.%c <= %s.a) {\n", src, component, src);
989 fsBuilder->codeAppendf("\t\t\t%s.%c = 2.0 * %s.%c * %s.%c;\n", final, component, src, component, dst, component);
990 fsBuilder->codeAppend("\t\t} else {\n");
991 fsBuilder->codeAppendf("\t\t\t%s.%c = %s.a * %s.a - 2.0 * (%s.a - %s.%c) * (%s.a - %s.%c);\n",
993 fsBuilder->codeAppend("\t\t}\n");
995 fsBuilder->codeAppendf("\t\t%s.rgb += %s.rgb * (1.0 - %s.a) + %s.rgb * (1.0 - %s.a);\n",
1000 static void ColorDodgeComponent(GrGLFragmentShaderBuilder* fsBuilder,
1005 fsBuilder->codeAppendf("\t\tif (0.0 == %s.%c) {\n", dst, component);
1006 fsBuilder->codeAppendf("\t\t\t%s.%c = %s.%c * (1.0 - %s.a);\n",
1008 fsBuilder->codeAppend("\t\t} else {\n");
1009 fsBuilder->codeAppendf("\t\t\tfloat d = %s.a - %s.%c;\n", src, src, component);
1010 fsBuilder->codeAppend("\t\t\tif (0.0 == d) {\n");
1011 fsBuilder->codeAppendf("\t\t\t\t%s.%c = %s.a * %s.a + %s.%c * (1.0 - %s.a) + %s.%c * (1.0 - %s.a);\n",
1014 fsBuilder->codeAppend("\t\t\t} else {\n");
1015 fsBuilder->codeAppendf("\t\t\t\td = min(%s.a, %s.%c * %s.a / d);\n",
1017 fsBuilder->codeAppendf("\t\t\t\t%s.%c = d * %s.a + %s.%c * (1.0 - %s.a) + %s.%c * (1.0 - %s.a);\n",
1019 fsBuilder->codeAppend("\t\t\t}\n");
1020 fsBuilder->codeAppend("\t\t}\n");
1024 static void ColorBurnComponent(GrGLFragmentShaderBuilder* fsBuilder,
1029 fsBuilder->codeAppendf("\t\tif (%s.a == %s.%c) {\n", dst, dst, component);
1030 fsBuilder->codeAppendf("\t\t\t%s.%c = %s.a * %s.a + %s.%c * (1.0 - %s.a) + %s.%c * (1.0 - %s.a);\n",
1033 fsBuilder->codeAppendf("\t\t} else if (0.0 == %s.%c) {\n", src, component);
1034 fsBuilder->codeAppendf("\t\t\t%s.%c = %s.%c * (1.0 - %s.a);\n",
1036 fsBuilder->codeAppend("\t\t} else {\n");
1037 fsBuilder->codeAppendf("\t\t\tfloat d = max(0.0, %s.a - (%s.a - %s.%c) * %s.a / %s.%c);\n",
1039 fsBuilder->codeAppendf("\t\t\t%s.%c = %s.a * d + %s.%c * (1.0 - %s.a) + %s.%c * (1.0 - %s.a);\n",
1041 fsBuilder->codeAppend("\t\t}\n");
1045 static void SoftLightComponentPosDstAlpha(GrGLFragmentShaderBuilder* fsBuilder,
1051 fsBuilder->codeAppendf("\t\t\tif (2.0 * %s.%c <= %s.a) {\n", src, component, src);
1053 fsBuilder->codeAppendf("\t\t\t\t%s.%c = (%s.%c*%s.%c*(%s.a - 2.0*%s.%c)) / %s.a + (1.0 - %s.a) * %s.%c + %s.%c*(-%s.a + 2.0*%s.%c + 1.0);\n",
1058 fsBuilder->codeAppendf("\t\t\t} else if (4.0 * %s.%c <= %s.a) {\n",
1060 fsBuilder->codeAppendf("\t\t\t\tfloat DSqd = %s.%c * %s.%c;\n",
1062 fsBuilder->codeAppendf("\t\t\t\tfloat DCub = DSqd * %s.%c;\n", dst, component);
1063 fsBuilder->codeAppendf("\t\t\t\tfloat DaSqd = %s.a * %s.a;\n", dst, dst);
1064 fsBuilder->codeAppendf("\t\t\t\tfloat DaCub = DaSqd * %s.a;\n", dst);
1066 fsBuilder->codeAppendf("\t\t\t\t%s.%c = (-DaCub*%s.%c + DaSqd*(%s.%c - %s.%c * (3.0*%s.a - 6.0*%s.%c - 1.0)) + 12.0*%s.a*DSqd*(%s.a - 2.0*%s.%c) - 16.0*DCub * (%s.a - 2.0*%s.%c)) / DaSqd;\n",
1070 fsBuilder->codeAppendf("\t\t\t} else {\n");
1072 fsBuilder->codeAppendf("\t\t\t\t%s.%c = -sqrt(%s.a*%s.%c)*(%s.a - 2.0*%s.%c) - %s.a*%s.%c + %s.%c*(%s.a - 2.0*%s.%c + 1.0) + %s.%c;\n",
1076 fsBuilder->codeAppendf("\t\t\t}\n");
1083 static void AddLumFunction(GrGLFragmentShaderBuilder* fsBuilder, SkString* setLumFunction) {
1090 fsBuilder->emitFunction(kFloat_GrSLType,
1115 fsBuilder->emitFunction(kVec3f_GrSLType,
1125 static void AddSatFunction(GrGLFragmentShaderBuilder* fsBuilder, SkString* setSatFunction) {
1132 fsBuilder->emitFunction(kFloat_GrSLType,
1158 fsBuilder->emitFunction(kVec3f_GrSLType,
1189 fsBuilder->emitFunction(kVec3f_GrSLType,