光照计算orm
光照计算主要目的是 为了获得 高频 中频 低频 信息htm
高频信息是细节,中低频是总体控制游戏
例如低模 自己是中低频, normal map diffuse map 增长了高频信息ip
高光也是高频信息it
AO 遮蔽,高频io
例如在计算雾效果时,简单的线性距离深度变化是 低频, 再加上基于高度变化,基于太阳光朝向颜色,基于距离的 mipmap, 增长了高频细节渲染
光照系统分为:map
预先计算反射
实时计算技术
光照系统的预先计算总体流程
光照烘焙涉及到4个方面
光源,物体,材质,UV或者probe
光照烘焙贴图,基于对场景中静态物件进行UV展开,将光照信息写入
写入信息,能够包括直接光, 间接光,阴影,的颜色和强度
光照贴图还能够包括主要光方向, directional lightmap 模式中,包括了主要光方向信息,用于实时计算的时候,结合normalmap 计算diffuse color , 而不是将light map 做为环境光处理
有了主要光方向信息,结合normal map就能够进行更多的计算
总体技术涉及到:
材质系统,光源,烘焙技术
光照最终效果,涉及到阴影,直接光,间接光 三个效果
在Unity中材质的光照模型主要能够分为,lambert phong 和 最新的 pbr 物理基于着色系统
材质模型:
half lambert 0.5*(N * L) + 0.5
材质也能够toon shading normal * L normal * V 在texture 上采样光带
pbr 微表面, fresnel
光模型
Unity中的光,分为三种,bake烘焙光,实时光,和mixed模式光
Unity中的烘焙系统,有Enlighten 基于辐射度的烘焙计算,和 progressive 基于光线追踪的烘焙计算
其中enlighten 有两种烘焙,纯静态光照贴图烘焙和 实时GI烘焙
其中烘焙GI光照,能够使用光照贴图,也能够使用light probe来收集,其中光照贴图,分为纯Diffuse贴图和 支持 normal map 的 directional lightmap。
light probe 和 光照贴图区别就是,light probe 收集的是空间光照信息,而light map 收集的是 物体表面的光照信息
reflection probe 反射光照 probe
光照效果:
软影子 宽高光, AO
Unity中的光照方案:
全烘焙,只使用enlighten 烘焙光照贴图,使用纯烘焙光,光照贴图上包含 直接光,间接光,阴影信息
全实时光,使用 cascade shadow map 技术产生4级实时阴影, 使用pbr 材质模型,实时光进行光照计算
mixed light, 分为三种模式
只烘焙 间接光 ,
烘焙阴影,
烘焙距离阴影,近处使用实时阴影
subtractive 模式,直接光 间接光 阴影都烘焙,实时阴影和烘焙阴影采用 subtractive模式混合
纯 light probe + 实时光照, light probe 提供间接光照信息