Skip to content

Crystal

393字约1分钟

2022-07-17

由于时间紧迫,宝石材质交由同事完成,这里简单罗列一下各部分计算。


WholeNodeWholeShow

Reflection Vector

WholeNodeWholeShow

用公式表达其实就是:sin(NoV)Rsin(NoV)^{R},如右图所示,可以大致区分出各个高光区域的形状。

Prism Generator

WholeNodeWholeShow

注意这里大量使用了BumpOffset节点:BumpOffset

根据源码注释,其作用就是将采样坐标根据视线方向移动一下。那么三次不同深度的偏移采样之后Append得到一个带视觉深度效果的Mask纹理,用于模拟宝石内部的多重折射。

output = Coordinate + Eye.xy * (Height - ReferencePlane) * HeightRatio

Prism Control

PrismControl 这里主要控制色相和饱和度,使用Desalination节点:

Lerp(Input,dot(Input,LuminanceFactors)),Fraction)

External Rainbow

WholeNodeWholeShow

这里使用以上结果对外圈着色,新增两个Mask采样用来表达闪光部分。

WholeNodeWholeShow

Directional Fresnel

WholeNodeWholeShow

这部分使用遮罩和方向纹理模拟切割面高度。作为BumpOffset 的Height输入。

Internal Rainbow

WholeNodeWholeShow

这里的计算分为两个部分:

高光区域

WholeNodeWholeShow

高光色彩

WholeNodeWholeShow

在相乘之后稍微做一下Fresnel和色相以及饱和度的变换即可得到内部虹光。 叠加上External Rainbow就是宝石的自发光部分了

WholeNode

自此宝石材质的大部分表现已经完成了。Opacity和Refraction部分见材质连线即可。

贡献者: Astroite