From 46b30ed654b00746c131e575232f6f012d4e5004 Mon Sep 17 00:00:00 2001 From: yum Date: Mon, 3 Nov 2025 11:57:59 -0800 Subject: fix normals in deformed ray marcher --- ray_marching.cginc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'ray_marching.cginc') diff --git a/ray_marching.cginc b/ray_marching.cginc index f6f4bab..fe48f2c 100644 --- a/ray_marching.cginc +++ b/ray_marching.cginc @@ -105,10 +105,12 @@ void ray_march(inout v2f i) { #if defined(_VERTEX_DEFORMATION) // TODO optimize, we don't need to pass in `dummy`. - float3 dummy = 0; - float3 tmp_pos = ro; - undeform_normal(tmp_pos, dummy, rd); - rd = normalize(rd); + { + float3 dummy = 0; + float3 tmp_pos = ro; + undeform_normal(tmp_pos, dummy, rd); + rd = normalize(rd); + } #endif const float kMinDist = _Ray_Marching_Min_Dist; @@ -157,6 +159,13 @@ void ray_march(inout v2f i) { } #endif +#if defined(_VERTEX_DEFORMATION) + { + float3 tmp_pos = ro; + deform_normal(tmp_pos, lclNorm, lclTan); + } +#endif + i.objPos = lclPos; i.normal = lclNorm; i.tangent.xyz = lclTan; -- cgit v1.2.3