summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2025-04-17 11:07:37 -0600
committerKiritoDv <kiritodev01@gmail.com>2025-04-17 11:07:37 -0600
commitc044335ef3daa0c7757e9cc4112eebc5b5d98bae (patch)
tree65038ecdf0c1e9448be765ae2d67cadf75ec5414
parentd75c912b8716f64feda877affc0b5fe9001bd853 (diff)
Reverted linear conversion on shaderbumpLUS130425
-rw-r--r--port/shaders/metal/default.shader.metal15
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