各向异性镜面照明
正如我们在上一篇文章中看到的那样,Phong和Blinn-Phong照明模型提供了逼真的镜面照明的简单,令人信服的模拟。 让我们扩展其功能以处理更复杂的曲面类型。
第3.5章
了解照明模型,创建各向异性镜面类型
各向异性类型可模拟曲面中的定向凹槽并拉伸“镜面反射”。 例如,对于拉丝金属,效果非常好。 让我们看看他们这次有什么花招。
哦,是的,请检查此报价:
“在未来的食谱中,我们将研究如何使用该食谱的概念来实现其他效果,例如拉伸反射和头发,但是在这里,您将首先学习该技术的基础。”
请注意,我认为“食谱”是一个较差的单词选择,而作者是逗号的忠实拥护者。 不过,那很酷。 每个人都喜欢逗号。 我猜是食谱。
您需要做的第一件事是各向异性法线贴图的纹理。

继续像往常一样设置一个新的着色器,材质和场景,但是在我给您着色器的代码之前,让我非常快地解释一下有关此着色器的一些奇怪的事情。
该着色器充分利用了自定义照明功能和曲面功能。 我们在上一个BlinnPhong着色器中做了类似的操作,但是surf()函数实际上仅用于设置表面的基础颜色。 我们在本书中尚未看到的另一件事是使用第二个结构。 在这种情况下, SurfaceAnisoOutput结构用于从各向异性法线贴图获取每个像素的信息。 它也用作在照明功能和表面功能之间进行交互的方式。 我认为这是一项强大的技术。
确保阅读以下代码中的注释-有些数学不是显而易见的。
