UNPKG

glsl-tone-map

Version:

A collection of tone mapping functions available both as ES modules strings and as GLSL files for use with glslify.

37 lines (30 loc) 1.14 kB
export default /* glsl */ `// Lottes 2016, "Advanced Techniques and Optimization of HDR Color Pipelines" vec3 lottes(vec3 x) { const vec3 a = vec3(1.6); const vec3 d = vec3(0.977); const vec3 hdrMax = vec3(8.0); const vec3 midIn = vec3(0.18); const vec3 midOut = vec3(0.267); const vec3 b = (-pow(midIn, a) + pow(hdrMax, a) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); const vec3 c = (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); return pow(x, a) / (pow(x, a * d) * b + c); } float lottes(float x) { const float a = 1.6; const float d = 0.977; const float hdrMax = 8.0; const float midIn = 0.18; const float midOut = 0.267; const float b = (-pow(midIn, a) + pow(hdrMax, a) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); const float c = (pow(hdrMax, a * d) * pow(midIn, a) - pow(hdrMax, a) * pow(midIn, a * d) * midOut) / ((pow(hdrMax, a * d) - pow(midIn, a * d)) * midOut); return pow(x, a) / (pow(x, a * d) * b + c); } `;