在查看源代码引擎时,我遇到了Phong Shading。这种描述听起来很像Tessellation。但当我查找时,我并没有找到任何直接比较这两者的东西。现在,在DirectX中,镶嵌不像HLSL中的Phong着色那样使用。有什么关系呢?我应该用哪一个呢?
发布于 2013-05-21 09:16:08
Phong明暗处理与DX11细分没有直接关系,但因为它们都可以平滑照明细节,所以我可以理解您可能会感到困惑。
细分根据某些参数(通常是摄影机距离)动态增加几何细节。这可以提高照明质量(也许这与phong有关?)以及剪影细节。着色优势(不是轮廓细节)实际上可以在像素着色器中完全模拟,而不需要细分。
Phong着色是一种像素着色技术。它不会影响几何细节。它类似于标准的OpenGL Gouraud shading,不同之处在于不是在曲面的像素上插值照明值,而是在曲面上插值法线并在每个像素处重新规格化。这提供了更精确的光照结果,通常称为“逐像素光照”,而不是“逐顶点光照”。
您可以在管道的不同部分合理地(可能通常是)同时使用这两种效果。
发布于 2013-11-14 02:45:05
正如Justin提到的那样,Phong Shading是一种着色例程,用于每像素更精确的照明。细分用于通过动态生成更多三角形来改变网格中的几何细节,以获得更高的曲面细节和更平滑的结果。它可以成功地用于动态细节水平,取决于到相机的距离或屏幕上的大小。
为了补充这个主题,我想我应该提到有一个称为Phong Tessellation的镶嵌算法,它从Phong着色中获得灵感,并将此算法应用于镶嵌。这意味着顶点将使用类似的法线插值进行修改,并实现高细节轮廓以及更好的曲面细节。Phong Tessellation有一个比常见的其他局部细分算法PN-三角形更简单的着色器,我用它在我参与的一个游戏中实现了更高细节的头部。
Phong Tessellation
https://stackoverflow.com/questions/16660613
复制相似问题