From 01f6b9a1ce73b96921e401957bc66cd24fe70264 Mon Sep 17 00:00:00 2001 From: coco875 <59367621+coco875@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:39:45 +0000 Subject: [PATCH] fix background color (#460) * fix background color * reduce print about false problem * Update memory.c --- assets/shaders/directx/default.shader.hlsl | 9 ++++++++- assets/shaders/metal/default.shader.metal | 9 ++++++++- assets/shaders/opengl/default.shader.fs | 9 ++++++++- src/racing/memory.c | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/assets/shaders/directx/default.shader.hlsl b/assets/shaders/directx/default.shader.hlsl index 980becb8c..be6637155 100644 --- a/assets/shaders/directx/default.shader.hlsl +++ b/assets/shaders/directx/default.shader.hlsl @@ -300,7 +300,14 @@ float4 PSMain(PSInput input, float4 screenSpace : SV_Position) : SV_TARGET { @end @if(o_grayscale) - float intensity = (texel.r + texel.g + texel.b) / 3.0; + float p = float(0x19); + float r = texel.r*float(0x55); + float g = texel.g*float(0x4B); + float b = texel.b*float(0x5F); + float intensity = (r+g+b) / 256.0; + intensity *= 255.0/256.0; + intensity = pow(intensity, (p * 1.5 / 256.0) + 0.25); + intensity *= 31.0/32.0; float3 new_texel = input.grayscale.rgb * intensity; texel.rgb = lerp(texel.rgb, new_texel, input.grayscale.a); @end diff --git a/assets/shaders/metal/default.shader.metal b/assets/shaders/metal/default.shader.metal index a771ba10c..9a59fb87e 100644 --- a/assets/shaders/metal/default.shader.metal +++ b/assets/shaders/metal/default.shader.metal @@ -260,7 +260,14 @@ fragment float4 fragmentShader(ProjectedVertex in [[stage_in]], constant FrameUn @end @if(o_grayscale) - float intensity = (texel.x + texel.y + texel.z) / 3.0; + float p = float(0x19); + float r = texel.r*float(0x55); + float g = texel.g*float(0x4B); + float b = texel.b*float(0x5F); + float intensity = (r+g+b) / 256.0; + intensity *= 255.0/256.0; + intensity = pow(intensity, (p * 1.5 / 256.0) + 0.25); + intensity *= 31.0/32.0; float3 new_texel = in.grayscale.xyz * intensity; texel.xyz = mix(texel.xyz, new_texel, in.grayscale.w); @end diff --git a/assets/shaders/opengl/default.shader.fs b/assets/shaders/opengl/default.shader.fs index 404caae62..65e965404 100644 --- a/assets/shaders/opengl/default.shader.fs +++ b/assets/shaders/opengl/default.shader.fs @@ -188,7 +188,14 @@ void main() { @end @if(o_grayscale) - float intensity = (texel.r + texel.g + texel.b) / 3.0; + float p = float(0x19); + float r = texel.r*float(0x55); + float g = texel.g*float(0x4B); + float b = texel.b*float(0x5F); + float intensity = (r+g+b) / 256.0; + intensity *= 255.0/256.0; + intensity = pow(intensity, (p * 1.5 / 256.0) + 0.25); + intensity *= 31.0/32.0; vec3 new_texel = vGrayscaleColor.rgb * intensity; texel.rgb = mix(texel.rgb, new_texel, vGrayscaleColor.a); @end diff --git a/src/racing/memory.c b/src/racing/memory.c index 002492f41..679bbf69e 100644 --- a/src/racing/memory.c +++ b/src/racing/memory.c @@ -155,7 +155,7 @@ Gfx* segmented_gfx_to_virtual(const void* addr) { } static uintptr_t get_texture2(size_t offset, const course_texture* textures) { - if (!(offset & 0x5000000)) { + if (!((offset >= 0x5000000) && (offset < 0x6000000))) { return NULL; } size_t totalOffset = 0x5000000;