[engine]加载速度拉满的direct storage

Posted 安柏霖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[engine]加载速度拉满的direct storage相关的知识,希望对你有一定的参考价值。


ps5给人很大亮眼的地方就是超快的硬盘,的确加载速度也是最近游戏硬件猛烈升级的重要领域;
刚好最近gdc22中ForSpoken的share中也聊到了DirectStorage,终于pc上也可以开始享受加载速度提升的快乐了;

大致的发展

  • 19年nvidia就在high performance computing那部分,cuda里面提出了GPUDirectStorage
  • 在console上也有类似的概念在,ps5和xbox
  • 大约20年,开始宣布pc上也要加这个feature
  • 22年前段时间,微软正式宣布了开始使用 DirectStorage API Now Available on PC
  • windows pix在最新的版本里,也能看到direct storage的信息了:PIX-2203.07: Support for DirectStorage

主要内容


上面这个图是一个好的诠释:
传统做法:

  • file io到内存,
  • 解压
  • 送往gpu

direct storage

  • 直接文件进gpu,充分利用pcie的带宽
  • 这个进gpu可以异步大规模并行,带宽高很多
  • gpu中可以lz4解压

优势:

  • 充分利用带宽,这类数据是1.5x到2.5x不等,主要用于nvme接口的ssd
  • 可以大规模并行加载
  • 节省cpu(io以及解压),少了内存的操作
  • 程序员角度看也更加优雅

一些信息补充:

  • win10可以用,win11为direct storage做了底层优化,效果更好

实际游戏中的数据


(个人也十分期待的游戏)
目前落地到游戏中的数据,就是22年gdc,amd专场的ForSpoken的分享;
GDC 2022 - Breaking Down the World of Athia: The Technologies of Forspoken

(amd的数据)
可以看出理论带宽的差异非常大,在ForSpoken的数据中,则一般,大约10%的优势;
有点怀疑是底层没有对此做深度定制,可能就是简单用了下,那么loading中带宽以外的部分占比比较高(serialize,init等工作)

以上是关于[engine]加载速度拉满的direct storage的主要内容,如果未能解决你的问题,请参考以下文章

Pandarallel:一款能让你的 Python 计算火力拉满的工具

Pandarallel:一款能让你的 Python 计算火力拉满的工具

巧用渐变实现高级感拉满的背景光动画

妙用滤镜构建高级感拉满的磨砂玻璃渐变背景

巧用滤镜实现高级感拉满的文字快闪切换效果

巧用 CSS 变量,实现动画函数复用,制作高级感拉满的网格动画