目的:
参考《GPU Gems》,在UE4中尝试以重现光盘Shader,并对书中的方法进行解析,改进,批评。
参考:
观察:
我越来越意识到观察现实的重要性。
相机和肉眼看到的衍射图案有差别,会多出一些彩虹,很可能是光盘衍射出来的光在相机上发生了类似衍射的现象。
大致的X型图案
有些角度形成的收缩圆弧和放射圆弧图案
分析:
显然与实际效果有差距,这里面有不少原因。我们从原理分析到实现。
简单说,此Shader由两部分组成:各向异性高光+光栅衍射
1.各向异性
这是个十分宽泛的词语,顾名思义。在图形学上通常指从不同方向看,颜色不一样。至于怎么不一样,随便。
所以下面采用什么样的公式,都无所谓,能看就行。
《GPU Gem》提供的公式:
其中
是的,不像光照模型中的H,这个向量没有除以2,也没有归一化。算咱们善于变通,接受你先。
注意:类似之前的改写,我改写了冗余部分,但公式本身不变。
其中hiliteColor不知道是哪国语言,我猜出来了,意思为背景色,即各向异性高光材质的底色。
看公式要从外向里看,我们接下来看到函数:
用Geogebra或者Mathematica画图,其图像为:
只要注意到其特征,也就是x越接近0,y越为1。也就是说,咱公式里面的自变量越为0,这个各向异性高光就越好。
再看