playcanvas
Version:
PlayCanvas WebGL game engine
4 lines (2 loc) • 768 B
JavaScript
var tonemappingNeutralPS = "\nuniform exposure: f32;\n\nfn toneMap(col: vec3f) -> vec3f {\n var color = col * uniform.exposure;\n\n let startCompression = 0.8 - 0.04;\n let desaturation = 0.15;\n\n let x = min(color.r, min(color.g, color.b));\n let offset = select(0.04, x - 6.25 * x * x, x < 0.08);\n color -= vec3f(offset);\n\n let peak = max(color.r, max(color.g, color.b));\n if (peak < startCompression) {\n return color;\n }\n\n let d = 1.0 - startCompression;\n let newPeak = 1.0 - d * d / (peak + d - startCompression);\n color *= newPeak / peak;\n\n let g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);\n return mix(color, vec3f(newPeak), vec3f(g));\n}\n";
export { tonemappingNeutralPS as default };