diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2025-04-17 11:07:37 -0600 |
|---|---|---|
| committer | KiritoDv <kiritodev01@gmail.com> | 2025-04-17 11:07:37 -0600 |
| commit | c044335ef3daa0c7757e9cc4112eebc5b5d98bae (patch) | |
| tree | 65038ecdf0c1e9448be765ae2d67cadf75ec5414 | |
| parent | d75c912b8716f64feda877affc0b5fe9001bd853 (diff) | |
Reverted linear conversion on shaderbumpLUS130425
| -rw-r--r-- | port/shaders/metal/default.shader.metal | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/port/shaders/metal/default.shader.metal b/port/shaders/metal/default.shader.metal index a771ba10..63d89fd3 100644 --- a/port/shaders/metal/default.shader.metal +++ b/port/shaders/metal/default.shader.metal @@ -147,6 +147,17 @@ float random(float3 value) { return fract(sin(random) * 143758.5453); } +float4 fromLinear(float4 linearRGB) { + float3 threshold = float3(0.0031308); + float3 gamma = float3(1.0 / 2.4); + float3 scale = float3(12.92); + float3 offset = float3(1.055); + float3 subtract = float3(0.055); + float3 higher = offset * fast::pow(linearRGB.xyz, gamma) - subtract; + float3 lower = linearRGB.xyz * scale; + return float4(select(higher, lower, linearRGB.xyz < threshold), linearRGB.w); +} + fragment float4 fragmentShader(ProjectedVertex in [[stage_in]], constant FrameUniforms &frameUniforms [[buffer(0)]] @if(o_textures[0]) , texture2d<float> uTex0 [[texture(0)]], sampler uTex0Smplr [[sampler(0)]] @@ -277,8 +288,8 @@ fragment float4 fragmentShader(ProjectedVertex in [[stage_in]], constant FrameUn @if(o_invisible) texel.w = 0.0; @end - return texel; + return fromLinear(texel); @else - return float4(texel, 1.0); + return fromLinear(float4(texel, 1.0)); @end }
\ No newline at end of file |
