前言

临近个人独立项目第一次技术演示,终于也是蚌埠住开始优化场景效果了,说到场景效果,避不开的就是GI,这篇文章就是记录下整个GI系统的架构和开发过程

GI知识体系

直接光照

出于项目风格以及资源可复用性考虑,采用了风格化PBR的光照模型,当然现在风格化还没开始做,就先用Unity URP的Lit代替了

间接光照

环境光

IBL

HDR的CubeMap,同时用作天空盒和烘焙GI时的天光

SSAO

增强画面立体感最廉价的方案就是AO,所以也使用了Unity URP的SSAO,做了下DownSample,减少SSAO Effect RT消耗

Shadow Map

基于Unity自带的级联阴影,由于俯视图的特殊性,所以基本上2级的级联阴影就够用了,之所以在俯视图的情况下还是选用级联阴影,是为了兼容玩家们转动到第三人称视角的情况

漫反射

Light Map && Shadow Mask

出于对Unity自带GI系统的使用阴影,选择了广受好评的Bakery插件,简单直观的参数设置和详细的文档说明使用起来事半功倍

Image26

烘焙模式为Shadow Mask(Distance),逻辑为:

  • 静态物体使用LightMap作为LightColor,在ShadowDistance内直接基于级联ShadowMap进行阴影渲染,在ShadowDistance外采样ShadowMask进行阴影渲染,交界处Unity将会自动混合ShadowMask和实时阴影结果
  • 动态物体直接基于级联ShadowMap进行阴影渲染

以同时支持静态LightMap + 静态阴影 + 动态阴影

Light Probe

基本上算是标配了,动态物体接收预烘焙静态光照,使用 LightingTools.LightProbesVolumes 自动化摆放光照探针

大世界Irradiance Volume

TODO

镜面反射

TODO

待续

里程碑

2022.12.14

image-20221214233142655