Unreal 5 实现使用GPU Instancing批量渲染相同的物体

之前做unity的时候,专门研究了使用GPU进行批量相同的物体渲染,现在转ue以后,发现UE也有相同的功能。接下来讲解一下,在ue里面如何实现通过GPU进行实例化渲染。

创建组件

能够实现GPU实例化渲染,ue提供了两个组件,InstancedStaticMesh(实例化静态网格体组件)和HierarchicalInstancedStaticMesh (层级实例化静态网格体组件),这两种的区别是,实例化静态网格体组件,只能渲染一种,层级实例化的意思可以实现lod分级渲染。
在这里插入图片描述
实例化组件只能使用静态网格体,不能够使用骨骼网格体,我这里使用的是之前买的工具将骨骼网格体转换成的静态网格体,我使用它的愿望也是能够大批量的渲染带有动作的模型,虽然效果会比骨骼网格体差一些,但是它是真的省。
在这里插入图片描述
当然,虽然实例化网格体使用的相同的网格体,相同的材质,但是实例化网格体也有一些个性化的信息,比如位置变换,或者自定义颜色等,位置变换已经内置实现,如果别的个性化的数值,需要在实例列表下设置自定义数据浮点数字。这个是长度,如果添加到场景,添加了数据,数组中就会有相关的设置数据。
在这里插入图片描述

实现实例化组件的材质

如果材质在实例化网格体中使用自定义数据,需要使用节点 PerInstanceCustomData,这是一个标量,代表一个浮点数值,中括号内代表自定义数据数组值的下标
在这里插入图片描述

在这里插入图片描述
还有一种代表三个标量值的三维向量
在这里插入图片描述
正常这种自定义数据是在顶点着色器使用的,如果需要在片元着色器使用,需要使用一个节点转换到可以在片元着色器使用
在这里插入图片描述
我这里使用了自定义数据传入一个数值,用作当前顶点播放到的动画的帧数的设置,保证每个模型播放的自己需要播放的动画
在这里插入图片描述

相关节点

现在有了实例化模型,也有了材质相关的设置。接下来介绍一下在蓝图中给实例化模型添加实例,以及更新数据和位置变换。
添加实例我们需要使用实例化模型的添加实例节点,可以传入一个变换设置位置,并且World Space的设置了以后,直接设置模型在场景中的位置,而不是基于实例化模型的位置的变换。
添加实例节点将返回实例在数组中的索引。我们设置自定义数据以及后续的自定义数据都需要索引去设置。
在这里插入图片描述
设置实例的自定义数据值,就是可以材质的之前设置的自定义的数据,用于实现模型的个性需求。
目标是实例化静态网格体组件
Instance Index 是添加实例返回的索引
Custom Data Index 是自定义数据的索引,自定义数据需要一个一个值单独设置
Custom Data Value 是自定义数据的值
Mark render state Dirty 将在帧结束时发送值到渲染线程
在这里插入图片描述
修改实例的位置变换
目标是实例化静态网格体组件
Instance Index 是实例的索引
New Instance Transform 是新的位置变换
World Space 设置的是否是场景坐标
Mark Render State Dirty 是否在帧结束时发送值到渲染线程
Teleport 是否产生冲量去影响其它模拟物理的模型,产生模拟物理的效果(如果为true,物体将不是设置位置,而是一个很大的速度移动到目标位置,并对途中的物体产生物理冲量)
在这里插入图片描述
有添加就有清除,清除实例有两个,一个是全清
在这里插入图片描述
一个是通过实例索引清除,只清除目标实例
在这里插入图片描述
还有一个可以传入一个数组,清除多个实例
在这里插入图片描述

注意事项

如果你使用顶点动画去播放模型效果,会发现动画播放时,会产生残影,这个效果出现的原因是默认的抗锯齿后处理出现的。
解决这个问题最简单的方式就是换一个抗锯齿效果
延迟渲染管线默认的抗锯齿是临时超分辨率TSR抗锯齿,就是这个造成的,MSAA在延迟渲染管线比较耗,不推荐,我使用的第一个,比较省,直接在后处理里面性能比较稳定。
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unreal渲染引擎是由Epic Games开发的一款强大的游戏和虚拟现实应用程序的3D渲染引擎。其架构是基于一系列核心模块和子系统,用于处理图形渲染、物理仿真、动画、声音等方面。 在Unreal渲染引擎的架构中,最核心的模块是Render Core,负责管理图形渲染的整体流程。它将渲染任务划分为一个个渲染线程,通过使用多线程并行处理,提高整体渲染性能。在这个模块中,还包含了对图形API的封装,用于与不同的图形硬件进行交互。 另一个重要模块是Scene Management,用于构建和管理场景中的对象。通过使用场景图的数据结构,这个模块可以高效地管理复杂的场景,并支持可视化编辑和实时预览。它还包括了空间分区提高场景对象查询的效率,并提供了灯光、阴影、镜面反射等效果的支持。 为了实现真实的光照效果,Unreal渲染引擎还有一个独立的Lighting模块。这个模块使用了先进的光线追踪和辐射传输算法,并支持动态光源和全局光照。通过提供高质量的光照和阴影效果,使得场景更加逼真和细腻。 此外,Unreal渲染引擎还有许多其他模块,如Animation、Physics、Audio等,用于处理游戏中的动画、物理仿真和声音效果。这些模块都与核心模块紧密合作,共同构建出一个功能强大、性能优越的渲染引擎。 总结来说,Unreal渲染引擎的架构是基于一系列核心模块和子系统构建的。通过高效的多线程渲染、复杂的场景管理、先进的光照算法等功能,它能够提供逼真、流畅的游戏和虚拟现实体验。 ### 回答2: Unreal渲染引擎是一种先进的3D渲染引擎,用于创建高质量、逼真的虚拟世界和游戏环境。它采用了先进的图形技术和渲染算法,具有高度的可定制性和灵活性。 Unreal渲染引擎的架构是基于现代的渲染管线和算法构建的。它包括以下几个关键模块: 1. 场景管理:这个模块负责管理和渲染场景中的各种元素,包括物体、光照、材质等。它维护了一个场景图,用于高效地组织和管理场景中的对象。 2. 光照和阴影:Unreal引擎支持多种光照和阴影算法,包括实时光照、全局光照、阴影映射等。这些算法能够提供逼真的光照效果,并生成高质量的阴影。 3. 材质和纹理:Unreal引擎提供了一个强大的材质系统,用于创建和调整物体的外观。它支持复杂的纹理映射、反射、折射等特性,使物体看起来更加真实。 4. 特效和后期处理:这个模块负责添加各种特效和后期处理效果,如雾化、景深、色彩校正等。它可以增强场景的真实感,并提升图像的质量。 5. 渲染优化:Unreal引擎提供了多种渲染优化技术,用于提高渲染性能并减少资源消耗。这些技术包括级别LOD(细节层次)管理、延迟渲染、遮挡剔除等。 总的来说,Unreal渲染引擎的架构设计旨在提供灵活、高效、逼真的渲染技术,以满足不同类型游戏和虚拟世界的需求。它具有丰富的功能和工具,使开发者能够创造出惊人的视觉效果,并为用户提供极致的游戏体验。 ### 回答3: Unreal渲染引擎是由Epic Games开发的一款高效的游戏和虚拟现实渲染引擎。 Unreal渲染引擎的架构是基于场景图的,它采用了现代的图形技术和算法来实现逼真的实时渲染。其核心架构包括三个组件:场景图、渲染管道和渲染资源。 首先,场景图是一个层次化的结构,用于组织和管理游戏场景中的对象和模型。它包括了场景中的物体、光源、相机等元素。在实时渲染中,场景图的变动会直接影响到最终的渲染结果。 其次,渲染管道是Unreal渲染引擎的核心模块,负责处理图形数据的传递和处理。它由多个阶段组成,包括几何处理、光栅化、像素处理等。在每个阶段,渲染管道会对场景图中的数据进行处理和转换,然后将结果传递给下一个阶段,最终生成最终的渲染图像。 最后,渲染资源是用于存储渲染相关的数据和纹理的组件集合。它包括了模型、材质、纹理等各种资源,这些资源会被渲染管道使用和处理。渲染资源的高效管理和使用是保证渲染性能和效果的重要因素之一。 总之,Unreal渲染引擎的架构是基于场景图的,它使用先进的技术和算法来实现逼真的实时渲染。通过合理的组织和管理场景图中的元素,经过渲染管道的处理,结合高效的渲染资源,Unreal渲染引擎能够提供出色的渲染效果和性能,为游戏和虚拟现实应用提供强大的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值