基本材质
l:灯光方向 n:法线方向 v:视口方向(摄像机方向)
兰伯特材质:
公式:
n:顶点法线的单位向量
l:平行光方向取反的单位向量
所以 (
且
)
为什么取来计算平行光的反射呢?因为顶点法线和光正对时是0° 也就是全部反射,顶点法线和光成90°时完全不反射为0,与
契合
Phong材质
:高光(金属光泽)。摄像机方向和反射反向进行点成
BlinnPhong:相比Phong性能更好(不用计算反射)。灯光方向和摄像头方向的半角和法线方向进行点成
Specular:
菲尼尔(Fresnel)
:不算一种材质,更像是增加边缘光的效果
WrapLight
:(早期的模拟皮肤的方法,有点3S的效果)
L、N的点成是兰伯特材质,W是控制通透性的参数
Minnaert:月球表面、天鹅绒、黑丝
Banded:卡通
一边死黑(兰伯特思想[-1,1];): (dot(n,l)*layer)/layer
不死黑(半兰伯特思想[0,2]/2=>[0,1]) : ((dot(n,l)+1)*layer)/layer
边界过度效果:
Back模型
SSSValue:法线乘以的值。以此控制法线向量的长度(方向不变,大小会变),和光向量相加得到 模拟透色的射线向量(背面效果)
ModelNormal * SSSValue + NormalizeLightDirection
正面配合 wrap+Phong
各向异性(广泛用于头发)AnisotropyKajiyaKay:
TBN:X=-Z();Y= ;Z=X (TBN坐标相对世界坐标)
OrenNayar模型:
参考论文:Generalization ofLambert's Refectance Model
=两根绿色向量的模的乘积(一种代替方法,只是为了好算)
这种代替方法:摄像机在同一个下的效果是一样的,不同的
下就不一样。
=和法线夹角最大的(光方向和视口方向两者中)
=和法线夹角最小的
PBR材质
:辐射通量——单位面积通过光的量
:欧米噶,立体角(三维空间中某个点向多个方向的集合,单位sr)——1SR代表面积=圆半径
,即一个球面度
每一度对应圆的长度:
球面坐标到笛卡尔坐标:
辐射能量:Q=hv(h= 焦每秒)和光的频率有关
辐射强度:。即单位立体角的辐射通量。
辐射度:每秒每单位面积的击中
辐射照度:光打在一点对四面八方进行辐射,这个总和叫辐射照度。
Color= *灯光强度*dot(法线,灯光)具体如图:
是入射,
是反射
(保证能量守恒)
漫反射(F是菲尼尔,Metallic是金属度);
=漫反射+镜面反射(对应如下的lb、c-t项)
=
*BaseColor(兰伯特项)
=
(在UE里
,
来表示)
以下是求
,
是粗糙度(法线的凌乱程度)
(r是粗糙度)
新菲尼尔:
两个G是考虑入射光线和反射光线被遮挡时多次反弹仍然弹不出去的情况。
v相当于x是个变量
IBK和纹理映射有关,暂时用一个值替换。
以上的兰伯特项+D项、F项、G项目合成一个公式