gpt4 book ai didi

opengl - 一个有 3 个相同值的三角形...... GPU 是否会插入/浪费性能?

转载 作者:行者123 更新时间:2023-12-04 12:47:43 27 4
gpt4 key购买 nike

我有一个简单的问题,在 3 个顶点具有相同的不同顶点着色器输出的情况下,我无法找到有关 GPU 行为的可靠事实。
GPU 是否注意到这种情况,还是在甚至不需要时尝试进行插值?

这可能很有趣,因为在很多情况下,您希望每个三角形的片段着色器中可用的恒定变化。请不要只是猜测,尝试提出引用或至少原因,为什么您认为这是一种或另一种方式。

最佳答案

无论是否需要,GPU 都会进行插值。

原因很简单:检查可变变量是否已经改变是非常昂贵的。

着色器是在不同 GPU 内核上并发执行的小程序。因此,如果您想避免两个不同的内核计算相同的值,则必须“保留”输出变量。因此,您需要一个每个核心都可以读取的附加数据结构(如标志或互斥锁)。在您的情况下,这意味着三个不同的核心必须读取相同的标志,如果尚未保留,则第一个必须保留它。

这必须以原子方式发生,这意味着保留核心必须是一次设置标志的唯一核心。为此,所有其他核心将例如必须停下来打勾。由于您不知道哪些核心正在计算顶点着色器,因此您必须停止所有其他核心(在 GTX Titan 上这将是 2687 个其他核心)。

此外,当设置变量并呈现新帧时,必须重置所有标志,因此可以再次开始争夺标志。

总结:您的 GPU 中需要额外的硬件,这很昂贵并且会减慢渲染管道的速度。

避免多个着色器产生相同的输出是程序员的工作。因此,如果您的工作做得对,这不会发生,或者您知道,避免它(在 CPU 上)比忽略它的成本更高。

一个例子是不同层次细节的拼接(比如在高度图上),其中大多数方法都会创建一些片段两次。这对渲染性能的影响非常小,但需要大量 CPU 时间才能避免。

关于opengl - 一个有 3 个相同值的三角形...... GPU 是否会插入/浪费性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23000064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com