UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

4 lines (2 loc) 1.09 kB
var fogPS = "\n\n#if (FOG != NONE)\n uniform fog_color : vec3f;\n \n #if (FOG == LINEAR)\n uniform fog_start : f32;\n uniform fog_end : f32;\n #else\n uniform fog_density : f32;\n #endif\n#endif\n\nuniform dBlendModeFogFactor : f32;\n\nfn getFogFactor() -> f32 {\n\n // TODO: find a way to do this in WGSL, for now the fog is not working\n // let depth = gl_FragCoord.z / gl_FragCoord.w;\n let depth = 1.0;\n\n var fogFactor : f32 = 0.0;\n\n #if (FOG == LINEAR)\n fogFactor = (uniform.fog_end - depth) / (uniform.fog_end - uniform.fog_start);\n #elif (FOG == EXP)\n fogFactor = exp(-depth * uniform.fog_density);\n #elif (FOG == EXP2)\n fogFactor = exp(-depth * depth * uniform.fog_density * uniform.fog_density);\n #endif\n\n return clamp(fogFactor, 0.0, 1.0);\n}\n\nfn addFog(color : vec3f) -> vec3f {\n #if (FOG != NONE)\n return mix(uniform.fog_color * uniform.dBlendModeFogFactor, color, getFogFactor());\n #else\n return color;\n #endif\n}\n"; export { fogPS as default };