Unity中Shader的全局照明简介

文章目录

  • 前言
  • 一、什么是全局照明GI
    • 1、全局照明(Global Illumination),简称GI
    • 2、指既考虑场景中直接光源的光照(Direct Light)又考虑经过场景中其他物体反射后的光照(Indirect Light)的一种渲染技术,使用全局照明能够有效地增强场景地真实感
    • 3、全局照明 = 直接光照(Direct Light)+ 间接光照(Indirect Light)
  • 二、Unity中的GI方案
    • 1、预计算实时GI
    • 2、烘培GI
  • 三、Unity中的GI烘培系统
    • 1、Enlighten
    • 2、Progressive CPU Lightmapper(推荐用这个,效果稳定)
    • 3、Progressive GPU Lightmapper(个人感觉烘培起来超级快)
  • 四、Unity中的GI技术
    • 1、Baked Indirect
    • 2、Shadowmask / Distance Shadowmask
    • 3、Subtractive
    • 注意:
  • 五、Unity中使用上面方案的效果
    • 没有使用烘培方案时的效果
    • 1、使用预计算实时GI后的效果
    • 2、使用 Baked Indirect 的效果
    • 3、使用 Subtractive 的效果
    • 4、使用 Shadowmask / Distance Shadowmask


前言

Unity中全局照明简介


一、什么是全局照明GI

1、全局照明(Global Illumination),简称GI

2、指既考虑场景中直接光源的光照(Direct Light)又考虑经过场景中其他物体反射后的光照(Indirect Light)的一种渲染技术,使用全局照明能够有效地增强场景地真实感

3、全局照明 = 直接光照(Direct Light)+ 间接光照(Indirect Light)

使用全局照明前效果:
Unity中Shader的全局照明简介_第1张图片
使用全局照明后效果:(更加符合现实中的效果)
Unity中Shader的全局照明简介_第2张图片


二、Unity中的GI方案

1、预计算实时GI

预计算实时GI是在实时显示前把需要的数据进行烘培好,然后在运行时再进行读取以便和实时的光源进行互动

2、烘培GI

烘培GI是把光源对场景中静态物体的光照效果提前烘培到一张张的光照纹理中,然后再把光照纹理采样到物体表面以产生全局光照效果的方式


三、Unity中的GI烘培系统

1、Enlighten

旧版中的烘培技术,2020LTS是最后一个支持此技术的版本,在2021.1中完全移除

2、Progressive CPU Lightmapper(推荐用这个,效果稳定)

渐进式烘培,基于路径追踪的烘培系统。Unity后续版本中大力推广的烘培系统。

3、Progressive GPU Lightmapper(个人感觉烘培起来超级快)

类似于Progressive CPU,只不过是在GPU上进行烘培计算,不过由于具体采样算法的不同,在效果上会有细微的差别。

在Unity中,可以在 Lighting 窗口中修改

Unity中Shader的全局照明简介_第3张图片


四、Unity中的GI技术

1、Baked Indirect

只把间接光照烘培,直接光照还是实时的效果

2、Shadowmask / Distance Shadowmask

都是属于ShadowMask,可选使用按距离渲染的ShadowMask

3、Subtractive

把 直接光照 和 间接光照都烘培

在Unity中,可以在 Lighting 窗口中修改

Unity中Shader的全局照明简介_第4张图片

注意:

这个 GI 方案需要在场景设计前确认,在确认之后这个场景的Shader都按这个标准来写


五、Unity中使用上面方案的效果

没有使用烘培方案时的效果

1、使用预计算实时GI后的效果

Unity中Shader的全局照明简介_第5张图片

2、使用 Baked Indirect 的效果

只把间接光照烘培,直接光照还是实时的效果

Unity中Shader的全局照明简介_第6张图片

3、使用 Subtractive 的效果

把 直接光照 和 间接光照都烘培

Unity中Shader的全局照明简介_第7张图片

这个情况下,需要把光的模式修改为 Mixed

Unity中Shader的全局照明简介_第8张图片

我们会发现,被设置为静态的物体,既不被 直接光照 影响 也 不被 间接光照 影响了

4、使用 Shadowmask / Distance Shadowmask

都是属于ShadowMask,可选使用按距离渲染的ShadowMask

对于Shadowmask来说,又点特殊,会烘培出两张贴图
一张 光照的 ,一张 阴影的
Unity中Shader的全局照明简介_第9张图片

  • 1.使用 Shadowmask 的效果(影子被烘培了,但是会随着光线角度变亮变淡)
    Unity中Shader的全局照明简介_第10张图片
  • 2.使用 Distance Shadowmask 的效果(在指定距离内使用实时阴影,在范围外使用和烘培阴影)

Unity中Shader的全局照明简介_第11张图片
在设置的距离范围内时(实时的阴影):

在设置的距离范围外时(正常烘培的Shadowmask阴影):

你可能感兴趣的:(Unity,unity,游戏引擎)