Questions tagged «optimisation»

2
虚拟纹理实际上如何有效?
作为参考,我指的是idTech 5的MegaTexture技术首次(我相信)引入的技术的“通用名称” 。请观看此处的视频,以快速了解其工作原理。 最近,我一直在浏览与之相关的一些论文和出版物,而我不明白的是它可能如何有效。它是否需要不断将“全局纹理页面”空间中的UV坐标重新计算为虚拟纹理坐标?那怎么不抑制大多数对几何图形进行批处理的尝试?如何允许任意放大?在某个时候它是否不需要细分多边形? 有太多我不了解的东西,而且我无法找到关于该主题的任何实际上容易接近的资源。

2
改变国家的代价是什么?
程序员应该对某些操作的成本有一个很好的了解:例如,CPU上指令的成本,L1,L2或L3高速缓存未命中的成本,LHS的成本。 当涉及到图形时,我意识到我几乎不知道它们是什么。我要记住,如果我们按成本订购它们,状态更改将类似于: 着色器均匀变化。 活动顶点缓冲区更改。 活动纹理单位更改。 活动着色器程序更改。 活动帧缓冲区更改。 但这是一个很粗略的经验法则,甚至可能不正确,我不知道数量级是多少。如果我们尝试放置单位,ns,时钟周期或指令数量,那么我们在谈论多少?

2
GL_STATIC_DRAW与GL_DYNAMIC_DRAW与GL_STREAM_DRAW:有关系吗?
在OpenGL中,缓冲对象函数(glBufferData,glBufferSubData和,可能还有其他一些)具有参数usage,该参数在文档中被描述为预期用途的暗示,可能意在帮助实现更好的性能。 用法 指定数据存储的预期使用方式。符号常量必须是GL_STREAM_DRAW,GL_STREAM_READ,GL_STREAM_COPY,GL_STATIC_DRAW,GL_STATIC_READ,GL_STATIC_COPY,GL_DYNAMIC_DRAW,GL_DYNAMIC_READ,或GL_DYNAMIC_COPY。 [...] 用法向GL实现提供了有关如何访问缓冲区对象的数据存储的提示。这使GL实现能够做出更明智的决策,从而可能显着影响缓冲区对象的性能。但是,它并不限制数据存储的实际使用。 维基同样含糊不清: 毕竟,这些只是提示。在创建STATIC缓冲区之后修改它,或者永远不要修改STREAM缓冲区,这是完全合法的OpenGL代码。 [...] 这些问题只有通过仔细分析才能回答。即便如此,答案也仅对来自特定硬件供应商的特定驱动程序版本是准确的。 最后,这个参数有多相关(如果有的话)?驾驶员是否真的考虑到了这一点,如果确实如此,根据您的经验,它在实践中会对性能产生多大影响?您有数据要共享吗? 我已经编写了一个薄的图形API抽象层,打算将其作为现有API中的任何一个实现,并且很想完全忽略此参数并将其从公开的抽象中隐藏起来。

1
现代硬件在保持实时性的同时,一个场景中可以到达多少个多边形,以及如何到达那里?
在某些方面,这是一个相当基本的问题,但很多人(包括我自己)并不真正知道答案。GPU制造商通常会引用非常高的数字,各种游戏引擎声称支持的多边形数量之间的差异通常跨越多个数量级,然后仍然严重依赖于许多变量。 我知道这是一个广泛的,几乎是开放性的问题,对此我深表歉意,我只是认为这仍然是一个有价值的问题。
11 gpu  optimisation 


2
在现代GPU上组织顶点数据的最高效方式
说我有顶点组成的模型,每一个position,normal,tangent,和texcoord属性,其中三角形由指数三元规定。 如果我们只关注顶点属性,那么我知道两种广泛的策略:数组的结构和结构的数组。我还听说结构数组是首选的,因为它会增加给定顶点的属性的内存局部性(并因此增加高速缓存局部性)。 确实可以提高性能吗?我能想到的主要方式是通过顶点索引,该索引要求光栅化器获取早已从缓存中逐出的顶点数据。如果像这样的顶点数据访问是随机的,那么将顶点的所有属性都保留在同一缓存行上肯定会使事情变得更快,但这不是可以通过优化三角形规格的顺序来最大程度缓解的问题吗? 此外,据我了解,现代GPU在解压缩相同类型的长矢量上可能比许多类型的结构的矢量更好。如果优化了索引顺序,那么数组结构布局是否可以始终胜过相同顶点数据的结构数组布局?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.