February 19, 2023

Unity Shader 学习 Normal Blend

Unity Shader 学习 Normal Blend

多张法线贴图叠加的问题的处理办法,参考资料

目前效果最好的解决办法

Coding

1
2
3
4
5
6
7
8
9
float3 BlendNormal(float3 n1, float3 n2)
{
// float3 t = n1 * float3(2, 2, 2) + float3(-1, -1, 0); // (n1 + 1) / 2
float3 t = n1 + float3(0, 0, 1);
// float3 u = n2 * float3(-2, -2, 2) + float3(1, 1, -1); // (n2 + 1) / 2
float3 u = n2 * float3(-1, -1, 1);
float3 r = normalize(t * dot(t, u) - u * t.z);// * 0.5 + 0.5;
return r;
}

关于本文

本文作者 Master Gong Sheng, 许可由 CC BY-NC 4.0.