1.天空盒
2.反射探针
3.光照探针
1.天空盒
天空盒同时为间接光中的漫反射和镜面反射提供光源信息a.漫反射: 通过球谐光照计算b.镜面反射: 通过反射探针计算
天空盒具体的工作流程:1).漫反射a.烘培时: unity会采样天空盒, 计算它对场景各店的平均照射b.运行时: ShadeSH9(normal)中的颜色就包含了天空盒的贡献c.特点: 柔和, 方向性的天空光2).镜面反射a.烘培时: unity利用天空盒生成反射探针(立方体贴图)b.运行时: 高光材质采样反射探针, 得到精确的天空反射c.特点: 锐利, 精确的天空倒影
2.反射探针
1).反射探针是什么?反射探针是一个在空间中特定位置的"小相机", 它会拍摄其周围环境的360度图像(通常存储为Cubemap立方体贴图), 用于模拟物体表面的反射效果2).它解决什么问题?具有光滑或金属材质的物体需要反射周围环境来显得真实; 如果只有天空盒来反射, 当物体在室内或被其他物体包围时, 反射内容会出错(比如室内物体却反射了室外天空)3).工作原理a.放置探针: 使用GameObject -> Light -> Reflection Probe在场景中放置b.捕获环境: 探针会通过渲染(烘培或实时)生成一张CubeMapc.影响物体: 物体在着色时, 会根据其材质的光滑度和金属度来采样离它最近的反射Cubemap,从而计算出反射颜色

反射探针的三种类型:1).Bakeda.工作方式: 在光照烘焙时预先渲染Cubemap, 只捕获静态物体b.性能:一次烘焙,运行时零开销。c.适用场景: 静态环境, 如室内场景、不会改变的建筑物; 动态物体不会被捕获到反射贴图中2).Realtimea.工作方式: 在运行时每帧(或按特定间隔)渲染Cubemap, 可以捕获所有物体(包括动态物体)b.性能: 开销很大, 因为每渲染一次就要画6次场景c.适用场景: 有动态反射需求的场景, 比如镜子大厅、有活动物体的水面; 使用时需非常谨慎3).Custom类似于Baked, 但你可以手动控制它何时烘焙, 并且可以手动指定其Cubemap资源, 功能更灵活
3.光照探针
1).它是什么?光照探针是一组在场景空间中放置的采样点的集合, 每个点都记录(烘焙)了该位置来自整个环境的间接光照信息(包括颜色和强度)2).它解决什么问题?在Unity中, 静态物体(标记为 Static)的光照可以通过光照贴图来烘焙, 效果很好且性能开销低; 但是, 对于非静态的动态物体(如角色), 它们无法使用静态光照贴图如果没有光照探针, 动态物体只会受到场景中的实时光源(如 Directional Light)影响, 在进入烘焙的暗部区域时, 它会显得非常亮和不自然, 就像"自带光环"一样, 与场景格格不入光照探针的作用就是让这些动态物体也能感受到周围烘焙好的间接光照, 从而自然地融入环境3).工作原理a.放置探针使用GameObject -> Light -> Light Probe Group在场景中关键位置(如角落、明暗交界处)放置一组光照探针b.烘焙在Lighting窗口中进行光照烘焙(Generate Lighting); 烘焙过程中, Unity会计算每个探针位置的光照信息并存储下来c.运行时插值当一个动态物体(其渲染器上必须挂载有 Light Probe Group 组件,默认就有)在场景中移动时, Unity会找到离它最近的几个光照探针, 并根据距离插值计算出该物体当前应受到的光照这个计算出的光照值会叠加在物体原有的着色上
-> 布置技巧a.在光照变化明显的区域(如墙角、走廊入口)需要更密集的探针b.在开阔且光照均匀的区域可以稀疏一些c.确保动态物体的移动路径能被探针覆盖