Home | History | Annotate | Download | only in gl

Lines Matching refs:segments

375                     ShaderCodeSegments* segments,
378 segments->fVSOutputs.push_back();
379 segments->fVSOutputs.back().setType(type);
380 segments->fVSOutputs.back().setTypeModifier(
382 segments->fVSOutputs.back().accessName()->printf("v%s", name);
384 *vsOutName = segments->fVSOutputs.back().getName().c_str();
388 if (segments->fUsesGS) {
391 segments->fGSInputs.push_back();
392 segments->fGSInputs.back().setType(type);
393 segments->fGSInputs.back().setTypeModifier(
395 segments->fGSInputs.back().setUnsizedArray();
396 *segments->fGSInputs.back().accessName() =
397 segments->fVSOutputs.back().getName();
398 segments->fGSOutputs.push_back();
399 segments->fGSOutputs.back().setType(type);
400 segments->fGSOutputs.back().setTypeModifier(
402 segments->fGSOutputs.back().accessName()->printf("g%s", name);
403 fsName = segments->fGSOutputs.back().accessName();
405 fsName = segments->fVSOutputs.back().accessName();
407 segments->fFSInputs.push_back();
408 segments->fFSInputs.back().setType(type);
409 segments->fFSInputs.back().setTypeModifier(
411 segments->fFSInputs.back().setName(*fsName);
422 ShaderCodeSegments* segments,
427 append_varying(type, nameWithStage.c_str(), segments, vsOutName, fsInName);
435 ShaderCodeSegments* segments) const {
437 segments->fFSUnis.push_back().set(GrGLShaderVar::kVec3f_Type,
443 segments->fFSCode.append(
446 segments->fFSCode.append("\tfloat a");
447 segments->fFSCode.appendS32(i);
448 segments->fFSCode.append(" = clamp(dot(" EDGES_UNI_NAME "[");
449 segments->fFSCode.appendS32(i);
450 segments->fFSCode.append("], pos), 0.0, 1.0);\n");
454 segments->fFSFunctions.append("float cross2(vec2 a, vec2 b) {\n");
455 segments->fFSFunctions.append("\treturn dot(a, vec2(b.y, -b.x));\n");
456 segments->fFSFunctions.append("}\n");
458 segments->fFSCode.appendf("\tfloat eb%d;\n", i / 2);
459 segments->fFSCode.appendf("\tif (cross2(" EDGES_UNI_NAME "[%d].xy, " EDGES_UNI_NAME "[%d].xy) < 0.0) {\n", i, i + 1);
460 segments->fFSCode.appendf("\t\teb%d = a%d * a%d;\n", i / 2, i, i + 1);
461 segments->fFSCode.append("\t} else {\n");
462 segments->fFSCode.appendf("\t\teb%d = a%d + a%d - a%d * a%d;\n", i / 2, i, i + 1, i, i + 1);
463 segments->fFSCode.append("\t}\n");
465 segments->fFSCode.append("\tfloat edgeAlpha = ");
467 segments
469 segments->fFSCode.appendf("eb%d", count / 2 - 1);
471 segments->fFSCode.append(")");
473 segments->fFSCode.append(";\n");
475 segments->fFSCode.append("\tfloat edgeAlpha = ");
477 segments->fFSCode.appendf("min(a%d * a%d, ", i, i + 1);
479 segments->fFSCode.appendf("a%d * a0", count - 1);
481 segments->fFSCode.append(")");
483 segments->fFSCode.append(";\n");
488 append_varying(GrGLShaderVar::kVec4f_Type, "Edge", segments,
490 segments->fVSAttrs.push_back().set(GrGLShaderVar::kVec4f_Type,
492 segments->fVSCode.appendf("\t%s = " EDGE_ATTR_NAME ";\n", vsName);
494 segments->fFSCode.appendf("\tfloat edgeAlpha = abs(dot(vec3(gl_FragCoord.xy,1), %s.xyz));\n", fsName);
495 segments->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
497 segments->fFSCode.append("\tfloat edgeAlpha;\n");
499 segments->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
500 segments->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
501 segments->fFSCode.appendf("\tif (%s.z > 0.0 && %s.w > 0.0) {\n", fsName, fsName);
503 segments->fFSCode.appendf("\t\tedgeAlpha = min(min(%s.z, %s.w) + 0.5, 1.0);\n", fsName, fsName);
504 segments->fFSCode.append ("\t} else {\n");
505 segments->fFSCode.appendf("\t\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
508 segments->fFSCode.appendf("\t\tedgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
509 segments->fFSCode.append("\t\tedgeAlpha = clamp(0.5 - edgeAlpha / length(gF), 0.0, 1.0);\n"
512 segments->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
516 segments->fFSCode.appendf("\tvec2 duvdx = dFdx(%s.xy);\n", fsName);
517 segments->fFSCode.appendf("\tvec2 duvdy = dFdy(%s.xy);\n", fsName);
518 segments->fFSCode.appendf("\tvec2 gF = vec2(2.0*%s.x*duvdx.x - duvdx.y,\n"
521 segments->fFSCode.appendf("\tfloat edgeAlpha = (%s.x*%s.x - %s.y);\n", fsName, fsName, fsName);
522 segments->fFSCode.append("\tedgeAlpha = sqrt(edgeAlpha*edgeAlpha / dot(gF, gF));\n");
523 segments->fFSCode.append("\tedgeAlpha = max(1.0 - edgeAlpha, 0.0);\n");
525 segments->fHeader.printf("#extension GL_OES_standard_derivatives: enable\n");
538 ShaderCodeSegments* segments,
542 segments->fVSAttrs.push_back().set(GrGLShaderVar::kVec4f_Type,
546 append_varying(GrGLShaderVar::kVec4f_Type, "Color", segments, &vsName, &fsName);
547 segments->fVSCode.appendf("\t%s = " COL_ATTR_NAME ";\n", vsName);
551 segments->fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
568 void genAttributeCoverage(ShaderCodeSegments* segments,
570 segments->fVSAttrs.push_back().set(GrGLShaderVar::kVec4f_Type,
575 segments, &vsName, &fsName);
576 segments->fVSCode.appendf("\t%s = " COV_ATTR_NAME ";\n", vsName);
578 segments->fFSCode.appendf("\tvec4 attrCoverage = %s * %s;\n",
586 void genUniformCoverage(ShaderCodeSegments* segments,
589 segments->fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
594 segments->fFSCode.appendf("\tvec4 uniCoverage = %s * %s;\n",
605 ShaderCodeSegments* segments) const {
609 segments->fGSHeader.append("layout(triangles) in;\n"
611 segments->fGSCode.append("void main() {\n"
615 segments->fGSCode.append("\t\tgl_PointSize = 1.0;\n");
617 GrAssert(segments->fGSInputs.count() == segments->fGSOutputs.count());
618 int count = segments->fGSInputs.count();
620 segments->fGSCode.appendf("\t\t%s = %s[i];\n",
621 segments->fGSOutputs[i].getName().c_str(),
622 segments->fGSInputs[i].getName().c_str());
624 segments->fGSCode.append("\t\tEmitVertex();\n"
648 ShaderCodeSegments segments;
654 segments.fUsesGS = fProgramDesc.fExperimentalGS;
702 segments.fHeader.printf(GrGetGLSLVersionDecl(gl.binding(),
710 segments.fFSOutputs.push_back(colorOutput);
714 segments.fVSAttrs.push_back().set(GrGLShaderVar::kMat33f_Type,
718 segments.fVSUnis.push_back().set(GrGLShaderVar::kMat33f_Type,
722 segments.fVSAttrs.push_back().set(GrGLShaderVar::kVec2f_Type,
725 segments.fVSCode.append(
735 programData, &segments, &inColor);
739 if (fProgramDesc.fEmitsPointSize && !segments.fUsesGS){
740 segments.fVSCode.append("\tgl_PointSize = 1.0;\n");
743 segments.fFSCode.append("void main() {\n");
750 segments.fVSAttrs.push_back().set(GrGLShaderVar::kVec2f_Type,
768 segments.fFSCode.appendf("\tvec4 %s;\n", outColor.c_str());
789 &segments,
810 segments.fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
819 segments.fFSCode.appendf("\t%s = %s;\n",
824 segments.fFSCode.append("\tvec4 filteredColor;\n");
826 addColorFilter(&segments.fFSCode, "filteredColor", uniformCoeff,
831 segments.fFSUnis.push_back().set(GrGLShaderVar::kMat44f_Type,
834 segments.fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
839 segments.fFSCode.append("\tvec4 matrixedColor;\n");
841 addColorMatrix(&segments.fFSCode, "matrixedColor", color);
861 &segments);
868 genAttributeCoverage(&segments, &inCoverage);
871 genUniformCoverage(&segments, programData, &inCoverage);
884 segments.fFSCode.appendf("\tvec4 %s;\n",
907 &segments,
914 segments.fFSOutputs.push_back().set(GrGLShaderVar::kVec4f_Type,
934 segments.fFSCode.appendf("\t%s = %s;\n",
941 &segments.fFSCode);
952 segments.fFSCode.appendf("\t%s = %s;\n",
959 &segments.fFSCode);
963 segments.fFSCode.appendf("\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(floor(%s.rgb / %s.a * 255.0)/255.0, %s.a);\n",
971 segments.fFSCode.appendf("\t%s = %s.a <= 0.0 ? vec4(0,0,0,0) : vec4(ceil(%s.rgb / %s.a * 255.0)/255.0, %s.a);\n",
980 segments.fVSCode.append("}\n");
981 segments.fFSCode.append("}\n");
986 this->genGeometryShader(gl, &segments);
992 if (!CompileShaders(gl, segments, programData)) {
1064 const ShaderCodeSegments& segments,
1076 append_string(segments.fHeader, &strs, &lengths);
1077 append_decls(segments.fVSUnis, gl, &strs, &lengths, &temps);
1078 append_decls(segments.fVSAttrs, gl, &strs, &lengths, &temps);
1079 append_decls(segments.fVSOutputs, gl, &strs, &lengths, &temps);
1080 append_string(segments.fVSCode, &strs, &lengths);
1094 if (segments.fUsesGS) {
1098 append_string(segments.fHeader, &strs, &lengths);
1099 append_string(segments.fGSHeader, &strs, &lengths);
1100 append_decls(segments.fGSInputs, gl, &strs, &lengths, &temps);
1101 append_decls(segments.fGSOutputs, gl, &strs, &lengths, &temps);
1102 append_string(segments.fGSCode, &strs, &lengths);
1118 append_string(segments.fHeader, &strs, &lengths);
1121 append_decls(segments.fFSUnis, gl, &strs, &lengths, &temps);
1122 append_decls(segments.fFSInputs, gl, &strs, &lengths, &temps);
1125 segments.fFSOutputs.empty());
1126 append_decls(segments.fFSOutputs, gl, &strs, &lengths, &temps);
1127 append_string(segments.fFSFunctions, &strs, &lengths);
1128 append_string(segments.fFSCode, &strs, &lengths);
1405 ShaderCodeSegments* segments,
1412 GrGLShaderVar* radial2FSParams = &segments->fFSUnis.push_back();
1417 segments->fVSUnis.push_back(*radial2FSParams).setEmitPrecision(true);
1428 segments,
1439 segments->fVSCode.appendf("\t%s = 2.0 *(%s * %s.x - %s);\n",
1448 ShaderCodeSegments* segments,
1486 segments->fFSCode.appendf("\tfloat %s = 2.0 * (%s * %s.x - %s);\n",
1492 segments->fFSCode.appendf("\tfloat %s = dot(%s, %s) - %s;\n",
1497 segments->fFSCode.appendf("\tfloat %s = %s * 4.0 * %s;\n",
1503 segments->fFSCode.appendf("\tfloat %s = sqrt(abs(%s*%s - %s));\n",
1516 ShaderCodeSegments* segments,
1544 segments->fFSCode.appendf("\tfloat %s = 2.0 * (%s * %s.x - %s);\n",
1550 segments->fFSCode.appendf("\tfloat %s = dot(%s, %s) - %s;\n",
1562 ShaderCodeSegments* segments,
1578 segments->fFSCode.appendf("\t%s %s = %s;\n",
1586 segments->fFSCode.appendf("\tvec4 %s = %s(%s, %s + vec2(-%s.x,-%s.y))%s;\n", accumVar.c_str(), texFunc.c_str(), samplerName, sampleCoords->c_str(), texelSizeName, texelSizeName, swizzle);
1587 segments->fFSCode.appendf("\t%s += %s(%s, %s + vec2(+%s.x,-%s.y))%s;\n", accumVar.c_str(), texFunc.c_str(), samplerName, sampleCoords->c_str(), texelSizeName, texelSizeName, swizzle);
1588 segments->fFSCode.appendf("\t%s += %s(%s, %s + vec2(-%s.x,+%s.y))%s;\n", accumVar.c_str(), texFunc.c_str(), samplerName, sampleCoords->c_str(), texelSizeName, texelSizeName, swizzle);
1589 segments->fFSCode.appendf("\t%s += %s(%s, %s + vec2(+%s.x,+%s.y))%s;\n", accumVar.c_str(), texFunc.c_str(), samplerName, sampleCoords->c_str(), texelSizeName, texelSizeName, swizzle);
1590 segments->fFSCode.appendf("\t%s = .25 * %s%s;\n", fsOutColor, accumVar.c_str(), modulate.c_str());
1596 ShaderCodeSegments* segments,
1601 //GrGLShaderVar* kernel = &segments->fFSUnis.push_back();
1602 *kernel = &segments->fFSUnis.push_back();
1606 GrGLShaderVar* imgInc = &segments->fFSUnis.push_back();
1616 segments->fVSUnis.push_back(*imgInc).setEmitPrecision(true);
1621 segments->fVSCode.appendf("\t%s -= vec2(%g, %g) * %s;\n",
1628 ShaderCodeSegments* segments,
1645 segments->fFSCode.appendf("\tvec4 %s = vec4(0, 0, 0, 0);\n",
1647 segments->fFSCode.appendf("\tvec2 %s = %s;\n",
1650 segments->fFSCode.appendf("\tfor (int i = 0; i < %d; i++) {\n",
1652 segments->fFSCode.appendf("\t\t%s += %s(%s, %s)%s * %s;\n",
1656 segments->fFSCode.appendf("\t\t%s += %s;\n",
1659 segments->fFSCode.append("\t}\n");
1660 segments->fFSCode.appendf("\t%s = %s%s;\n", fsOutColor,
1666 ShaderCodeSegments* segments,
1670 GrGLShaderVar* imgInc = &segments->fFSUnis.push_back();
1678 segments->fVSUnis.push_back(*imgInc).setEmitPrecision(true);
1681 segments->fVSCode.appendf("\t%s -= vec2(%d, %d) * %s;\n",
1688 ShaderCodeSegments* segments,
1703 segments->fFSCode.appendf("\tvec4 %s = vec4(0, 0, 0, 0);\n",
1706 segments->fFSCode.appendf("\tvec4 %s = vec4(1, 1, 1, 1);\n",
1709 segments->fFSCode.appendf("\tvec2 %s = %s;\n",
1712 segments->fFSCode.appendf("\tfor (int i = 0; i < %d; i++) {\n",
1714 segments->fFSCode.appendf("\t\t%s = %s(%s, %s(%s, %s)%s);\n",
1718 segments->fFSCode.appendf("\t\t%s += %s;\n",
1721 segments->fFSCode.appendf("\t}\n");
1722 segments->fFSCode.appendf("\t%s = %s%s;\n", fsOutColor,
1734 ShaderCodeSegments* segments,
1756 mat = &segments->fVSAttrs.push_back();
1760 mat = &segments->fVSUnis.push_back();
1775 segments->fFSUnis.push_back().set(GrGLShaderVar::kSampler2D_Type,
1777 sampler_name(stageNum, segments->fFSUnis.back().accessName());
1779 const char* samplerName = segments->fFSUnis.back().getName().c_str();
1783 segments->fFSUnis.push_back().set(GrGLShaderVar::kVec2f_Type,
1785 normalized_texel_size_name(stageNum, segments->fFSUnis.back().accessName());
1786 texelSizeName = segments->fFSUnis.back().getName().c_str();
1793 segments,
1799 segments->fVSCode.appendf("\t%s = %s;\n", varyingVSName, vsInCoord);
1802 segments->fVSCode.appendf("\t%s = (%s * vec3(%s, 1))%s;\n",
1812 radial2Params = genRadialVS(stageNum, segments,
1823 genConvolutionVS(stageNum, desc, segments, locations,
1827 genMorphologyVS(stageNum, desc, segments, locations,
1850 segments->fFSCode.appendf("\t%s %s = %s%s / %s%s;\n",
1876 stageNum, segments,
1884 stageNum, segments,
1914 segments->fFSUnis.push_back().set(GrGLShaderVar::kVec4f_Type,
1917 segments->fFSCode.appendf("\t%s %s = clamp(%s, %s.xy, %s.zw);\n",
1930 gen2x2FS(stageNum, segments, locations, &sampleCoords,
1936 genConvolutionFS(stageNum, desc, segments,
1943 genMorphologyFS(stageNum, desc, segments,
1953 segments->fFSCode.appendf("\t%s = %s(%s, %s)%s;\n",
1959 segments->fFSCode.appendf("\t%s = vec4(ceil(%s.rgb*%s.a*255.0)/255.0,%s.a)%s;\n",
1963 segments->fFSCode.appendf("\t%s = vec4(floor(%s.rgb*%s.a*255.0)/255.0,%s.a)%s;\n",
1968 segments->fFSCode.appendf("\t%s = %s(%s, %s)%s%s;\n",