Fix lightmap colour blending

This commit is contained in:
Jarrod Doyle 2024-08-10 11:50:46 +01:00
parent 1539d1910d
commit ae243fcd58
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
1 changed files with 22 additions and 3 deletions

View File

@ -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);
}
"