From 2edd7a2333ebc36f19f8726cb2d2f79aa501cb18 Mon Sep 17 00:00:00 2001 From: yum Date: Fri, 31 Oct 2025 15:40:20 -0700 Subject: begin sketching out "undeform" codepath --- vertex_deformation.slang | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'vertex_deformation.slang') diff --git a/vertex_deformation.slang b/vertex_deformation.slang index 42cf6b8..63804de 100644 --- a/vertex_deformation.slang +++ b/vertex_deformation.slang @@ -35,7 +35,7 @@ DifferentialPair dp_y_out = fwd_diff(fun)(dp_y, __VA_ARGS__); \ DifferentialPair dp_z_out = fwd_diff(fun)(dp_z, __VA_ARGS__) -#define R3R3_DEFORM_NORMAL_AND_TANGENT(normal, tangent) \ +#define R3R3_DEFORM_NORMAL_AND_TANGENT(normal, tangent) \ float3x3 jacobian = float3x3( \ float3(dp_x_out.d.x, dp_y_out.d.x, dp_z_out.d.x), \ float3(dp_x_out.d.y, dp_y_out.d.y, dp_z_out.d.y), \ @@ -46,6 +46,18 @@ normal = mul(itjac, normal) * sign(jac_det); \ tangent = mul(jacobian, tangent) +#define R3R3_UNDEFORM_NORMAL_AND_TANGENT(normal, tangent) \ + float3x3 jacobian = float3x3( \ + float3(dp_x_out.d.x, dp_y_out.d.x, dp_z_out.d.x), \ + float3(dp_x_out.d.y, dp_y_out.d.y, dp_z_out.d.y), \ + float3(dp_x_out.d.z, dp_y_out.d.z, dp_z_out.d.z) \ + ); \ + float jac_det = determinant(jacobian); \ + float3x3 inv_jac = inverse(jacobian, jac_det); \ + float3x3 trans_jac = transpose(jacobian); \ + normal = mul(trans_jac, normal) * sign(jac_det); \ + tangent = mul(inv_jac, tangent) + // Syntactic sugar - wraps the previous three macros. #define R3R3_NORMALS(xyz, normal, tangent, fun, ...) \ R3R3_DECLARE_BASIS_VECTORS(xyz); \ -- cgit v1.2.3