Lines Matching refs:shader
431 // program for A8, unmodulated, texture w/o shader (black text/path textures) is equivalent
465 String8 shader(gVS_Header_Attributes);
467 shader.append(gVS_Header_Attributes_TexCoords);
470 shader.append(gVS_Header_Attributes_VertexAlphaParameters);
473 shader.append(gVS_Header_Attributes_Colors);
476 shader.append(gVS_Header_Uniforms);
478 shader.append(gVS_Header_Uniforms_TextureTransform);
481 shader.append(gVS_Header_Uniforms_HasGradient);
484 shader.append(gVS_Header_Uniforms_HasBitmap);
487 shader.append(gVS_Header_Uniforms_HasRoundRectClip);
491 shader.append(gVS_Header_Varyings_HasTexture);
494 shader.append(gVS_Header_Varyings_HasVertexAlpha);
497 shader.append(gVS_Header_Varyings_HasColors);
500 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
503 shader.append(gVS_Header_Varyings_HasBitmap);
506 shader.append(gVS_Header_Varyings_HasRoundRectClip);
509 // Begin the shader
510 shader.append(gVS_Main); {
512 shader.append(gVS_Main_OutTransformedTexCoords);
514 shader.append(gVS_Main_OutTexCoords);
517 shader.append(gVS_Main_VertexAlpha);
520 shader.append(gVS_Main_OutColors);
523 shader.append(gVS_Main_OutBitmapTexCoords);
526 shader.append(gVS_Main_Position);
528 shader.append(gVS_Main_OutGradient[gradientIndex(description)]);
531 shader.append(gVS_Main_HasRoundRectClip);
534 // End the shader
535 shader.append(gVS_Footer);
537 PROGRAM_LOGD("*** Generated vertex shader:\n\n%s", shader.string());
539 return shader;
542 static bool shaderOp(const ProgramDescription& description, String8& shader,
546 shader.append(snippets[op]);
551 String8 shader;
555 shader.append(gFS_Header_Extension_FramebufferFetch);
558 shader.append(gFS_Header_Extension_ExternalTexture);
561 shader.append(gFS_Header);
565 shader.append(gVS_Header_Varyings_HasTexture);
568 shader.append(gVS_Header_Varyings_HasVertexAlpha);
571 shader.append(gVS_Header_Varyings_HasColors);
574 shader.append(gVS_Header_Varyings_HasGradient[gradientIndex(description)]);
577 shader.append(gVS_Header_Varyings_HasBitmap);
580 shader.append(gVS_Header_Varyings_HasRoundRectClip);
589 shader.append(gFS_Uniforms_Color);
593 shader.append(gFS_Uniforms_TextureSampler);
595 shader.append(gFS_Uniforms_ExternalTextureSampler);
598 shader.appendFormat(gFS_Uniforms_GradientSampler[description.isSimpleGradient],
602 shader.append(gFS_Uniforms_Gamma);
605 shader.append(gFS_Uniforms_HasRoundRectClip);
627 shader.append(gFS_Fast_SingleColor);
631 shader.append(gFS_Fast_SingleTexture);
633 shader.append(gFS_Fast_SingleModulateTexture);
639 shader.append(gFS_Fast_SingleA8Texture_ApplyGamma);
641 shader.append(gFS_Fast_SingleA8Texture);
645 shader.append(gFS_Fast_SingleModulateA8Texture_ApplyGamma);
647 shader.append(gFS_Fast_SingleModulateA8Texture);
653 shader.appendFormat(gFS_Fast_SingleGradient[description.isSimpleGradient],
656 shader.appendFormat(gFS_Fast_SingleModulateGradient[description.isSimpleGradient],
665 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
666 printLongString(shader);
669 return shader;
674 shader.append(gFS_Uniforms_BitmapSampler);
676 shader.append(gFS_Uniforms_ColorOp[description.colorOp]);
680 generateBlend(shader, "blendShaders", description.shadersMode);
683 generateBlend(shader, "blendColors", description.colorMode);
686 generateBlend(shader, "blendFramebuffer", description.framebufferMode);
689 generateTextureWrap(shader, description.bitmapWrapS, description.bitmapWrapT);
692 // Begin the shader
693 shader.append(gFS_Main); {
698 shader.append(gFS_Main_FetchA8Texture[modulateOp * 2 +
702 shader.append(gFS_Main_FetchTexture[modulateOp]);
706 shader.append(gFS_Main_FetchColor);
710 shader.append(gFS_Main_FetchGradient[gradientIndex(description)]);
711 shader.appendFormat(gFS_Main_AddDitherToGradient, gFS_Main_Dither[mHasES3]);
715 shader.append(gFS_Main_FetchBitmap);
717 shader.append(gFS_Main_FetchBitmapNpot);
724 shader.append(gFS_Main_BlendShadersBG);
726 shader.append(gFS_Main_BlendShadersGB);
728 applyModulate = shaderOp(description, shader, modulateOp,
732 applyModulate = shaderOp(description, shader, modulateOp,
735 applyModulate = shaderOp(description, shader, modulateOp,
741 shader.append(gFS_Main_ModulateColor);
745 shader.append(gFS_Main_ApplyColorOp[description.colorOp]);
749 shader.append(gFS_Main_ApplyVertexAlphaShadowInterp);
751 shader.append(gFS_Main_ApplyVertexAlphaLinearInterp);
757 shader.append(gFS_Main_FragColor);
759 shader.append(!description.swapSrcDst ?
763 shader.append(gFS_Main_FragColor_HasColors);
766 shader.append(gFS_Main_FragColor_HasRoundRectClip);
769 shader.append(gFS_Main_DebugHighlight);
772 // End the shader
773 shader.append(gFS_Footer);
776 PROGRAM_LOGD("*** Generated fragment shader:\n\n");
777 printLongString(shader);
780 return shader;
783 void ProgramCache::generateBlend(String8& shader, const char* name, SkXfermode::Mode mode) {
784 shader.append("\nvec4 ");
785 shader.append(name);
786 shader.append("(vec4 src, vec4 dst) {\n");
787 shader.append(" ");
788 shader.append(gBlendOps[mode]);
789 shader.append("}\n");
792 void ProgramCache::generateTextureWrap(String8& shader, GLenum wrapS, GLenum wrapT) {
793 shader.append("\nhighp vec2 wrap(highp vec2 texCoords) {\n");
795 shader.append(" highp float xMod2 = mod(texCoords.x, 2.0);\n");
796 shader.append(" if (xMod2 > 1.0) xMod2 = 2.0 - xMod2;\n");
799 shader.append(" highp float yMod2 = mod(texCoords.y, 2.0);\n");
800 shader.append(" if (yMod2 > 1.0) yMod2 = 2.0 - yMod2;\n");
802 shader.append(" return vec2(");
805 shader.append("texCoords.x");
808 shader.append("mod(texCoords.x, 1.0)");
811 shader.append("xMod2");
814 shader.append(", ");
817 shader.append("texCoords.y");
820 shader.append("mod(texCoords.y, 1.0)");
823 shader.append("yMod2");
826 shader.append(");\n");
827 shader.append("}\n");
830 void ProgramCache::printLongString(const String8& shader) const {
833 const char* str = shader.string();
834 while ((index = shader.find("\n", index)) > -1) {