我正在尝试编写一个简单的着色器,用正弦波移动所有顶点。
v.vertex.y += sin(_Time.y * _Speed + v.vertex.x * _Amount * v.vertex.z) * _Distance;
问题是在移动它们之后,法线是错误的,因此没有实时阴影。我搜索了很多,发现我需要使用假邻居重新计算法线。这些实现都不是针对 Unity Shaderlab 的,所以我不能只是复制和粘贴它们,而且我对着色器代码的了解非常基础,所以我无法将我发现的内容转换为我需要的内容。
任何人都可以帮助我在移动顶点后重新计算法线的内容和方法吗?