我花了一些时间研究这个并找不到一个好的解决方案。
我的问题是找到一种在镶嵌着色器中创建法线的有效方法。我在程序上为洞穴系统创建了一个网格,然后实时对其进行细分以提高分辨率。我的大部分系统都在工作,但我正在努力寻找一种合理的方法来创建法线。
这是我的论文的链接,它为感兴趣的人描述了完整的系统:
https://cs.anu.edu.au/courses/CSPROJECTS/15S2/Reports/Tony_Oakden_Report.pdf
我使用三平面着色器来合成纹理坐标,并使用高度图来变形镶嵌评估着色器中的网格。变形工作正常,但我发现可靠创建法线的唯一方法是在几何着色器中,它可以工作,但 GS 真的太慢了。
我有一个想法,我可以使用 TextureGather 从高度图中拾取四个纹素,并使用它们找到该点的近似法线(获取 x 和 y 渐变,然后获取边缘向量,然后是叉积和归一化等得到正常)但我不能得到好的结果。我在网上找到了一些指向这个问题的链接,但没有具体的答案。
似乎在着色器中为程序生成的网格合成法线是一个棘手的问题,我想知道这些类型的问题是否有已知的解决方案我可以查看。人们也可以指出我的任何建议、链接、技术、博客将不胜感激。