summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2025-03-16 17:16:38 -0600
committerKiritoDv <kiritodev01@gmail.com>2025-03-16 17:16:38 -0600
commit916e4b53a28b857c8caf99a87b5a57f23f0bd605 (patch)
tree1b1a4ba89bbd468ede44e658e65b0fe3be1d2805
parentc062a87e98fe4e9957b3453c68163738a7b8cb79 (diff)
Added linear conversion on metal shader
-rw-r--r--port/shaders/metal/default.shader.metal11
1 files changed, 9 insertions, 2 deletions
diff --git a/port/shaders/metal/default.shader.metal b/port/shaders/metal/default.shader.metal
index a771ba10..7445c059 100644
--- a/port/shaders/metal/default.shader.metal
+++ b/port/shaders/metal/default.shader.metal
@@ -147,6 +147,13 @@ float random(float3 value) {
return fract(sin(random) * 143758.5453);
}
+float4 fromLinear(float4 linearRGB){
+ bool3 cutoff = linearRGB.xyz < float3(0.0031308, 0.0031308, 0.0031308);
+ float3 higher = 1.055 * pow(linearRGB.xyz, float3(1.0 / 2.4, 1.0 / 2.4, 1.0 / 2.4)) - float3(0.055, 0.055, 0.055);
+ float3 lower = linearRGB.xyz * float3(12.92, 12.92, 12.92);
+ return float4(lerp(higher, lower, cutoff), 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 +284,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