(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

这篇具有很好参考价值的文章主要介绍了(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 (UE4 4.27) UHierarchicalInstancedStaticMesh(HISM)原理分析 这篇博客大致介绍HISM组件从游戏线程到渲染线程的重建KD-Tree和剔除并提交DrawCall逻辑,但是没有分析渲染层的大致数据结构和实现.

FHierarchicalStaticMeshSceneProxy的相关数据结构

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 可以看出FHierarchicalStaticMeshSceneProxy 实际存储Instance数组数据来自于FInstancedStaticMeshSceneProxy

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 FHierarchicalStaticMeshSceneProxy只是以FClusterNode构建了Kd-Tree, 存储以及管理的是以KD-Tree形式的Instance索引. 具体怎么管理,可以看上一篇HISM的介绍文章。

FInstancedStaticMeshRenderData

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

这个数据结构是HISMProxy和ISMProxy的核心数据类, 负责了StaticVertexBuffer, InstanceVertexBuffer(每个实例的Transform) 和VertexFactory(FInstancedStaticMeshVertexFactory)直接的绑定。

VertexBuffer

来自于UStaticMesh的渲染数据

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 InstanceBuffer

来自于 ISM组件管理的 FPerInstanceRenderData

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 FPerInstanceRenderData专门使用了FStaticMeshInstanceBuffer来管理渲染线程的InstanceVertexBuffer资源。

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

FInstancedStaticMeshVertexFactory

直接继承FLocalVertexFactory, 主要是改写了顶点格式, 因为Instance批渲染需要在VertexShader读取InstanceData(WorldTranform等),但是Instance批渲染一般有两种实现方式:

第一种是InstanceData直接作为VertexBuffer的一部分,顶点可以直接获取到其所在Instance的WorldTranform, 参考DirectX 11 学习笔记-Part2-1【Instancing】

第二种是Instance数据作为Buffer独立创建,顶点数据只包含InstanceId, 每次取InstanceData得用InstanceId从InstanceBuffer中取,这种比较多出现在GPU Driven渲染管线里,GPU Driven Rendering大量使用各种Buffer,直接读Buffer, 可以比较好的避开CPU readback, 参考Unity实现GPU Cull渲染

在UE引擎渲染中叫第二种方式叫手动顶点获取(MANUAL_VERTEX_FETCH)

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 目前UE5 Mobile端(无论是OpenEs 还是Vulkan)都不支持MANUAL_VERTEX_FETCH,在PC端延迟渲染是GPU Driven Cull Instance实现,默认支持MANUAL_VERTEX_FETCH。(题外话: Mobile端 Instance 批渲染目前还未实现GPU Driven的DrawInstancedIndirect,有兴趣的可以研究下UE5 PC端延迟渲染管线的GPUScene, 实现了完整的Instance GPU Cull和DrawInstancedIndirect。总结就是UE5 Mobile是完全基于CPU剔除的DrawInstance, UE5 PC端是基于CPU剔除和GPU剔除的DrawInstancedIndirect)

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

LocalVertexFactory.ush的InstanceData获取

代码实现,MANUAL_VERTEX_FETCH为false编译后可以看出是通过InstanceVertexBuffer来获取InstanceData. 如下所示:

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

 文章来源地址https://www.toymoban.com/news/detail-495119.html

(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析

到了这里,关于(UE5 5.2)HISM Mobile DrawInstance在渲染层的实现浅分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • UE5实现相机水平矫正

    UE5实现相机水平矫正

    UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋转改为0, 大功告成~ 优化,最后再根据相机原本的俯仰角角度,用于

    2024年02月06日
    浏览(12)
  • 【虚幻引擎】UE4/UE5鼠标点击事件实现物体移动

    【虚幻引擎】UE4/UE5鼠标点击事件实现物体移动

     在UE4/UE5中,引擎有它自己的一套框架体系,虚幻就是基于这一个框架体系来实现的。其中就有PlayerController(玩家控制器),玩家控制器中就有对鼠标的一系列设置,包括显示鼠标,允许点击事件等。  1.创建PlayerController,命名为MyPlayerController 2.打开MyPlayerController,勾选参数

    2024年02月10日
    浏览(149)
  • UE5动画重定向:理解并实现动画系统

    UE5动画重定向:理解并实现动画系统

    本文详细介绍了UE5中动画重定向的概念和实现方法。文章内容包括动画系统的基本概念,动画重定向的原理和使用场景,以及如何在UE5中设置骨骼链和使用IK重定向器导出生成新动画。

    2023年04月11日
    浏览(10)
  • UE5使用Dash插件实现程序化地形场景制作

    UE5使用Dash插件实现程序化地形场景制作

    目录 0  dash下载后激活 1 初步使用 2  导入bridge的资产路径 3 练习成果 4 参考链接 Dash插件点击蓝色的A,可以使用。 通过输入不同提示命令,来激活不同的功能。 这里需要注意是UAsserts的上一级目录。 实现程序化地形,程序化植被,日光模拟,摄像机视角等功能。 POLYGONFLO

    2024年02月07日
    浏览(18)
  • UE5- c++ websocket里实现调用player里的方法

    获取到引用了,就可以自然的调用。忽略 前置已经添加了websocket,具体步骤参考,链接 在UWebSocketGameInstance.h里新增代理,并在链接成功后进行绑定。 说明, 声明一个代理。DECLARE_DELEGATE_OneParam(JSONMessageTrigger, FString) 声明触发器。public:     JSONMessageTrigger JSONMessageTrigger; 下面到

    2024年02月10日
    浏览(24)
  • UE5、CesiumForUnreal实现多边形压平地形、3DTiles功能

    UE5、CesiumForUnreal实现多边形压平地形、3DTiles功能

    之前的文章在材质中基于顶点位置偏移实现了 StaticMesh 模型的 压平 效果,并解决了 闪面 的问题。 本文这里基于 CesiumForUnreal 插件加载在线的地形 CesiumWorldTerrain ,并实现了 任意多边形 对地形的 压平 效果,支持UE的 Editor 和 Runtime 环境,GIF动图如下: 与之前的文章“ UE5实现

    2024年02月03日
    浏览(112)
  • 【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    说明: 该功能暂不支持导出声音。 由于OpenCV3和UE5不太兼容,因此考虑制作外部exe实现视频合成。 1、实现 SavePicToFile 导出图片蓝图函数 .cpp文件

    2024年02月15日
    浏览(32)
  • 实现Vue3和UE5.2进行通信(Pixel Streaming)

    实现Vue3和UE5.2进行通信(Pixel Streaming)

    这篇文章简单讲解一下如何实现vue3和UE5进行数据的通信。 如果有同学还不清楚如何在Vue3中实现Pixel Streaming的播放器,请查看这篇文章 Vue3中集成Unreal 5.2 像素流(Pixel Streaming插件)。 1. 从UE5.2到前端页面的通信 现在我们想让UE5.2也就是后端发送给前端一些消息,然后前端接收到

    2024年02月08日
    浏览(8)
  • 如何使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

    如何使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

    内容分为: 简介 实操 优化结果展示 看不懂原理看看实操就大概就能明白 “打包型关卡蓝图”是UE5新功能 世界分区(World Partition) 的一部分 但 不依赖于项目是否启用了世界分区 官方文档有关世界分区中 关卡实例化 的内容 官方文档: 这个功能的原理是将场景中的 静态网

    2024年02月12日
    浏览(54)
  • 初学UE5,UE4的教程适用UE5吗?

    初学UE5,UE4的教程适用UE5吗?

    UE5是最近推出的一款游戏引擎,相较于UE4而言,它有着更好的性能和灵活的工作流程,同时也引入了一些新的功能。对于一些游戏开发初学者来说,他们可能会想知道,是否可以通过UE4的教程来学习UE5。在这里,我们将介绍一下这个问题。 首先,UE5和UE4之间确实存在一些相通

    2024年02月06日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包