0

我在查看源引擎时遇到了Phong Shading 。描述听起来很像Tessellation。但是当我查找它时,我并没有发现任何直接将两者进行比较的东西。现在 DirectX Tessellation 不像 HLSL 中的 Phong 着色那样使用。有什么不同?我应该使用哪一个?

4

2 回答 2

3

Phong 着色与 DX11 曲面细分没有直接关系,但因为它们都可以平滑照明细节,所以我知道你会感到困惑。

Tessellation 根据一些参数(通常是相机距离)动态增加几何细节。这可以提高照明质量(也许这是与 phong 的关系?)以及轮廓细节。着色优势(不是轮廓细节)实际上可以完全在像素着色器中模拟而无需细分。

Phong 着色是一种像素着色技术。它不影响几何细节。它类似于标准的 OpenGL Gouraud 着色,除了不是在表面的像素上插值光照值,而是在表面上插值法线并在每个像素处重新归一化。这提供了更准确的光照结果,通常称为“每像素光照”,而不是“每顶点光照”

您可以合理地(并且可能通常)在管道的不同部分同时使用这两种效果。

于 2013-05-21T01:16:07.510 回答
1

正如 Justin 提到的那样,Phong Shading 是一种着色例程,用于更准确地为每个像素提供照明。Tessellation 用于通过动态生成更多三角形来改变网格中的几何细节,以实现更高的表面细节和更平滑的结果。它可以成功地用于动态细节级别,具体取决于到相机的距离或屏幕上的大小。

为了补充这个主题,我想我应该提到有一种称为 Phong Tessellation 的 Tessellation 算法,它从 Phong Shading 中汲取灵感并将该算法应用于 Tessellation。这意味着使用类似的法线插值修改顶点,并获得高细节轮廓以及更好的表面细节。Phong Tessellation 比常见的其他局部曲面细分算法 PN-Triangles 具有更简单的着色器,我使用它在我参与的一款游戏中实现更高细节的头部。

Phong 镶嵌

于 2013-11-13T18:45:04.943 回答