playcanvas
Version:
PlayCanvas WebGL game engine
3 lines (2 loc) • 1.67 kB
TypeScript
declare const _default: "\n\n#ifndef DITHER_NONE\n #include \"bayerPS\"\n #include \"opacityDitherPS\"\n varying id: f32;\n#endif\n\n#ifdef PICK_PASS\n #include \"pickPS\"\n#endif\n\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n uniform alphaClip: f32;\n#endif\n\n#ifdef PREPASS_PASS\n varying vLinearDepth: f32;\n #include \"floatAsUintPS\"\n#endif\n\nconst EXP4 = exp(-4.0);\nconst INV_EXP4 = 1.0 / (1.0 - EXP4);\n\nfn normExp(x: f32) -> f32 {\n return (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\n\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n var output: FragmentOutput;\n\n let A: f32 = dot(gaussianUV, gaussianUV);\n if (A > 1.0) {\n discard;\n return output;\n }\n\n // evaluate alpha\n var alpha = normExp(A) * gaussianColor.a;\n\n #if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n if (alpha < uniform.alphaClip) {\n discard;\n return output;\n }\n #endif\n\n #ifdef PICK_PASS\n\n output.color = getPickOutput();\n\n #elif SHADOW_PASS\n\n output.color = vec4f(0.0, 0.0, 0.0, 1.0);\n\n #elif PREPASS_PASS\n\n output.color = float2vec4(vLinearDepth);\n\n #else\n\n if (alpha < (1.0 / 255.0)) {\n discard;\n return output;\n }\n\n #ifndef DITHER_NONE\n opacityDither(&alpha, id * 0.013);\n #endif\n\n output.color = vec4f(input.gaussianColor.xyz * alpha, alpha);\n #endif\n\n return output;\n}";
export default _default;