Help calculating normals for gertsner wave (mesh deformation ocean)

I am attempting to calculate normals to get proper lighting for the waves but no matter what I try it doesnt work I dont understand is it a roblox bug or am I getting the calculations wrong.
here is my function:

local function gertsnerwave(position, direction, wavelength, steepness, amplitude, speed, timee)
	
	local w = math.sqrt(9.8 * (2 * math_pi / wavelength))
	
	

	
	-- direction input is already normalized
	--local Q = steepness
	local Q = steepness/(w * amplitude) 
	local A = amplitude
	local D = direction

	local phase = speed * 2/wavelength

	
	local f = w*direction:Dot(Vector2.new(position.X, position.Z)) + phase * timee
	
	local sine = math_sin(f)
	local cosine = math_cos(f)
	
	local Position = Vector3_new(
		Q * A * D.X * cosine,
		A * sine,
		Q * A * D.Y * cosine
	)
	
	local WA = w * A
	local S0andC0 = w * direction:Dot(Vector2_new(position.X, position.Z) ) + phase * timee
	local S0 = math_sin(S0andC0)
	local C0 = math_cos(S0andC0)
	
	local B = Vector3_new(
		1 - (Q * (direction.X * direction.X) * WA * S0),
		direction.X * WA * C0,
		-(Q * direction.X * direction.Y  * WA * S0)
	)
	local T = Vector3_new(
		- (Q * direction.X * direction.Y * WA * S0),
		direction.Y * WA * C0,
		1 - (Q * (direction.Y * direction.Y) * WA * S0)
	)
	
	local N = Vector3_new(
		-(direction.X * WA * C0),
		1 - (Q * WA * S0)
		-direction.Y * WA * C0
	).Unit
	
	
	return CFrame.fromMatrix(Position, B.Unit,N, T.Unit)
	--return CFrame_new(Position)
end

this is the result i get:

its really weird and metallic and isn’t supposed to look like that
this is the source where I am getting the formula from:

Binormal formula:

Tangent formula:

Normal formula:

Keep in mind that in these calculations Y and Z (XZY) are switched places so my function seems a bit different but all the calculations should be on spot?

Edit: Note that the different texture is just a native glass roblox texture and it clearly isn’t supposed to look like that

What I am trying to replicate: Summed Gerstner/Trochoidal waves in roblox! - YouTube