从UE4到UE5,在接触过了许多次的UE5之后,不得不说,UE5在游戏开发的方方面面都有了很大的提升。其中之一就是 Nanite ,这个允许将高细节摄影源材料导入游戏的先进技术
我们首先需要对虚幻引擎有一个整体的了解。那么在这里先介绍一下虚幻引擎5 (Unreal Engine 5)中最核心的两项技术: Nanite与 Lumen。
在介绍这两项技术之前,我们首先要了解一下虚幻引擎5的相关信息。我们可以从以下几个方面来了解一下虚幻引擎5:
- 引擎介绍
UE5是一款由 Unreal Engine 4升级而来的引擎,它是 Unreal Engine 4的升级版本。虚幻引擎5相比UE4有了很大的改变,也正是因为这次的更新,让它成为了现在业界最好的游戏开发引擎之一。
虚幻引擎5采用了全新的物理系统,从而能够提供更真实、更自由的物理效果。它所提供的物理引擎能够让用户进行各种物理效果和物理操作,并根据需要对其进行调整和修改。另外,它还提供了自定义材质、灯光、渲染等等功能,使得开发者在制作游戏时能够拥有更多的自定义空间。而这一切都使得虚幻引擎5在游戏开发领域拥有了更大的优势。
另外,虚幻引擎5还提供了一整套完善的实时物理系统和物理引擎,它可以让用户使用虚幻引擎5制作出更加真实、自由的游戏世界。当然,虚幻引擎5也是目前最好的游戏开发软件之一。
- 场景
在介绍完了UE5中的核心技术之后,再来看看UE5中最核心的技术-场景。
那么在这一部分,我们就先简单介绍一下场景这个概念。什么是场景呢?场景是由一些物体组成的集合,它包含了物体的位置、大小、材质等信息。场景可以包含一个独立的对象,也可以包含多个对象,每个对象都有自己独特的属性和特征。
UE5中场景分为两种类型:静态场景与动态场景。
静态场景:指没有运动的物体,如建筑物、天空等;
从上面两张图中我们可以看出,静态场景与动态场景之间有一些明显的区别。下面分别介绍一下它们之间的区别。
- 系统
前面介绍了 Unreal Engine 5的相关信息,下面就来具体了解一下这款引擎中的两个核心技术: Nanite与 Lumen。
1、 Nanite是 Unreal Engine 5中的一个系统,它是一种针对游戏场景中的光照效果进行优化的技术。Nanite技术的引入,可以对海量数据问题和高额的渲染消耗问题做出优化
Nanite只用在延迟管线中,而延迟管线中跟海量面片相冲的环节主要在于Base Pass GBuffer的生成上面,,为了减少GBuffer生成过程中的带宽消耗,UE5在延迟管线的Base Pass阶段增加了一个处理,优先生成Visibility Buffer,之后再通过一个Screen Space Pass将之转换成GBuffer,至于GBuffer之后的Lighting处理就跟此前的延迟管线保持一致了。
2、 Lumen是一种用于渲染游戏场景的实时材质系统,它使用一组单独的坐标来描述游戏中的物体。它为游戏场景提供了一个非常高效的渲染方式,特别适用于大型复杂场景。
渲染管线流程大概的调用流程:
void FDeferredShadingSceneRenderer::Render(FRDGBuilder& GraphBuilder)
{
void FDeferredShadingSceneRenderer::InitViewsAfterPrepass()
{
// 更新LumenScene的Primitives,分配Atlas,更新PageTable
// 初始化FCardPageRenderData的MeshDrawCommand
BeginUpdateLumenSceneTasks(GraphBuilder, FrameTemporaries);
}
// 渲染生成Surface Cache
UpdateLumenScene(GraphBuilder, LumenFrameTemporaries);
//RenderBasePass的位置
BeginGatheringLumenSurfaceCacheFeedback(GraphBuilder, Views[0], LumenFrameTemporaries);
RenderLumenSceneLighting(GraphBuilder, LumenFrameTemporaries);
// 将Indirect和AO输出
RenderDiffuseIndirectAndAmbientOcclusion(/* bCompositeRegularLumenOnly = false*/);
// RenderLights(GraphBuilder, SceneTextures, TranslucencyLightingVolumeTextures, LightingChannelsTexture, SortedLightSet);
RenderDiffuseIndirectAndAmbientOcclusion(/* bCompositeRegularLumenOnly = true*/);
// 回读Surface更新的帧数,用以计算更新频率
FinishGatheringLumenSurfaceCacheFeedback(GraphBuilder, Views[0], LumenFrameTemporaries);
}
- 物理引擎
UE5中的物理引擎可以说是整个虚幻引擎5的核心,它主要包含了两大部分:一个是物理系统(Physics System),另外一个是物理引擎(Physics Engine)。其中物理系统包括了3 Dmax中的 Motion View、 Maya中的 Shader、 Mathematica中的 Maya中的 Graphics以及 OpenGL中的 Motion Graph等。
在UE5中,我们可以很直观地看到物理引擎在游戏中是如何被使用的。比如说,你在使用粒子系统来模拟粒子效果时,你可以在你的场景中放置一些小石子,这些小石子会随着你游戏的进程逐渐增加,直到达到我们所需要的效果。如果我们想让这些石子达到某种特定的效果时,可以通过修改小石子的材质或者材质属性等来实现。当然,如果我们想要让这些石子随着场景变化而变化的话,我们也可以通过改变小石子的位置来实现。可以说,物理引擎在游戏中为我们提供了一个非常强大且灵活的工具。
- 灯光系统
在《战争机器》中,虚幻引擎5采用了新的灯光系统,我们在游戏中将可以看到一个非常炫酷的效果
为了实现更好的效果,虚幻引擎5采用了全新的 Lumen渲染技术。该技术使用了一种名为“Source Lumen”的渲染方式,这种方式是根据光源和环境进行渲染,而且它的每一个顶点都可以看作一个光源,这使得光源的每个顶点都可以进行实时计算。Lumen渲染技术能够让我们在游戏中看到一个非常真实的动态光影效果。通过 Lumen渲染技术,我们可以在游戏中看到非常绚丽的动态光影效果,当然,在游戏中我们也可以对这些动态光影进行编辑,这样我们就可以做出更多复杂的灯光效果了。
- 纹理
在游戏中,纹理是游戏中的重要元素,但是在虚幻引擎5中,它已经变成了最重要的一环。通过在游戏中引入纹理,我们可以让玩家更好的沉浸到游戏中去。
在UE5中,纹理的显示方式非常多样化,包括透明纹理、反射纹理、投影纹理、透明表面、反射表面、阴影贴图等等。这些纹理都可以很好的应用到不同的场景中去。而虚幻引擎5拥有着非常强大的光线追踪能力,因此它可以提供非常真实的光照效果。
同时,虚幻引擎5还提供了两个强大的特性:一个是物理上的遮挡效果,另外一个是物理上的反射效果。这两个特性都会大大提高游戏画面的真实感。
这些特性对于我们来说,无疑是非常重要的。这也就意味着我们在使用虚幻引擎5进行游戏开发时,会有更多的便利之处。