《UnityShader入门精要》shader基础光照模型

it2025-09-27  4

标准光照模型

标准光照模型 = 自发光 + 环境光 + 漫反射 + 高光反射

自发光:自身材质颜色 环境光:场景所有物体都使用该环境光颜色 漫反射:光照到物体上然后随机散射到各个方向的辐射度,不用视角位置 高光反射:让物体看起来有光泽,跟视角位置有关系

漫反射模型

入射光方向设置为L,法线方向设置为N,光方向和法线夹角为θ 注意:光方向向量和法线方向向量都为单位向量 1.兰伯特模型 Diffuse = (光源颜色*物体漫反射颜色)max(0,N·L) N·L = |N|·|I|cosθ = cosθ

2.半兰伯特模型 Diffuse = (光源颜色*物体漫反射颜色)(0.5(N·L)+0.5) 把N·L的结范围从[-1,1]映射到[0,1]范围内。原本亮度为1的地方,乘以0.5变成了0.5,加上0.5就又成了1,而原本光照强度为0的地方,就变成了0.5,原本为负数的地方,也能保证为大于0了。

半兰伯特模型比兰伯特模型更真实,半兰伯特模型没有物体依据,只是一个视觉加强技术。

高光反射模型

图中: V是视觉方向 gloss是光泽度

phong模型 反射向量R = 2(N·L)N-L 也可以用rereflect()函数 Specular = (光源颜色*物体高光颜色)max(0,V·R)gloss(指数)blinn模型 H是半角向量,通过V和L取平均后归一化得到 Specular = (光源颜色*物体高光颜色)max(0,V·H)gloss(指数)
最新回复(0)