Unity学习笔记 Vol.82 运用光线投影遮罩在HDRP制作高质量灯具光照效果
内容概要
·光线投影遮罩的介绍
·在Unity HDRP中如何设置
Unity 2018.3.6f1 + HDRP 4.10
光线投影遮罩(Light Cookie)
光线投影遮罩是用于遮挡部分光源的遮罩,以控制发射的光线形状。它们也可以被称为“遮光片”、“剪影”或“标识”,所用的名称取决于应用行业和具体用例。
为什么要使用光线投影遮罩?
·光线投影遮罩能很好控制阴影
·为实时点光源提供性能的保证
光线投影遮罩种类
·2D纹理(2D Texture)
·立方体贴图(Cubemap)
2D纹理
·一般用于聚光灯(Spot Light)
·内置渲染管线 - 灰度投影遮罩(Grayscale)
·HDRP - 有色投影遮罩(Colored)
-> 彩色边缘效果、折射效果
获取参考2D Texture Light Cookie
Standard Assets
Demo
聚光灯2D纹理制作流程:(使用Photoshop)
1.径向模糊(Radial Blur)来制作圆形和非对称形状
2.颜色渐变(Color Gradient)滤镜生成径向衰减(Radial Attenuation)和更清晰的彩色细节
3.纹理边缘是100%黑色

Texture Type在HDRP时设置为Default,在默认时设置为Cookie

立方体贴图
使用Unity渐进式光照贴图生成(Unity Progressive Lightmapper)
制作过程
·准备烘焙用球体
·对球体进行烘焙
·使用反射探针生成HDR立方体贴图
·将立方体贴图用作光线投影遮罩
准备烘焙用球体
1.准备一个法线朝内的球体

2.将灯具放在球体中心,添加一个点淘汰(Point)
3.为投射阴影(灯具)和接收光线(球体)的几何体设置Lightmap Statics标签,Layer还是Default

4.请确认所有灯具 、光源对象Transform清零
5.通过Window >Rendering >Lighting Settings,打开光照设置,启用Baked Global Illumnation

6.找到球体中的光照(LIght)游戏对象,将模式(Mode)设置为Baked
7.将Indirect Multiplier设置为0
->只获取直接光照

8.找到Shadow ->Baked Shadow,设置Radius为 0.015
->模拟较大光源,创建柔和阴影

9.回到光照设置窗口->光照贴图设置(Lightmapping Settings)
10.根据硬件配置,设置Lightmap Resolution为1024
->分辨率越高,烘焙细节越多,烘焙时间越长

对球体进行烘焙:
1.在光照设置窗口点击“生成光照”(Generate Lighting),进行烘焙

使用反射探针生成HDR立方体贴图:
1.在球体内添加反射探针(Light -> Reflection Probe)
2.设置捕获设置(Capture Settings)->Near Clip Plane为0.01 ->确保近端剪裁在球体之内

3.设置灯具Layer为ReflectionProbeMask
4.找到反射探针->捕获设置(Capture Settings),取消勾选Culling Mask ->ReflectionProbeMask


5.再次点击Generate Lighting,进行烘焙探针获取光照信息

6.烘焙生成的反射探针数据作为立方体贴图的原料

7.反射探针的最大分辨率在HDRP配置文件有全局设置

8.将反射探针生成文件(一般为ReflectionProbe-0.exr)使用Photoshop打开,进行编辑
9.立方体贴图是6X1纹理形式,UV结构映射

10.添加曝光度(Exposure)图层,调节曝光度负数值改进显示效果

11.另存为EXR或PNG图片
12.可以将颜色模式降低为8位,减小文件大小
13.立方体贴图生成基本完成
渐进式光照贴图的限制:
1.光线与材质
·渐进式光照贴图不支持多数HDRP的高级着色器
·为烘焙过程创建独立的材质组,烘焙专用的预制件
·模拟灯罩半透明效果:材质Opaque ->Transparent
·发射(Emission)
·设置间接采样(Indirect Samples)> 2000
·设置反弹值 (Bounce)为1

2.缝隙
·提高阴影烘焙半径(Baked Shadow ->Radius)
·使用间接光线反弹(Bounce)

3.条带效应
·原因:通过反射探针获取投影遮罩
·特别在处理光强度比较低的发光道具
·建议:调高光强;提取光照贴图,整合到立方体贴图里
DCC工具渲染立方体贴图的优点:
·模型本身就在工具中制作,不会影响Unity
·几何体可使用高级修改器离线渲染,制作平滑阴影
·专用工具把对象渲染到贴图上,自动处理烘焙过程
·离线渲染器可在短时间内创建无噪声纹理
立方体贴图
使用3ds Max + Arnold生成

在Unity HDRP中如何设置
·投影遮罩导入
·光照设置
·材质设置
投影遮罩导入
1.将立方体贴图导入Assets相关文件夹
2.内置渲染管线

3.高清晰渲染管线 HDRP:

4.HDRP配置文件中,所有投影遮罩最大全局分辨率设置

5.在场景中一处墙面放置与创建投影遮罩相同的Wallamp对象
6.Wallamp ->LightCookie,勾选色温(Color Temperture)
7.将Cookie设置为wallamp_light_cookie

8.在光照设置窗口,点击Generate Lighting旁箭头,选择Clear Baked Data清理数据
9.点击Generate Lighting重新生成光照数据

光照设置:
1.曝光度(Exposure)
·属于PPS V2功能
·Settings ->Scene
Settings ->Post
Process Volume ->Auto Exposure

·单位是EV100,对应ISO 100曝光值
·常见阳光场景EV 15
·月光场景EV -5
·室内光照 EV 4~7
·Unity 支持EV -9~9
·游戏开发常用方法:
·将阳光强度设置为 5000~10000lux
·设置Exposure Compensation 为1.0
·减小Minimum(EV)
2.色调映射(Tone mapping)
·属于PPS V2功能
·Settings ->Scene
Settings ->Post
Process Volume ->Color Grading

·学院色彩编码系统 (ACES)
·可以使用Contrast或Gamma等参数,降低对比度并提高中间色调
3.屏幕空间环境遮蔽(SSAO)
·属于PPS V2功能
·Settings ->Scene
Settings ->Post
Process Volume ->Ambient Occlusion

4.光线强度单位
·流明(Lumen)它的光照是没有方向的
·坎德拉(Candela)
·勒克斯(Lux at Meter)
·EV
·聚光灯(Spot Light)需要小心处理流明
·建议:打开Reflector模式

4.色温(Color temperature)
·处理白炽灯模型(单位:开尔文Kelvin)
·使用颜色滤镜(Filter)模拟不同光照效果(彩色玻璃、反射板、彩色胶体)

4.色温(Color temperature)- 白平衡
·Color Grading ->White Balance

5.最大平滑度(Max Smoothness)
·Light ->Space

6.阴影(Shadow)
·同时启用实时和烘焙投影遮罩的阴影
·点光源实时阴影比聚光灯阴影消耗高,烘焙投影遮罩比较高效
·点光源使用实时阴影时,Light ->Shadows ->Shadow Map,调整阴影近端平面(Near Plane),避免灯具几何体出现阴影剪裁
·平面需要延伸到灯具外,否则产生双重阴影及相关瑕疵
·HDRP实时阴影高质量过滤模式(消耗高)
·HDRP Settings -> Render Pipeline Supported
Features -> Default Frame Settings Fro Camera -> Render
·设置Lit Shader Mode 为Forward

·设置Shadows ->Filtering Qualities -> ShadowQuality 为High

材质设置:
1.发射率(Emissivity)
·模拟光线透过灯罩性能最低且最简单方法:
·不透明(Opaque)表面类型+自发光纹理(Emissive Texture)
·针对低端硬件


2.透明表面(Transparent Surface)
·模拟透明玻璃常用方法
·透明(Transparent)表面类型+标准材质(Standard Material)
·Base Map(或Base Color)设置Alpha或自定义纹理来控制透明度
·透明部分分离为单独游戏对象
·启用折射中出现(Appear in Refraction)
·启用从后向前的渲染顺序(Back Then Front Rendering)
·启用双面(Double Sided)可以避免分类问题

3.半透明度(Translucency)
·仿制非常厚的磨砂玻璃或半透明材质(方法一):
·不透明(Opaque)表面类型+半透明材质(Translucency Material)
·创建Diffusion配置调整半透明度
·使用厚度图(Thickness Map)半透明效果像平面

4.带折射的透明表面(Transparent surface with refraction)
·仿制非常厚的磨砂玻璃或半透明材质(方法二):
·透明度(Transparency)+折射率(Refraction)+透明度(Transmission)
·消耗较高,针对高端平台设备

5.几何高光抗锯齿(Geometric specular anti-aliasing)
·针对传统抗锯齿比较难解决的问题:
·高频光滑表面产生的镜面抗锯齿效果
·HDRP材质表面选项提供Geometric Specular AA

了解更多:《Create High-Quality Light Fixtures in Unity》
https://docs.unity3d.com/Manual/ExpertGuides.html