@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
3 lines (2 loc) • 1.15 kB
TypeScript
declare const _default: "\nvarying vec2 vUv0;\n\nuniform sampler2D source;\nuniform vec2 pixelOffset;\n\n#ifdef GAUSS\nuniform float weight[SAMPLES];\n#endif\n\n#ifdef PACKED\nfloat decodeFloatRG(vec2 rg) {\n return rg.y*(1.0/255.0) + rg.x;\n}\n\nvec2 encodeFloatRG( float v ) {\n vec2 enc = vec2(1.0, 255.0) * v;\n enc = fract(enc);\n enc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n return enc;\n}\n#endif\n\nvoid main(void) {\n vec3 moments = vec3(0.0);\n vec2 uv = vUv0 - pixelOffset * (float(SAMPLES) * 0.5);\n for (int i=0; i<SAMPLES; i++) {\n vec4 c = texture2D(source, uv + pixelOffset * float(i));\n\n #ifdef PACKED\n c.xy = vec2(decodeFloatRG(c.xy), decodeFloatRG(c.zw));\n #endif\n\n #ifdef GAUSS\n moments += c.xyz * weight[i];\n #else\n moments += c.xyz;\n #endif\n }\n\n #ifndef GAUSS\n moments /= float(SAMPLES);\n #endif\n\n #ifdef PACKED\n gl_FragColor = vec4(encodeFloatRG(moments.x), encodeFloatRG(moments.y));\n #else\n gl_FragColor = vec4(moments.x, moments.y, moments.z, 1.0);\n #endif\n}\n";
export default _default;