color-management: use more consistent naming
This commit is contained in:
parent
32db933242
commit
83e79b68e6
65 changed files with 439 additions and 510 deletions
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef TRANSFER_FUNCTIONS_GLSL
|
||||
#define TRANSFER_FUNCTIONS_GLSL
|
||||
#ifndef EOTFS_GLSL
|
||||
#define EOTFS_GLSL
|
||||
|
||||
#include "frag_spec_const.glsl"
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ vec3 eotf_st2084_pq(vec3 c) {
|
|||
return pow(num / den, vec3(1.0 / 0.1593017578125));
|
||||
}
|
||||
|
||||
vec3 oetf_st2084_pq(vec3 c) {
|
||||
vec3 inv_eotf_st2084_pq(vec3 c) {
|
||||
c = clamp(c, 0.0, 1.0);
|
||||
vec3 num = vec3(0.8359375) + vec3(18.8515625) * pow(c, vec3(0.1593017578125));
|
||||
vec3 den = vec3(1.0) + vec3(18.6875) * pow(c, vec3(0.1593017578125));
|
||||
|
|
@ -36,7 +36,7 @@ vec3 eotf_st240(vec3 c) {
|
|||
);
|
||||
}
|
||||
|
||||
vec3 oetf_st240(vec3 c) {
|
||||
vec3 inv_eotf_st240(vec3 c) {
|
||||
return mix(
|
||||
vec3(4.0) * c,
|
||||
vec3(1.1115) * pow(c, vec3(0.45)) - vec3(0.1115),
|
||||
|
|
@ -48,7 +48,7 @@ vec3 eotf_log100(vec3 c) {
|
|||
return pow(vec3(10), vec3(2.0) * (c - vec3(1.0)));
|
||||
}
|
||||
|
||||
vec3 oetf_log100(vec3 c) {
|
||||
vec3 inv_eotf_log100(vec3 c) {
|
||||
c = clamp(c, 0.0, 1.0);
|
||||
return mix(
|
||||
vec3(0.0),
|
||||
|
|
@ -61,7 +61,7 @@ vec3 eotf_log316(vec3 c) {
|
|||
return pow(vec3(10), vec3(2.5) * (c - vec3(1.0)));
|
||||
}
|
||||
|
||||
vec3 oetf_log316(vec3 c) {
|
||||
vec3 inv_eotf_log316(vec3 c) {
|
||||
c = clamp(c, 0.0, 1.0);
|
||||
return mix(
|
||||
vec3(0.0),
|
||||
|
|
@ -75,7 +75,7 @@ vec3 eotf_st428(vec3 c) {
|
|||
return pow(c, vec3(2.6)) * vec3(52.37 / 48.0);
|
||||
}
|
||||
|
||||
vec3 oetf_st428(vec3 c) {
|
||||
vec3 inv_eotf_st428(vec3 c) {
|
||||
c = max(c, 0.0);
|
||||
return pow(vec3(48.0) * c / vec3(52.37), vec3(1.0 / 2.6));
|
||||
}
|
||||
|
|
@ -95,17 +95,17 @@ vec3 apply_eotf(vec3 c) {
|
|||
}
|
||||
}
|
||||
|
||||
vec3 apply_oetf(vec3 c) {
|
||||
switch (oetf) {
|
||||
vec3 apply_inv_eotf(vec3 c) {
|
||||
switch (inv_eotf) {
|
||||
case TF_LINEAR: return c;
|
||||
case TF_ST2084_PQ: return oetf_st2084_pq(c);
|
||||
case TF_ST2084_PQ: return inv_eotf_st2084_pq(c);
|
||||
case TF_GAMMA24: return sign(c) * pow(abs(c), vec3(1.0 / 2.4));
|
||||
case TF_GAMMA22: return sign(c) * pow(abs(c), vec3(1.0 / 2.2));
|
||||
case TF_GAMMA28: return sign(c) * pow(abs(c), vec3(1.0 / 2.8));
|
||||
case TF_ST240: return oetf_st240(c);
|
||||
case TF_LOG100: return oetf_log100(c);
|
||||
case TF_LOG316: return oetf_log316(c);
|
||||
case TF_ST428: return oetf_st428(c);
|
||||
case TF_ST240: return inv_eotf_st240(c);
|
||||
case TF_LOG100: return inv_eotf_log100(c);
|
||||
case TF_LOG316: return inv_eotf_log316(c);
|
||||
case TF_ST428: return inv_eotf_st428(c);
|
||||
default: return c;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
layout(constant_id = 0) const bool src_has_alpha = false;
|
||||
layout(constant_id = 1) const bool has_alpha_multiplier = false;
|
||||
layout(constant_id = 2) const uint eotf = 0;
|
||||
layout(constant_id = 3) const uint oetf = 0;
|
||||
layout(constant_id = 3) const uint inv_eotf = 0;
|
||||
layout(constant_id = 4) const bool has_matrix = false;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#extension GL_EXT_samplerless_texture_functions : require
|
||||
|
||||
#include "frag_spec_const.glsl"
|
||||
#include "transfer_functions.glsl"
|
||||
#include "eotfs.glsl"
|
||||
#include "out.common.glsl"
|
||||
|
||||
layout(set = 0, binding = 0) uniform texture2D in_color;
|
||||
|
|
@ -10,10 +10,10 @@ layout(location = 0) out vec4 out_color;
|
|||
|
||||
void main() {
|
||||
vec4 c = texelFetch(in_color, ivec2(gl_FragCoord.xy), 0);
|
||||
if (eotf != oetf) {
|
||||
if (eotf != inv_eotf) {
|
||||
c.rgb /= mix(c.a, 1.0, c.a == 0.0);
|
||||
c.rgb = apply_eotf(c.rgb);
|
||||
c.rgb = apply_oetf(c.rgb);
|
||||
c.rgb = apply_inv_eotf(c.rgb);
|
||||
c.rgb *= c.a;
|
||||
}
|
||||
out_color = c;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#extension GL_EXT_scalar_block_layout : require
|
||||
|
||||
#include "frag_spec_const.glsl"
|
||||
#include "transfer_functions.glsl"
|
||||
#include "eotfs.glsl"
|
||||
#include "tex.common.glsl"
|
||||
|
||||
layout(set = 0, binding = 0) uniform sampler sam;
|
||||
|
|
@ -16,7 +16,7 @@ layout(location = 0) out vec4 out_color;
|
|||
|
||||
void main() {
|
||||
vec4 c = textureLod(sampler2D(tex, sam), tex_pos, 0);
|
||||
if (eotf != oetf || has_matrix) {
|
||||
if (eotf != inv_eotf || has_matrix) {
|
||||
vec3 rgb = c.rgb;
|
||||
if (src_has_alpha) {
|
||||
rgb /= mix(c.a, 1.0, c.a == 0.0);
|
||||
|
|
@ -25,7 +25,7 @@ void main() {
|
|||
if (has_matrix) {
|
||||
rgb = (cm_data.matrix * vec4(rgb, 1.0)).rgb;
|
||||
}
|
||||
rgb = apply_oetf(rgb);
|
||||
rgb = apply_inv_eotf(rgb);
|
||||
if (src_has_alpha) {
|
||||
rgb *= c.a;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue