Directx 仅u轴变化时的高效像素着色器?

Directx 仅u轴变化时的高效像素着色器?,directx,directx-11,pixel-shader,Directx,Directx 11,Pixel Shader,我正在编写一个像素着色器,它的属性是,对于给定的四边形,返回的值仅随u轴值的变化而变化。即,对于固定的u,则颜色输出随v变化而恒定 计算像素处的颜色的计算相对昂贵,即每个像素/循环进行多个采样等 有没有一种方法可以利用v不变性?如果我在CPU上执行此操作,那么很明显,您只需缓存计算后的值,但由于并行性的原因,这可能不适用。我可以将纹理生成移动到CPU端,让着色器访问纹理1D,但我不确定这会有多快 GPU卡上有适合这种情况的范例吗 干杯将数据存储在1D纹理中并在像素着色器中对其进行采样看起来是一个

我正在编写一个像素着色器,它的属性是,对于给定的四边形,返回的值仅随u轴值的变化而变化。即,对于固定的u,则颜色输出随v变化而恒定

计算像素处的颜色的计算相对昂贵,即每个像素/循环进行多个采样等

有没有一种方法可以利用v不变性?如果我在CPU上执行此操作,那么很明显,您只需缓存计算后的值,但由于并行性的原因,这可能不适用。我可以将纹理生成移动到CPU端,让着色器访问纹理1D,但我不确定这会有多快

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


干杯

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

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


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

如果将1D纹理存储为常量缓冲区,您可能会找到一个胜利。。。