超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen(3)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen

第一个成功的方法是实现纯体素圆锥跟踪,整个场景在运行时是体素化的,就像经典的「Interactive Indirect Illumination Using Voxel Cone Tracing」一文中的那样实现。

栅格化的三角形
光线步进卡 (高度场)
体素圆锥追踪
光线步进卡继续与体素锥跟踪

而这种方法的主要缺点是,由于场景几何体的过度融合而导致泄漏,这种现象在跟踪粗低映射时尤其明显。

第一种降低图像泄漏的技术是,对全局距离场进行跟踪,只在靠近表面的地方进行体素采样。在采样过程中,随着采样范围扩大积累不透明度,停止追踪时,不透明度将达到1。这样总是在几何体附近进行精确采样,实现降低图形泄露的目的。

第二种技术是对网状内部进行体素化。这大大减少了在较厚的壁处的泄露,不过这样也会造成一些过度遮挡。

其他的实验包括跟踪稀疏体素位块和每面透明通道的体素。这两个实验的目的都是为了解决射线方向体素插值问题,即对于不垂直于壁面的射线,轴对齐的实心壁将变得透明。

体素位砖是将每个体素存储一个位在一个8x8x8的砖块中,以指示给定的体素是否为空。然后使用两级 DDA 算法进行光线步进。具有透明面的体素相似,但 DDA相同,并且沿着光线方向透明度不断上升。结果表明,这两种方法在表示几何体方面的效果都不如距离域,而且速度相当慢。
带有透明度的体素

最早的跟踪合并表示的方法是,对全局距离字段和使用全局每个场景卡的着色命中进行锥形跟踪。即遍历一个 BVH,找出场景中的哪些卡影响采样点,然后根据锥形足迹对每张卡的适度滑步水平进行采样。

本文放弃了这种方法,因为当初没有考虑只用它来表示远场轨迹,而是把它看作是高场光线步进的直接替代。有点讽刺的是,这种被抛弃的方法与我们两年后最终达成的解决方案最为接近。

第一个演示


到这里,已经可以产生一些相当不错的结果了:


尽管如此,还是遇到了很多图形泄漏的问题,而且在这个简单的场景中,即使在一个高端 PC GPU 上,性能也不是很理想。

为了解决泄漏问题,以处理更多的实例、在PS5上以8毫秒以下时间完成处理。这个demo堪称是真正的催化剂。

与以往的方案相比,第一个变化也是最大的变化是,用距离场跟踪取代高度场跟踪。

为了遮蔽生命点,从卡片上插入生命点的光线,因为距离场没有顶点属性,这样,未覆盖的区域只会导致能源损失,而不是泄漏。

出于同样的考虑,将体素锥形追踪改为全局距离场射线追踪。

与此同时,我们还做了很多不同的优化,并通过缓存方案对Lumen的不同部分进行了时间分流。值得注意的是,如果没有锥体追踪,我们必须更积极地去噪和缓存追踪,但这又是一个漫长而复杂的故事。

这是我们发送第一个演示后的最终结果,在PS5上一直低于8ms,包括所有共享数据结构的更新,如全局距离字段。目前的性能表现甚至更好了,比如最新demo的完成时间接近4毫秒,质量上也有明显的改进。
image.png


尾声


总之,本文对整个Lumen进行了全面重写,还有许多不同的想法没有实施。另一方面,有些东西被重新利用。就像最初我们用卡片作为追踪表示,但现在用来作为缓存网格表面的各种计算方式。和软件追踪类似,开始是我们主要的追踪方法,主要是圆锥体追踪,但最后成为一种缩小规模和支持具有大量重叠实例的、复杂重度场景的方法。

参考资料:https://knarkowicz.wordpress.com/2022/08/18/journey-to-lumen/https://advances.realtimerendering.com/s2022/index.html#Lumenhttps://www.youtube.com/channel/UC9V4KS8ggGQe_Hfeg1OQrWw

相关文章
|
7月前
|
人工智能 中间件 开发者
线下活动速递丨AI 原生应用开源开发者沙龙·杭州站
了解 AI 原生应用开发的前沿趋势和核心产品技术,全面 get 典型应用场景及硬核实战经验。
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
2033 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
7月前
|
人工智能 自然语言处理 数据可视化
阿里云建站——云小智AI建站收费价格,免费送CN域名
阿里云万小智AI建站,提供基础版698元/年、标准版980元/年、企业版1980元/年,买即赠CN域名。支持AI建站、多语言、可视化编辑,集成云资源,限时送AI灵感值,轻松搭建品牌官网。
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:成本优化-软硬协同篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以超越原记录2.5倍的性能登顶排行榜,实现每分钟20.55亿笔交易,单位成本仅0.8元人民币,刷新性能与性价比双纪录。此外,还介绍了国产轻量版PolarDB MySQL的推出,满足市场对高性价比的需求。
|
人工智能 云计算 数据中心
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
阿里云当选UALink联盟董事会成员,推进新一代GPU互连技术!
680 2
|
机器学习/深度学习 DataWorks 安全
CDP是什么?
CDP是什么?
1283 0
WK
|
测试技术 开发者 Python
python模块化设计
Python的模块化设计支持开发者将代码拆分成独立模块,提升代码的可读性、可维护性和复用性。通过`.py`文件定义模块,并利用`import`语句导入所需功能,同时可通过包含`__init__.py`的目录创建包以组织多个模块。Python按特定顺序搜索模块,支持修改`sys.path`添加自定义路径。此外,支持相对与绝对导入方式,便于灵活使用模块资源。遵循良好的编程习惯有助于开发高质量的可复用模块,而虚拟环境与依赖管理工具则确保项目间的依赖隔离,进一步增强项目的稳定性和可扩展性。
WK
484 2
|
弹性计算 负载均衡 定位技术
阿里云服务器地域有什么区别?地域选择建议
阿里云服务器地域选择关乎网络性能与合规性。应基于四点考量:速度延迟、内网互通、价格差异及备案需求。原则上,用户宜选靠近目标用户的地域以降低延迟;需多产品内网互通时,确保它们位于同一地域;留意各地域价格波动以优化成本;涉及经营性网站须在特定地域(如北京、深圳)选购并完成备案。具体地域分布包括中国内地、亚太、欧美及中东地区,详情参见阿里云官方文档。
|
弹性计算 安全 Linux
阿里云服务器宝塔面板使用教程(阿里云宝塔搭建网站)
阿里云服务器宝塔面板使用教程(阿里云宝塔搭建网站)阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码,然后在安全组开通宝塔面板端口号
3179 1
|
机器学习/深度学习 存储 算法
Faiss为啥这么快?原来是量化器在做怪!1
Faiss为啥这么快?原来是量化器在做怪!
2065 0