color-management: make (ext_)srgb aliases for gamma22
This commit is contained in:
parent
48a36a9feb
commit
32db933242
21 changed files with 21 additions and 115 deletions
|
|
@ -3,60 +3,16 @@
|
|||
|
||||
#include "frag_spec_const.glsl"
|
||||
|
||||
#define TF_SRGB 0
|
||||
#define TF_LINEAR 1
|
||||
#define TF_ST2084_PQ 2
|
||||
#define TF_GAMMA24 3
|
||||
#define TF_GAMMA22 4
|
||||
#define TF_GAMMA28 5
|
||||
#define TF_ST240 6
|
||||
#define TF_EXT_SRGB 7
|
||||
#define TF_LOG100 8
|
||||
#define TF_LOG316 9
|
||||
#define TF_ST428 10
|
||||
|
||||
vec3 eotf_srgb(vec3 c) {
|
||||
return mix(
|
||||
c * vec3(1.0 / 12.92),
|
||||
pow((c + vec3(0.055)) / vec3(1.055), vec3(2.4)),
|
||||
greaterThan(c, vec3(0.04045))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 oetf_srgb(vec3 c) {
|
||||
c = clamp(c, 0.0, 1.0);
|
||||
return mix(
|
||||
c * vec3(12.92),
|
||||
vec3(1.055) * pow(c, vec3(1/2.4)) - vec3(0.055),
|
||||
greaterThan(c, vec3(0.0031308))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 eotf_ext_srgb(vec3 c) {
|
||||
return mix(
|
||||
-pow((c - vec3(0.055)) / vec3(-1.055), vec3(2.4)),
|
||||
mix(
|
||||
c * vec3(1.0 / 12.92),
|
||||
pow((c + vec3(0.055)) / vec3(1.055), vec3(2.4)),
|
||||
greaterThan(c, vec3(0.04045))
|
||||
),
|
||||
greaterThan(c, vec3(-0.04045))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 oetf_ext_srgb(vec3 c) {
|
||||
c = clamp(c, -0.6038, 7.5913);
|
||||
return mix(
|
||||
vec3(-1.055) * pow(-c, vec3(1/2.4)) + vec3(0.055),
|
||||
mix(
|
||||
c * vec3(12.92),
|
||||
vec3(1.055) * pow(c, vec3(1/2.4)) - vec3(0.055),
|
||||
greaterThan(c, vec3(0.0031308))
|
||||
),
|
||||
greaterThan(c, vec3(-0.0031308))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 eotf_st2084_pq(vec3 c) {
|
||||
c = clamp(c, 0.0, 1.0);
|
||||
vec3 cp = pow(c, vec3(1.0 / 78.84375));
|
||||
|
|
@ -126,14 +82,12 @@ vec3 oetf_st428(vec3 c) {
|
|||
|
||||
vec3 apply_eotf(vec3 c) {
|
||||
switch (eotf) {
|
||||
case TF_SRGB: return eotf_srgb(c);
|
||||
case TF_LINEAR: return c;
|
||||
case TF_ST2084_PQ: return eotf_st2084_pq(c);
|
||||
case TF_GAMMA24: return sign(c) * pow(abs(c), vec3(2.4));
|
||||
case TF_GAMMA22: return sign(c) * pow(abs(c), vec3(2.2));
|
||||
case TF_GAMMA28: return sign(c) * pow(abs(c), vec3(2.8));
|
||||
case TF_ST240: return eotf_st240(c);
|
||||
case TF_EXT_SRGB: return eotf_ext_srgb(c);
|
||||
case TF_LOG100: return eotf_log100(c);
|
||||
case TF_LOG316: return eotf_log316(c);
|
||||
case TF_ST428: return eotf_st428(c);
|
||||
|
|
@ -143,14 +97,12 @@ vec3 apply_eotf(vec3 c) {
|
|||
|
||||
vec3 apply_oetf(vec3 c) {
|
||||
switch (oetf) {
|
||||
case TF_SRGB: return oetf_srgb(c);
|
||||
case TF_LINEAR: return c;
|
||||
case TF_ST2084_PQ: return oetf_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_EXT_SRGB: return oetf_ext_srgb(c);
|
||||
case TF_LOG100: return oetf_log100(c);
|
||||
case TF_LOG316: return oetf_log316(c);
|
||||
case TF_ST428: return oetf_st428(c);
|
||||
|
|
|
|||
|
|
@ -1,13 +1,11 @@
|
|||
use crate::cmm::cmm_transfer_function::TransferFunction;
|
||||
|
||||
pub const TF_SRGB: u32 = 0;
|
||||
pub const TF_LINEAR: u32 = 1;
|
||||
pub const TF_ST2084_PQ: u32 = 2;
|
||||
pub const TF_GAMMA24: u32 = 3;
|
||||
pub const TF_GAMMA22: u32 = 4;
|
||||
pub const TF_GAMMA28: u32 = 5;
|
||||
pub const TF_ST240: u32 = 6;
|
||||
pub const TF_EXT_SRGB: u32 = 7;
|
||||
pub const TF_LOG100: u32 = 8;
|
||||
pub const TF_LOG316: u32 = 9;
|
||||
pub const TF_ST428: u32 = 10;
|
||||
|
|
@ -19,14 +17,12 @@ pub trait TransferFunctionExt: Sized {
|
|||
impl TransferFunctionExt for TransferFunction {
|
||||
fn to_vulkan(self) -> u32 {
|
||||
match self {
|
||||
TransferFunction::Srgb => TF_SRGB,
|
||||
TransferFunction::Linear => TF_LINEAR,
|
||||
TransferFunction::St2084Pq => TF_ST2084_PQ,
|
||||
TransferFunction::Bt1886 => TF_GAMMA24,
|
||||
TransferFunction::Gamma22 => TF_GAMMA22,
|
||||
TransferFunction::Gamma28 => TF_GAMMA28,
|
||||
TransferFunction::St240 => TF_ST240,
|
||||
TransferFunction::ExtSrgb => TF_EXT_SRGB,
|
||||
TransferFunction::Log100 => TF_LOG100,
|
||||
TransferFunction::Log316 => TF_LOG316,
|
||||
TransferFunction::St428 => TF_ST428,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue