ProjectS中的全局光照系统(开发中)
前言
临近个人独立项目第一次技术演示,终于也是蚌埠住开始优化场景效果了,说到场景效果,避不开的就是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插件,简单直观的参数设置和详细的文档说明使用起来事半功倍
烘焙模式为Shadow Mask(Distance),逻辑为:
- 静态物体使用LightMap作为LightColor,在ShadowDistance内直接基于级联ShadowMap进行阴影渲染,在ShadowDistance外采样ShadowMask进行阴影渲染,交界处Unity将会自动混合ShadowMask和实时阴影结果
- 动态物体直接基于级联ShadowMap进行阴影渲染
以同时支持静态LightMap + 静态阴影 + 动态阴影
Light Probe
基本上算是标配了,动态物体接收预烘焙静态光照,使用 LightingTools.LightProbesVolumes 自动化摆放光照探针
大世界Irradiance Volume
TODO
镜面反射
TODO
待续
里程碑
2022.12.14
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 烟雨迷离半世殇的成长之路!
评论