playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
25 lines (21 loc) • 735 B
JavaScript
var composeVignettePS = `
uniform vignetterParams: vec4f;
uniform vignetteColor: vec3f;
var<private> dVignette: f32;
fn calcVignette(uv: vec2f) -> f32 {
let inner = uniform.vignetterParams.x;
let outer = uniform.vignetterParams.y;
let curvature = uniform.vignetterParams.z;
let intensity = uniform.vignetterParams.w;
let curve = pow(abs(uv * 2.0 - 1.0), vec2f(1.0 / curvature));
let edge = pow(length(curve), curvature);
dVignette = 1.0 - intensity * smoothstep(inner, outer, edge);
return dVignette;
}
fn applyVignette(color: vec3f, uv: vec2f) -> vec3f {
return mix(uniform.vignetteColor, color, calcVignette(uv));
}
`;
export { composeVignettePS as default };