前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Epic的UE5如何支持数十亿面的模型渲染?

Epic的UE5如何支持数十亿面的模型渲染?

作者头像
放牛的星星
发布2020-07-10 13:41:13
2.6K0
发布2020-07-10 13:41:13
举报
文章被收录于专栏:壹种念头壹种念头

首先官方的宣传片里提到的支持数十亿面模型渲染的方法是Nanite虚拟多边形系统。这事估计得先从显卡架构升级说起。

1 什么是图灵显卡?

第一代图灵显卡是由NVIDIA 在2018年发布的,Quadro系列的全新架构模式。最重要的突破就是内置了全新的RT Core(光线追踪核心)。

GeForce RTX的20XX系列,也是首次支持光线追踪的显卡系列。

图灵的架构不但支持了新的光追管线,“顺便”还延伸了一个新的管线叫 Mesh Shading。也就是这次UE5能够支持超多三角面的底层原理。(猜的)

2 图灵显卡上的mesh shader

最早的渲染管线属于硬件管线,随着软硬件的发展变为可编程管线。这个阶段我们听到的最多的就是VS和PS即顶点着色器和像素着色器。

但这不是可编程管线的全部,随着硬件和画质需求的不断增强,还有诸如曲面、几何着色器等流程加入可编程管线中。

流程越多越固化,表示要重复处理的东西就越多。因此NVIDIA 启用了新的Mesh Shading 管线,将光栅化阶段前的阶段整合为两个,task 和 mesh。

对比一下两个管线,可以发现光栅化之前的流程都重做了,而光栅化之后的可以复用。

Task着色器: 一种可编程单元,在工作组中运行,允许每个工作组发起(或不发起)Mesh 着色器的工作组。

Mesh着色器: 一种可编程单元,在工作组中运行,允许每个工作组生成primitives(图元)。

Task和Mesh着色器都使用了内部的协作线程模型,输入和输出都可以是用户自定义的。

任务和网格着色器还遵循compute shaders 的原则,它有两个好处:

第一,所有的协作线程都可以自定义的编程以用作不同的目的,并且他们之间的数据可以共享。

第二,因为所有流程在同一个管线中,硬件可以直接管理各阶段之间的内存传递和芯片上的存储。

通过Task着色器进行的可选扩展,允许更早的剔除一组图元或预先制定LOD决策。该机制是在GPU上扩展,因此正在取代实例化或间接的针对小网格物体进行的多绘制。

一个Task工作组可以发起多少个Mesh工作组是有限制的,第一代硬件支持每个Task最多可以生成64K个子任务。但在同一个draw调用中,跨所有任务的mesh子节点的总数没有限制。

Mesh着色器的一个重要目标就是要尽可能多的去利用公共数据,通过数据结构优化之后能增加每个mesh所计算的数量和内容。在同样的总吞吐量的前提下,单个mesh开销越小,能并发的工作组就越多。

这也是官方提到的meshlet的核心功能。

https://devblogs.nvidia.com/wp-content/uploads/2018/09/meshlets_motivation.pngdevblogs.nvidia.com

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 壹种念头 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档