🗺️ 法線マップの生成(ソーベルフィルタ)

// ソーベルフィルタで勾配を計算
const dx = (tr + 2*r + br) - (tl + 2*l + bl);
const dy = (bl + 2*b + br) - (tl + 2*t + tr);

// 法線ベクトルを計算
const nx = -dx / 255.0 * strength;
const ny = -dy / 255.0 * strength;
const nz = 1.0;

// 正規化してRGBに変換
const len = Math.sqrt(nx*nx + ny*ny + nz*nz);
const normalizedX = (nx / len * 0.5 + 0.5) * 255;
const normalizedY = (ny / len * 0.5 + 0.5) * 255;
const normalizedZ = (nz / len * 0.5 + 0.5) * 255;
深度の勾配から法線ベクトルを計算
RGBに変換して法線マップとして使用