逼真的金属着色器


13

如何创建一个好的金属着色器?

对于不同的金属,说或多或少地腐蚀/生锈等等。

我知道与普通材料的不同之处在于,金属应该使镜面反射光“着色”,但是例如当我用金做到这一点时,它看起来只是“黄色”,而根本不是金属。

任何帮助表示赞赏!


1
您的问题听起来很简单,很具体,但实际上并非如此。您不能仅使用着色器来复制金属外观。这样做需要适当的纹理,因此您需要镜面光泽的纹理,如果金属完全不规则,则可能需要凹凸贴图,等等。如果金属进行了任何程度的抛光,则需要将环境(或其某些讽刺画)反映为好。这不是一个简单的“这里有一些金属着色器代码”问题。
Nicol Bolas 2012年

还要研究各向异性反射的问题,这种现象通常出现在拉丝金属中。
David Gouveia,2012年

@David:看起来真的很酷,目前也许对我来说有点过大了,但我一定会检查一下并使用它,如果可以的话:-)
Valmond 2012年

@Nicol感谢您的评论,我完全可以使用纹理,我的“标准”着色器由3个组成:漫反射,辉光和一个包含高光,Spec-power和反射的控制图(来自立方体图)
Valmond

快速搜索变成了许多不同的金属着色器和直接从马的嘴:developer.download.nvidia.com/shaderlibrary/webpages/...
帕特里克·休斯

Answers:


4

我最近为正在进行的游戏创建了用于清洁金属和拉丝金属的着色器,我对结果感到非常满意。

清洁金属: 我的实验中最重要的功能是使用立方体贴图进行环境反射。我使用实时渲染到纹理的环境来实现它们,但是静态图像通常也可以提供良好的效果,并且更容易模糊它们。第二个最重要的功能是菲涅耳效应,它使物体的轮廓更好。例如,这使球看上去更圆滑。不一定需要使用镜面照明,因为立方体贴图可以直接提供高光。HDR渲染对于使立方体贴图反射看起来更好也很重要。

拉丝金属: 对于拉丝金属,使用刷子纹理很容易获得良好的效果,类似这样,以及各向异性照明。对于各向异性照明,您可以从网上找到教程,但是我以blinn-phong为基础实现了自己的教程,但是从半向量中我消除了80%的切线方向。这意味着除了模型中的法线外,您还需要切线或切线。对于金属拉丝金属,环境反射非常棘手。您可以基于切线/切线方向从多维数据集中的多个方向进行采样,但是要获得良好的结果,可能需要大量采样。但是,由于使用多个光源的纹理和各向异性照明已经看起来非常不错,因此不一定需要这样做。在我的情况下,最终结果如下所示:

拉丝金属材料


6

正如Nicol在评论中所说,高质量的金属着色器包含很多东西。为了获得最佳效果,您的渲染器必须是伽玛校正的,并使用基于物理的着色模型(尤其请参见Naty Hoffman在该链接上发表的两篇论文)。

考虑到这些问题,制造金属材料的典型方法是具有非常低或不存在的漫反射色和高镜面反射率,范围从50%到100%(在线性颜色空间中)。如您所述,对于某些金属,镜面反射将被着色。

由于金属的外观完全是镜面的,很少或没有漫射,因此反射将非常重要。如果仅镜面反射点光源,则由于缺少其余的环境,您将获得黑色材料的外观(即使非常粗糙的金属也将反射其周围环境的模糊图像)。获得更多反射的典型方法是使用立方体贴图。但是,实时图形中的逼真的反射是一个巨大的话题,并且有很多不同的方法。


谢谢,这正是我想要的!当我使用立方体贴图进行反射时,也许我应该使用一种环境照明作为非常高的镜面照明?
Valmond 2012年

@Valmond我不确定“将某种环境照明用作非常高的镜面照明”是什么意思。我的意思是,镜面反射应同时包括光源和环境中的所有其他事物(加在一起),其中“其他”部分可以实现为立方体贴图。一个典型的方法是生成一些模糊的立方体贴图不同的粗糙度如图所示这里
内森·里德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.