playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
3 lines (2 loc) • 2.03 kB
TypeScript
declare const _default: "\n\n#ifndef DITHER_NONE\n #include \"bayerPS\"\n #include \"opacityDitherPS\"\n varying float id;\n#endif\n\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n uniform float alphaClip;\n#endif\n\n#ifdef PREPASS_PASS\n varying float vLinearDepth;\n #include \"floatAsUintPS\"\n#endif\n\n#if !defined(SHADOW_PASS) && !defined(PICK_PASS) && !defined(PREPASS_PASS)\n uniform float alphaClipForward;\n#endif\n\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\n\n#if defined(GSPLAT_UNIFIED_ID) && defined(PICK_PASS)\n flat varying uint vPickId;\n#endif\n\n#ifdef PICK_PASS\n #include \"pickPS\"\n#endif\n\nconst float EXP4 = exp(-4.0);\nconst float INV_EXP4 = 1.0 / (1.0 - EXP4);\n\nfloat normExp(float x) {\n return (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\n\nvoid main(void) {\n mediump float A = dot(gaussianUV, gaussianUV);\n if (A > 1.0) {\n discard;\n }\n\n mediump float alpha = normExp(A) * gaussianColor.a;\n\n #if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n if (alpha < alphaClip) {\n discard;\n }\n #endif\n\n #ifdef PICK_PASS\n\n #ifdef GSPLAT_UNIFIED_ID\n // Use component ID from work buffer (passed via varying)\n pcFragColor0 = encodePickOutput(vPickId);\n #else\n // Use standard meshInstanceId path\n pcFragColor0 = getPickOutput();\n #endif\n #ifdef DEPTH_PICK_PASS\n pcFragColor1 = getPickDepth();\n #endif\n\n #elif SHADOW_PASS\n\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n\n #elif PREPASS_PASS\n\n gl_FragColor = float2vec4(vLinearDepth);\n\n #else\n if (alpha < alphaClipForward) {\n discard;\n }\n\n #ifndef DITHER_NONE\n opacityDither(alpha, id * 0.013);\n #endif\n\n gl_FragColor = vec4(gaussianColor.xyz * alpha, alpha);\n #endif\n}\n";
export default _default;