From ae243fcd588833355cb4931a38648dee6a1be384 Mon Sep 17 00:00:00 2001 From: Jarrod Doyle Date: Sat, 10 Aug 2024 11:50:46 +0100 Subject: [PATCH] Fix lightmap colour blending --- project/materials/base.tres | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/project/materials/base.tres b/project/materials/base.tres index 5eb9e9b..3d9f105 100644 --- a/project/materials/base.tres +++ b/project/materials/base.tres @@ -3,14 +3,33 @@ [sub_resource type="Shader" id="Shader_eumy4"] code = "shader_type spatial; render_mode blend_mix,depth_draw_opaque,cull_back,unshaded; -uniform sampler2D texture_albedo : source_color,filter_linear_mipmap,repeat_enable; -uniform sampler2D lightmap_albedo : source_color,filter_linear_mipmap,repeat_enable; +uniform sampler2D texture_albedo : filter_linear_mipmap_anisotropic,repeat_enable; +uniform sampler2D lightmap_albedo : filter_linear_mipmap_anisotropic,repeat_enable; uniform float lightmap_modulation; +float srgb_to_linear_e(float input) { + float output; + if (input <= 0.04045) { + output = input / 12.92; + } + else { + output = pow((input + 0.055) / 1.055, 2.4); + } + return output; +} + +vec3 srgb_to_linear(vec3 input) { + vec3 output; + output.r = srgb_to_linear_e(input.r); + output.g = srgb_to_linear_e(input.g); + output.b = srgb_to_linear_e(input.b); + return output; +} + void fragment() { vec4 albedo_tex = texture(texture_albedo,UV); vec4 lightmap_tex = texture(lightmap_albedo,UV2) * lightmap_modulation; - ALBEDO = albedo_tex.rgb * lightmap_tex.rgb; + ALBEDO = srgb_to_linear((albedo_tex * lightmap_tex).rgb); } "