playcanvas
Version:
PlayCanvas WebGL game engine
35 lines (32 loc) • 845 B
JavaScript
var fogPS = `
var<private> dBlendModeFogFactor : f32 = 1.0;
uniform fog_color : vec3f;
uniform fog_start : f32;
uniform fog_end : f32;
uniform fog_density : f32;
fn getFogFactor() -> f32 {
let depth = pcPosition.z / pcPosition.w;
var fogFactor : f32 = 0.0;
fogFactor = (uniform.fog_end - depth) / (uniform.fog_end - uniform.fog_start);
fogFactor = exp(-depth * uniform.fog_density);
fogFactor = exp(-depth * depth * uniform.fog_density * uniform.fog_density);
return clamp(fogFactor, 0.0, 1.0);
}
fn addFog(color : vec3f) -> vec3f {
return mix(uniform.fog_color * dBlendModeFogFactor, color, getFogFactor());
return color;
}
`;
export { fogPS as default };