UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

3 lines (2 loc) 1.29 kB
declare const _default: "\n\n#if STD_OPACITY_DITHER == BAYER8\n #include \"bayerPS\"\n#endif\n\nuniform vec4 blueNoiseJitter;\n\n#if STD_OPACITY_DITHER == BLUENOISE\n uniform sampler2D blueNoiseTex32;\n#endif\n\nvoid opacityDither(float alpha, float id) {\n if (alpha <= 0.0)\n discard;\n\n if (alpha >= 1.0)\n return;\n\n #if STD_OPACITY_DITHER == BAYER8\n\n float noise = bayer8(floor(mod(gl_FragCoord.xy + blueNoiseJitter.xy + id, 8.0))) / 64.0;\n\n #else\n\n #if STD_OPACITY_DITHER == BLUENOISE\n vec2 uv = fract(gl_FragCoord.xy / 32.0 + blueNoiseJitter.xy + id);\n float noise = texture2DLod(blueNoiseTex32, uv, 0.0).y;\n #endif\n\n #if STD_OPACITY_DITHER == IGNNOISE\n // based on https://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare/\n vec3 magic = vec3(0.06711056, 0.00583715, 52.9829189);\n float noise = fract(magic.z * fract(dot(gl_FragCoord.xy + blueNoiseJitter.xy + id, magic.xy)));\n #endif\n\n #endif\n\n // convert the noise to linear space, as that is specified in sRGB space (stores perceptual values)\n noise = pow(noise, 2.2);\n\n if (alpha < noise)\n discard;\n}\n"; export default _default;