40 lines
892 B
GLSL
40 lines
892 B
GLSL
// https://ieeexplore.ieee.org/document/7291452
|
|
// https://www.itu.int/rec/R-REC-BT.2100
|
|
|
|
//!PARAM reference_white
|
|
//!TYPE float
|
|
//!MINIMUM 0.0
|
|
//!MAXIMUM 1000.0
|
|
203.0
|
|
|
|
//!HOOK OUTPUT
|
|
//!BIND HOOKED
|
|
//!DESC transfer function (pq, inverse)
|
|
|
|
const float m1 = 2610.0 / 4096.0 / 4.0;
|
|
const float m2 = 2523.0 / 4096.0 * 128.0;
|
|
const float c1 = 3424.0 / 4096.0;
|
|
const float c2 = 2413.0 / 4096.0 * 32.0;
|
|
const float c3 = 2392.0 / 4096.0 * 32.0;
|
|
const float pw = 10000.0;
|
|
|
|
float pq_eotf(float x) {
|
|
float t = pow(x, 1.0 / m2);
|
|
return pow(max(t - c1, 0.0) / (c2 - c3 * t), 1.0 / m1) * pw;
|
|
}
|
|
|
|
vec3 pq_eotf(vec3 color) {
|
|
return vec3(
|
|
pq_eotf(color.r),
|
|
pq_eotf(color.g),
|
|
pq_eotf(color.b)
|
|
);
|
|
}
|
|
|
|
vec4 hook() {
|
|
vec4 color = HOOKED_tex(HOOKED_pos);
|
|
|
|
color.rgb = pq_eotf(color.rgb) / reference_white;
|
|
|
|
return color;
|
|
}
|