lygia
/color
/tonemap
/uncharted
)Uncharted 2 tonemapping operator
Use:
<vec3|vec4> tonemapUncharted(<vec3|vec4> x)
#ifndef FNC_TONEMAPUNCHARTED
#define FNC_TONEMAPUNCHARTED
vec3 uncharted2Tonemap(const vec3 x) {
const float A = 0.15;
const float B = 0.50;
const float C = 0.10;
const float D = 0.20;
const float E = 0.02;
const float F = 0.30;
return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F;
}
vec3 tonemapUncharted(const vec3 x) {
const float W = 11.2;
const float exposureBias = 2.0;
vec3 curr = uncharted2Tonemap(exposureBias * x);
vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
return curr * whiteScale;
}
vec4 tonemapUncharted(const vec4 x) { return vec4( tonemapUncharted(x.rgb), x.a); }
#endif
Use:
<float3|float4> tonemapUncharted(<float3|float4> x)
#ifndef FNC_TONEMAPUNCHARTED
#define FNC_TONEMAPUNCHARTED
float3 uncharted2Tonemap(const float3 x) {
const float A = 0.15;
const float B = 0.50;
const float C = 0.10;
const float D = 0.20;
const float E = 0.02;
const float F = 0.30;
return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F;
}
float3 tonemapUncharted(const float3 x) {
const float W = 11.2;
const float exposureBias = 2.0;
float3 curr = uncharted2Tonemap(exposureBias * x);
float3 whiteScale = 1.0 / uncharted2Tonemap(float3(W, W, W));
return curr * whiteScale;
}
float4 tonemapUncharted(const float4 x) { return float4( tonemapUncharted(x.rgb), x.a); }
#endif
Use:
<vec3|vec4> tonemapUncharted(<vec3|vec4> x)
fn uncharted2Tonemap(x: vec3f) -> vec3f {
const A = 0.15;
const B = 0.50;
const C = 0.10;
const D = 0.20;
const E = 0.02;
const F = 0.30;
return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F;
}
fn tonemapUncharted3(x: vec3f) -> vec3f {
const W = 11.2;
const exposureBias = 2.0;
let curr = uncharted2Tonemap(exposureBias * x);
let whiteScale = 1.0 / uncharted2Tonemap(vec3(W));
return curr * whiteScale;
}
fn tonemapUncharted4(x: vec4f) -> vec4f { return vec4f(tonemapUncharted3(x.rgb), x.a); }
LYGIA is dual-licensed under the Prosperity License and the Patron License for sponsors and contributors.
Sponsors and contributors are automatically added to the Patron License and they can ignore the any non-commercial rule of the Prosperity Licensed software (please take a look to the exception).
It's also possible to get a permanent comercial license hook to a single and specific version of LYGIA.
Sign up for the news letter bellow, joing the LYGIA's channel on Discord or follow the Github repository