Issue with normal display from shader computation

Godot Version

4.2.2 stable

Question

I have an issue with godot 4.2 shader code, the light is displaying view dependent effect, even though I stuck the render mode to lambert, which is the simplest lighting function has it does not have specular? the data seems correct until i pipe it into the normal:


shader_type spatial;
render_mode diffuse_lambert;
#include "res://LIBRARY/script/shader/common.gdshaderinc"
uniform sampler2D text;

void fragment()
{
	TBN = getTBN(TANGENT, BINORMAL, NORMAL);
	vec3 raydir = getTangentSpaceViewVector(TBN, VIEW);	//ray in tangent space
	circle2d circle = makecircle(vec2(0.5, .50), 0.3);									// circle of vec2 position in xz and radius 
	const vec2 rayorigin = vec2( UV.x, 0 );												//position at the surface in xz
	raydir = normalize(raydir);
	
	vec2 raydir2d = ray3dtoray2dXZ(raydir);
	vec2 t = gptintersectionRW(raydir2d, rayorigin, circle);								//2d circle intersection
	t = tdivide(t, raydir);
    // Calculate the intersection points to 3d
    vec3 p11 = vec3(rayorigin, 0.0) + t.x * raydir;
    vec3 p12 = vec3(rayorigin, 0.0) + t.y * raydir;
	vec3 N11 = vec3( (p11.xz - circle.center.xy) ,0);
	vec3 N12 = vec3(-(p12.xz - circle.center.xy),0);
	
	vec3 result = vec3(0.0);					// black color if not intersecting
	
	if( t.x > 0.0 && t.y > 0.0 )				// in front of camera
	{
		result = vec3(1.0, 0.0, 0.0);			// debug red color, if intersecting cylinder1
		float ptmin = min(t.x,t.y);				//resolve closest, should always be t.x for cyliner
		vec2 UVoffset = UV+vec2(raydir.x,raydir.y)* ptmin;	//sample position
		
	 //UVoffset = UV+raydir.xy * t.y;	//sample position
		result = texture(text, UVoffset).xyz;
	}
	
	N11 = vec3(-N11.x,N11.y,-N11.z);
	NORMAL = normalize(N11.xzy);
	ALBEDO = result;
}

I don’t get it, when I pass the normal to albedo to see the result, they are correctly static, the issue should not come from the normal themselves.