ClearCoat翻译过来貌似叫清漆,一般是用来实现多层材质的,最常见的就是车漆、塑料以及额外的贴膜层。
ClearCoat思路比较简单,你可以理解为在物体原本材质的上层多了一层ClearCoat材质:

这两层对光源光线有着不同的影响,所以我们的思路是分别计算ClearCoat层的直接光照,间接光照,最后再根据菲涅耳项和原本的材质做一层混合(在低端平台URP是通过ClearCoat的IOR来修改baselayer属性)。
ClearCoat本应该和StandartLit写在一起的,但是本轮子主要用于展示,所以就分开写了。而且这里假设清漆层的normal和base层相同。
无ClearCoat:


Clearcoat最重要的一点是要遵循能量守恒,一般是根据F项计算能量。
效果:


清漆材质扩展:支持额外的normalMap,MaskMap等