pex-renderer
Version:
Physically Based Renderer for Pex
24 lines (20 loc) • 479 B
JavaScript
// source http://webglinsights.github.io/downloads/WebGL-Insights-Chapter-16.pdf
module.exports = /* glsl */ `
vec3 decodeRGBM (vec4 rgbm) {
vec3 r = rgbm.rgb * (7.0 * rgbm.a);
return r * r;
}
vec4 encodeRGBM (vec3 rgb_0) {
vec4 r;
r.xyz = (1.0 / 7.0) * sqrt(rgb_0);
r.a = max(max(r.x, r.y), r.z);
r.a = clamp(r.a, 1.0 / 255.0, 1.0);
r.a = ceil(r.a * 255.0) / 255.0;
r.xyz /= r.a;
return r;
}
`