虚幻5渲染编程
在UE5.02版本中,延迟渲染管线的光照模型数量上限为16个,难以满足部分复杂项目需求。为突破该限制,需对GBuffer结构进行优化调整。此前已有文章介绍过ShadingModelID的数据传递机制,可作为技术参考。
通过优化,目前已将光照模型支持数量提升至18个,理论上可扩展至256甚至1024个,但实际应用中数十个已足够使用。
UE5 GBuffer架构背景
Unreal Engine 5目前存在两套GBuffer管理方案:一套继承自UE4,另一套为UE5全新设计。随着版本迭代,旧版方案将逐步被淘汰。本次优化基于UE5新版GBuffer系统进行。
技术实现方案
定位到FGBufferInfo RENDERCORE_API FetchLegacyGBufferInfo(const FGBufferParams& Params)函数,可查看GBuffer格式配置。传统R8G8B8A8格式下,ShadingModelID仅能利用GBufferB的Alpha通道前4位,最多支持16种模型。
通过将GBuffer格式调整为R16G16B16A16,Alpha通道扩展至16位,可分配8位或12位用于存储ShadingModelID,显著提升容量。
修改后,ShadingModelID被压缩至GBufferB的前8位,实现高效传输。
扩展与集成
完成格式调整后,新增ShadingModel可沿用虚幻引擎标准流程进行注册与集成,兼容性良好。
Enjoy it.
2022/6/17
参考资料
YivanLee:虚幻5渲染编程(材质篇)[第六卷: Material Shading Model ID数据的传递过程]
[2]YivanLee:虚幻五渲染编程(Graphic篇)【第六卷: Customize GBuffer of UnrealEngine5】
声明:发布此文是出于传递更多知识以供交流学习之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与我们联系,我们将及时更正、删除,谢谢。
鸣谢:感谢作者的授权转载,欢迎大家投稿,一起分享交流游戏开发技术。
作者:YivanLee
原文:https://zhuanlan.zhihu.com/p/530229233

