首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“单实例”硬件实例化的弊端

“单实例”硬件实例化的弊端
EN

Stack Overflow用户
提问于 2013-07-01 05:18:48
回答 2查看 660关注 0票数 0

我正在编写一个具有静态和动画(包括骨架动画)网格的3D图形应用程序(使用SharpDX)。有些网格每帧只渲染一次,有些则渲染很多次。为了加快渲染速度,我计划利用硬件实例化的优势。

与实现实例化和非实例化渲染例程并为每个网格选择正确的例程相比,我想到了简单地对所有网格使用实例化渲染会更容易。

假设目标硬件支持硬件实例化,使用硬件实例化绘制所有网格是否有任何缺点,即使它们每帧只出现一次?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-09 17:41:06

我认为它可能会稍微慢一点,因为你引入了一个额外的缓冲区绑定来设置实例缓冲区。因此,每个网格需要渲染2-3个缓冲区(顶点缓冲区、实例缓冲区和可能的索引缓冲区),而不是只需要1-2 (vb和ib)。

像往常一样,如果它有助于标准化你的引擎,并且你没有遇到任何明显的缺点,那么就没有必要进行优化。唯一知道的方法是分析你的应用程序的这两个变体。

票数 1
EN

Stack Overflow用户

发布于 2013-07-09 20:15:55

在这样做的同时,你会给你的输入汇编器多一点工作,但只是用高分辨率的球体和实例化/非实例化的时间戳做了一个快速测试,我得到了几乎相同的结果。

请注意,我在实例化版本中使用了一个结构化的缓冲区(做了一些查找来替换)。

此外,由于您提到您将使用蒙皮,在您的情况下,潜在的成本将最小化很多(因为您的顶点着色器将不得不做相当多的工作)。

为了避免根据您的注释添加到着色器结构,您也可以使用StructuredBuffers并使用SV_InstanceID或SV_VertexID进行查找,这比每个实例顶点缓冲区更灵活(知道您也可以在稍后阶段更容易地抵消计算着色器中的一些工作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17394941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档