unity放话在2021年以前全面放弃Enlighten。
关于虚幻4和unity的光照渲染问题
两个软件各启动5分钟,只要眼睛还在,就能立即分辨出优劣。但需要说明的是虽然虚幻的渲染算法是公认的强,但unity也有主动示弱的嫌疑。在虚幻四中,默认自动开启全局渲染和光照探针,而在unity中需要自己设置这些。虽然同样情况下表现还是虚幻4更好一些,但绝不是那种过分的差距。
关于全局光照
由于目前的硬件技术限制,实时全局光照的性能十分有限,仅限于小规模渲染之中,而且噪点抑制效果并不如意。目前绝大部分项目都在使用预计算全局光照。这是一种将直接光线和间接光线保存到光照贴图中,在渲染时与光源光线再计算的一种巧妙方法。
但是这种技术只能应用到静态物体,因为他会提前生成光照贴图,如果移动了物体,物体附近的其他表面会留下光照贴图的光线阴影。
所以这种技术一般应用在静态场景的渲染上。
解决动态物体光照计算的方式是使用光照探针,它可以存储附近物体的反射光,当动态物体经过时,供给动态物体结合光源使用
关于光追
光追需要硬件提供支持,最低需要gtx2060显卡,2019年下旬出的gtx1650、1660系列虽然性能不错,但是阉割了光追的支持,价格再香也要慎买!!!。
光追的实现方式是将直接或间接光线的路径保存下来,再与场景中的光源合并计算。相比全局光照不需要预计算,也不需要保存光照贴图。在超级显卡的加持下性能与效果表现直线上升。nvdia官网有一段实时渲染的光追视频,几乎算是史诗级的仿真。
如果想使用unity进行光追开发,需要在github下载光追版本的unity编辑器,并且保证显卡是gtx2060以上。
光源设置
光源的Inspector中,Mode的设置决定了该光源的计算状态。
属性 | 说明 | Lighting窗口中的对应设置 |
Realtime | 运行时计算光源光照,不将该光源引入预计算 | Realtime Light |
Mixed | 部分光源可以预计算 | Mixed Lighting |
Baked | 引擎计算该光源所有的进行bake | Lightmapping settings |
[此处设置图片与详解]
开启全局照明
unity 默认的光线是互相不影响的,如果需要启动全局照明,需要在lighting->scene中的Realtime Light 的 Realtime GlobalIllumination 勾选
Environment:环境的参数设置
Skybox Material
:天空盒材质
Sun Source
:设置太阳,可以指定一个平行光作为太阳,然后该平行光的旋转角度会影响其亮度和颜色
Environment Lighting:环境光照的设置Source
:环境光照来源
Skybox:源于天空盒
Gradient:源于一个从地平线到穹顶的颜色渐变
Color:来源于单色
Intensity Multiplier
:环境光照明强度强化Ambient Mode
:环境光照明模式
Baked:烘焙在光照贴图中
Realtime:实时
Environment Reflections:环境反射的设置Source
:环境反射来源
Skybox:来源于天空盒
Custom:来源于一个自定义的Cubemap(方盒贴图)
Resolution
:环境反射贴图分辨率Compression
:是否压缩环境反射贴图Intensity Multiplier
:环境反射强度强化Bounces
:环境反射计算次数
Realtime Lighting:关于实时光照烘焙的设置Realtime Global Illumination
:是否进行实时光照烘焙
Mixed Lighting:关于混合光照烘焙的设置Baked Global Illumination
:是否进行混合光照烘焙Lighting Mode
:光照模式
Baked Indirect
Distance Shadowmask
Shadowmask
Subtractive
Lightmapping Settings:关于光照烘焙的通用设定Lightmapper
:选择光照烘焙器
Enlighten:这是常用的一种烘焙器,unity声称2021年完全删除该烘焙器
Progressive CPU:这是新版的一种烘焙器,它会先烘焙摄影机可见区域,再烘焙其他区域,所以预览较快
Progressive GPU(Preview):
Indirect Resolution
:间接光照分辨率(每单位长度多少体素(texel)),数值越高,光照细节越高Lightmap Resolution
:光照贴图分辨率(每单位长度多少体素),通常设置为Indirect Resolution的10倍左右Lightmap Padding
:修正两个物体的Lightmap之间的距离,以避免颜色渗透Lightmap Size
:光照贴图大小(最大4096)Compress Lightmaps
:是否压缩光照贴图Ambient Occlusion
:是否烘焙环境光遮罩Final Gather
:是否对最后一次GI光线反射后的光照结果再进行一次FG计算,勾选上会有较好的质量表现,但烘焙时间会增加Directional Mode
:
Directional:
non-directional:
Indirect Intensity
:间接光照的强度Albedo Boost
:Lightmap Parameters
:设置详细的光照贴图参数(可以使用几个默认值,或者创建新设置,应该是给熟手用的吧)
Other Settings:其他设置Fog
:添加场景雾效
Color:雾效颜色
Mode:雾效衰减模式
Density:雾效密度
Halo Texture
:Halo Strength
:Flare FadeSpeed
:
光源设置
Type : 光源类型
属性 | 说明 | 范围 |
Point light | 点光源 | 以自身为中心的球体 |
Spot light | 聚光灯 | 自身为顶点的锥形 |
Directonal light | 有向平行光 | 全局 |
Area | 区域光,需要bake | 比如灯箱,属于有型发光体 |
Color
:灯光颜色Intensity
:灯光强度Indirect Multiplier
:在计算该灯光所产生的间接光照时的强度倍乘Shadow Type
: 阴影设置
Soft Shadows 使用带虚化边缘的阴影
Hard Shadows 使用普通阴影
No Shadows 无阴影
Baked Shadow Angle
:烘焙阴影的角度Realtime Shadows
:实时阴影
Strength:实时阴影强度
Resolution:阴影贴图分辨率
Bias:阴影偏移,当增加这个值来修正一些阴影的artifact
Normal Bias:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias的使用场合)
Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影
Cookie
:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果Cookie Size
:调整Cookie贴图大小Draw Halo
:灯光是否显示辉光,不显示辉光的灯本身是看不见的Flare
:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果Render Mode
:渲染模式Culling Mask
:遮罩,对哪些物体层起作用
使用静态全局光照的步骤
- 开启灯光全局参考,设置光源Inspector面板中的Mode 为 Mixed 或 Bake
- 将受影响物体的static勾选,将其变为静态物体。
- 打开Lighting窗口->Scene, 勾选Mixed Lighting与Realtime Lighting中的 Global Illumination
- 点击Lighting窗口最下方的 Generate Light 生成光照贴图。(如果是反复修改,可以先选择清空贴图)
光照探针 使用动态全局光照的步骤 Probes
- 开启灯光全局参考,设置光源Inspector面板中的Mode 为 Mixed 或 Bake
- 打开Lighting窗口->Scene, 勾选Mixed Lighting与Realtime Lighting中的 Global Illumination
- 将受影响的物体Inspector中的Contribute Global勾选,然后设定Receive Global Illumination为Light Probes
- 在场景中的某个物体上添加Light Probe Group组件,并点击Edit Light Probes,将那些光线拾取器放置在恰当位置
- 点击Lighting窗口最下方的 Generate Light 生成光照贴图。(最好先选择清空贴图,再生成)
反射探针 使用步骤