Problem with normal maps at night

Godot Version

Godot 4.3 stable

Question

I’m trying to use normal maps for rocks and it works but it works strange when I add canvas modulate to make night (I use Point light 2D for campfire) I don’t know what I did wrong..
If you have any ideas how to fix that, please, tell me

What do you expect it to look like? What about this image is strange?

The rocks seem too dark, and I would like them to look more pleasant and not stand out so much against the grassy tiles. I want to add realistic light using normal maps, but when I added canvas modulation to make night, they became too dark, and I don’t know what to do with it because I want to keep the day and night cycle while also maintaining realistic light.

I know this is an old thread, but I had the same issue today and I fixed it by myself. And if anyone else runs into this, I hope this helps.

One way to fix it is by adding more lights, which isn’t ideal, but it can help. The ultimate solution for me was lowering the Normal Map’s strength.

I couldn’t find any settings for it, for some reason Godot doesn’t have it implemented yet. Crazy, right? (I’m new to Godot, so maybe I just didn’t find it yet)

So, as a sane person, I just decided to use Shaders instead, and would you look at that, the documentation did most of the work for me: CanvasItem shaders — Godot Engine (stable) documentation in English

TL;DR here’s the shader (2D only, beg me for a 3D version)

shader_type canvas_item;

uniform float normal_map_strength;

void light() {
float cNdotL = max(0.0, dot(NORMAL, LIGHT_DIRECTION));
float normal_map = mix(1.0, cNdotL, clamp(normal_map_strength, 0.0, 1.0));
LIGHT = vec4(LIGHT_COLOR.rgb * COLOR.rgb * LIGHT_ENERGY * normal_map, LIGHT_COLOR.a);
}

You can unclamp the normal map strength variable for some trippy normal maps ; )