在之前的文章中,我们实现了URP下的雾效支持。
在上一篇文章中,我们解析了 URP 下统一不同平台下的z值是怎么实现的
我们在这篇文章中,看一下Unity在URP下线性雾是怎么实现的。
主要是使用上一篇统一好的z值,来计算雾效因子
传入上一篇文章中,统一好的[0,Far]之间的z值。
公式:
f
a
c
t
o
r
=
e
n
d
?
z
e
n
d
?
s
t
a
r
t
=
z
?
?
1
e
n
d
?
s
t
a
r
t
+
e
n
d
e
n
d
?
s
t
a
r
t
factor = \frac{end-z}{end-start} = z ·\frac{-1}{end - start} + \frac{end}{end-start}
factor=end?startend?z?=z?end?start?1?+end?startend?
start:线性雾开始的位置
end:线性雾结束的位置
使用saturate(x),把计算的结果限制到[0,1]之间,小于0返回0,大于1返回1
这里线性插值顺序有点反直觉
雾效强度越大,越偏向物体实际颜色
雾效强度越小,越偏向雾的颜色