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

简介: 超逼真渲染!虚幻引擎技术大牛解读全局光照系统Lumen
【新智元导读】虚幻引擎5中,多亏有了全局光照系统Lumen才能让更多人人沉浸在虚拟世界中。对于它的研发过程,创立者Krzysztof Narkowicz对其进行了解读。


实时全局光照(Real-time GI)一直是计算机图形学的圣杯。

多年来,业界也提出多种方法来解决这个问题。

常用的方法包通过利用某些假设来约束问题域,比如静态几何,粗糙的场景表示或者追踪粗糙探针,以及在两者之间插值照明。

在虚幻引擎中,全局光照和反射系统Lumen这一技术便是由Krzysztof Narkowicz和Daniel Wright一起创立的。

目标是构建一个与前人不同的方案,能够实现统一照明,以及类似烘烤一样的照明质量。

近期,在SIGGRAPH 2022上,Krzysztof Narkowicz和团队讲述了他们构建Lumen技术之旅。

软件光线追踪——高度场


当前的硬件光线追踪缺少强大的GPU算力支持。我们不知道硬件光线追踪速度有多快,甚至不知道新一代控制台是否支持它。


因此,软件光线追踪方法运用而出。事实证明,它确实是一个非常好用的工具,可以用于缩放或支持有大量重叠实例的场景。

软件光线追踪提供了一种可能性,那便是可以使用各种各样的追踪结构,比如三角形、距离场(distance fields)、面元(surfels),或者高度场(heightfields)。

在此,Krzysztof Narkowicz放弃了研究三角形,简要研究了面元,但是对于那些需要相当高密度才能表示的几何图形,对其进行更新或追踪面元是相当昂贵的。

经过初步探索,高度场是最合适的,因其能够很好地映射到硬件中,并提供表面表示和简单的连续 LOD。

因为我们可以使用所有的POM算法,比如最小-最大四叉树,因此它的追踪速度是非常快的。

此外,多个高度场可以表示复杂几何,类似于栅格化边界卷层次结构。

若将其视为面元的加速结构也非常有趣,一个单独的texel就是一个受限于常规网格的面元。

除了高度场,Lumen还有其他属性,如反照率或照明,这样就能够计算出每次的照明。

在Lumen中,开发者将这张带有表面数据的完整贴花式投影命名为卡(Cards),即捕获位置。

栅格化的三角形

Raymarched cards光线步进卡(高度场)

对于场景中的每一张卡来说,进行光线步进太慢。因此需要一种卡的加速结构,开发者选择了一个4节点的BVH。它是为一个完整的场景构建的,每一帧都在 CPU 上,并上传到 GPU。

然后在追踪着色器中,我们将进行基于堆栈的遍历,并对节点进行动态排序,以便首先遍历最接近的节点。

BVH 调试视图


捕获位置


这里最棘手的部分是如何放置高度场,以便捕捉整个网格。Krzysztof Narkowicz称,「其中一个想法是基于GPU的全局距离场。每一帧我们都会追踪一小组主射线来寻找没有被卡覆盖的射线。

接下来,对于每一个未发现的射线,我们将使用表面梯度遍历全局距离场,以确定一个最佳的卡方向和范围,从而产生一个新的卡。

全局距离场的捕获位置


相关文章
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
152 3
|
3月前
|
开发者 图形学 Java
揭秘Unity物理引擎核心技术:从刚体动力学到关节连接,全方位教你如何在虚拟世界中重现真实物理现象——含实战代码示例与详细解析
【8月更文挑战第31天】Unity物理引擎对于游戏开发至关重要,它能够模拟真实的物理效果,如刚体运动、碰撞检测及关节连接等。通过Rigidbody和Collider组件,开发者可以轻松实现物体间的互动与碰撞。本文通过具体代码示例介绍了如何使用Unity物理引擎实现物体运动、施加力、使用关节连接以及模拟弹簧效果等功能,帮助开发者提升游戏的真实感与沉浸感。
79 1
|
3月前
|
图形学 开发者
【Unity光照艺术手册】掌握这些技巧,让你的游戏场景瞬间提升档次:从基础光源到全局光照,打造24小时不间断的视觉盛宴——如何运用代码与烘焙创造逼真光影效果全解析
【8月更文挑战第31天】在Unity中,合理的光照与阴影设置对于打造逼真环境至关重要。本文介绍Unity支持的多种光源类型,如定向光、点光源、聚光灯等,并通过具体示例展示如何使用着色器和脚本控制光照强度,模拟不同时间段的光照变化。此外,还介绍了动态和静态阴影、全局光照及光照探针等高级功能,帮助开发者创造丰富多样的光影效果,提升游戏沉浸感。
73 0
|
3月前
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
115 0
|
3月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
196 0
|
2月前
|
图形学 开发者
透视与正交之外的奇妙视界:深入解析Unity游戏开发中的相机与视角控制艺术,探索打造沉浸式玩家体验的奥秘与技巧
【8月更文挑战第31天】在Unity中,相机不仅是玩家观察游戏世界的窗口,更是塑造氛围和引导注意力的关键工具。通过灵活运用相机系统,开发者能大幅提升游戏的艺术表现力和沉浸感。本文将探讨如何实现多种相机控制,包括第三人称跟随和第一人称视角,并提供实用代码示例。
134 0
|
2月前
|
图形学 开发者
【独家揭秘】Unity游戏开发秘籍:从基础到进阶,掌握材质与纹理的艺术,打造超现实游戏视效的全过程剖析——案例教你如何让每一面墙都会“说话”
【8月更文挑战第31天】Unity 是全球领先的跨平台游戏开发引擎,以其高效性能和丰富的工具集著称,尤其在提升游戏视觉效果方面表现突出。本文通过具体案例分析,介绍如何利用 Unity 中的材质与纹理技术打造逼真且具艺术感的游戏世界。材质定义物体表面属性,如颜色、光滑度等;纹理则用于模拟真实细节。结合使用两者可显著增强场景真实感。以 FPS 游戏为例,通过调整材质参数和编写脚本动态改变属性,可实现自然视觉效果。此外,Unity 还提供了多种高级技术和优化方法供开发者探索。
54 0
|
4月前
|
图形学 开发者
【实战优化】U3D物理引擎碰撞检测精调秘籍:告别穿透与粘滞,重塑真实游戏体验
【7月更文第12天】在Unity3D游戏开发中,精准的碰撞检测是营造沉浸式游戏体验的关键。然而,开发者常面临游戏角色或物体间的碰撞反应不自然,如穿透、粘滞现象,这些问题不仅破坏了游戏的真实感,还严重影响了玩家的体验。本文将深入探讨U3D物理引擎中碰撞检测不准确的根源,并提出一系列行之有效的调优策略,辅以代码实例,帮助开发者打造流畅自然的物理互动。
258 1
|
移动开发 前端开发 JavaScript
分享8个前端可以制作360度WebVr全景视图框架
分享8个前端可以制作360度WebVr全景视图框架
1781 0
分享8个前端可以制作360度WebVr全景视图框架
|
人工智能 测试技术
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
111 0
下一篇
无影云桌面