2013-03-22 39 views
0

我正在写一个像素着色器,它具有属性,对于给定的四元素,返回的值只会因u轴值而异。即对于一个固定的u,那么当v变化时,颜色输出是恒定的。只有u轴变化时才有效的像素着色器?

计算颜色在一个像素计算是相对昂贵的 - 即确实每像素/环等多个样品..

有一种方法采取V形不变性的优势?如果我在CPU上这样做,那么你显然只需要缓存一次计算出来的值,但由于并行性的原因,这种猜测并不适用。我可能会将纹理生成移动到CPU端,并让着色器访问Texture1D,但我不知道这将是多快。

有没有适合GPU卡上的这种情况的范例?

欢呼

+0

如果您将1d纹理存储为常量缓冲区,那么您可能会发现一个胜利...... – Goz 2013-03-22 18:55:21

回答

1

在一维纹理存储你的数据,并在你的像素着色器采样看起来像一个很好的解决方案。您的GPU将能够使用纹理缓存功能,从而可以利用这样一个事实,即许多像素使用的是来自1D纹理的相同值。这应该是非常快的,纹理抓取和缓存是您的GPU在渲染时如此高效的主要原因之一。

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

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

相关问题