0

我正在编写一个像素着色器,它具有以下属性:对于给定的四边形,返回的值仅因 u 轴值而异。即对于固定的 u,颜色输出随着 v 的变化而保持不变。

计算像素颜色的计算相对昂贵 - 即每个像素/循环等多个样本。

有没有办法利用 v-invariance 属性?如果我在 CPU 上执行此操作,那么您显然只会缓存计算后的值,但猜测由于并行性而这并不适用。我可以将纹理生成移到 CPU 端并让着色器访问 Texture1D,但我不确定这会有多快。

在 GPU 卡上是否有适合这种情况的范例?

干杯

4

1 回答 1

1

将数据存储在 1D 纹理中并在像素着色器中对其进行采样看起来是一个不错的解决方案。您的 GPU 将能够使用纹理缓存功能,允许它利用许多像素使用 1D 纹理中的相同值这一事实。这应该非常快,纹理获取和缓存是您的 gpu 在渲染方面如此高效的主要原因之一。

通常的做法是在计算像素着色器中的值或使用查找表纹理之间进行权衡。您正在通过它的声音进行复杂的计算,因此使用查找纹理肯定会提高性能。

请注意,您仍然可以通过 GPU 生成此纹理,无需将其移动到 CPU。只需使用您现有的着色器代码作为 prepass 渲染到这个 1D 纹理。

于 2013-03-24T17:36:41.177 回答