使用directx在几何着色器中的顶点法线

我在使用几何着色器的DirectX 11中。

是可以计算顶点法线? 每个顶点只有一个像段? 在几何着色器?

我做了每个脸的顶点法线,这是我得到的, 在这里输入图像描述

我在书中的练习需要类似的东西 在这里输入图像描述

计算顶点法线是一个复杂的过程,因为您需要拥有所有的事件面,并在需要时能够“分割垂直”。 这实际上并不适合几何着色器。 面法线适合几何着色器,因为你只关心原始本身。

有什么理由你必须在GPU上做到这一点?

DirectXMesh库实现了许多不同的顶点正常计算,但在CPU上工作。 具体请参见ComputeNormals 。 通常,所有的几何数据都是在构建时调整的,以包含顶点法线,切线或双切线(如果需要)等所需的东西。

以下是一些参考资料:

  • S Jin,RR Lewis和D West; “顶点法线计算的algorithm比较”。 链接
  • Nelson Max,“从方面法线计算顶点法线的权重” 链接
  • Max Wagner,“生成顶点法线” 链接