欢迎光临散文网 会员登陆 & 注册

Unity学习笔记 Vol.82 运用光线投影遮罩在HDRP制作高质量灯具光照效果

2021-02-10 18:02 作者:NXL2  | 我要投稿

内容概要

·光线投影遮罩的介绍

·在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


Unity学习笔记 Vol.82 运用光线投影遮罩在HDRP制作高质量灯具光照效果的评论 (共 条)

分享到微博请遵守国家法律