网格着色器的最佳实践

网格着色器是最近添加到编程管道中的一种,旨在克服经典几何管道使用的固定布局的瓶颈。本文介绍了 directx 和 vulkan 开发人员的最佳实践。
图 1 网格着色器替代几何体管道
推荐:
分割数据时,使用 64 个唯一顶点和 126 个三角形基本体的值,中间甜点为 40 和 84 。这里的重点是组织实现,以便直接使用不同的分段进行实验。
尽可能减少放大和网格着色器中的有效负载大小:
使用位压缩和量化表示
用重心替换属性,并允许像素着色器获取和插值属性
网格和放大着色器阶段为 lod 选择和进一步剔除策略提供了机会。这些可在不同粒度下实现,例如:
在 as 阶段:剔除簇或进行管道 lod 决策
在 ms 阶段:剔除单个原语
如果很简单,可以提前做出决策,并使用应用程序中可用的推断数据。这样可以节省大量的工作。请记住,不需要模拟更复杂的剔除方案,默认情况下,硬件会有效地模拟这些方案。
在处理程序实例化时,依赖放大着色器和网格着色器,例如头发或植被、 iso 曲面(流体模拟、医学成像中的体素数据)、从 3d 扫描获得的资源、 lod 以及 cad 应用程序中经常遇到的一般详细模型。
考虑特殊网格的拓扑连通性。与显示稀疏拓扑的网格(如粒子)相比,我有单独的实现来处理密集拓扑。
请注意,放大着色器阶段会增加开销,尽管通常这可以忽略不计。
vulkan:
与 dx 相比,vk_nv_mesh_shader中的网格着色器允许对网格输出进行任意读写访问,这些输出是预先分配的。您可以通过直接使用或重新调整这些输出的用途来获得性能,并避免额外的共享内存分配。
不推荐:
避免放大着色器的大输出,因为这会导致严重的性能损失。通常,我们鼓励灵活的实现,允许微调。考虑到这一点,有许多通用因素会影响性能:
有效载荷的大小。 as 有效负载最好保持在 108 / 236 字节以下。
放大着色器的调用次数。
由相应放大着色器发射的网格着色器数(放大率)。
不要尝试使用放大和网格着色器模拟固定函数管道,因为这可能会增加冗余。
避免在每一帧的新网格中分割,并考虑脱机烘焙这些数据,这允许在空间或顶点重用中优化网格。
关于作者
wnger:
ana mihut 是 nvidia 的图形开发工程师,她专注于游戏引擎中新渲染技术的优化和集成。在 nvidia 之前,她在 foundry 担任渲染软件工程师,致力于电影 vfx 渲染。安娜拥有博士学位。纽卡斯尔大学计算机科学专业
christoph kubisch 是 nvidia 公司的高级开发技术工程师,专注于 opengl 和 vulkan 实时渲染技术,适用于 cad / dcc 和科学应用。他与外部合作伙伴和 nvidia 的内部团队合作,优化当前和未来的渲染算法。在加入 nvidia 之前, christoph 是马格德堡 otto von guericke 大学医学数据集硬件加速可视化技术的研究人员。此外,他还作为技术艺术家创作游戏艺术、技术和 dcc 插件开发。
manuel kraemer 目前在 nvidia 担任图形软件工程师,专注于高性能几何图形处理。在此之前,他曾在皮克斯、迪士尼动画、双底片和英国广播公司担任多个电影、动画和电视项目的技术总监。


拆解一款恩智浦300W超薄电源参考设计,看我们有什么“芯”发现?
浅谈EMMC电路设计之EMMC上电时序设计
无人驾驶方面的优秀论文,一起来看看该领域最前沿的研究课题
华为P10嫌贵?荣耀V9只售3788元完全不差!
纳米技术研究的新领域
网格着色器的最佳实践
韩国政府携手三星与海力士 研发MRAM芯片
米粉福利:小米6除了骁龙835,还有最稳CMOS,还是1999元起步
华为Mate40发布:搭载最后一代华为高端自研芯片麒麟9000
PLC对机器人的互锁信号控制
即将降临 WebRTC的“冰与火之歌”
Linux操作系统安全的配置说明
简单分析医疗器械领域对超声波电机有哪些要求
中国一家面部识别公司SenseNet存在数据泄露问题
科伦特荣获“2023年度LED一体机十佳品牌”
指针式钳形电流表的组成、技术特性及使用方法
中星6A号卫星参数表
黑鲨游戏手机2开启预约 3月18日正式发布
树莓派显示器电源管理禁止屏幕休眠
图灵测试是什么_图灵测试机器人目前仍不能思维