4

当我在像素着色器中对纹理进行采样时,纹理单元需要根据被着色像素周围的纹理渐变来选择 mipmap。

有一个功能tex2Dgrad()可以让我手动提供有关渐变的信息,并且tex2Dlod()可以让我手动选择 mipmap,但如果我只是调用tex2D(),那么额外的渐变信息来自哪里?

tex2D()是纹理映射最常见的情况,在大多数着色器中使用,但我不知道渐变的来源。Mipmapping 显然有效,因此它必须来自某个地方。

U我想使用计算和坐标在像素着色器中使用纹理作为查找表,V但我不希望在.tex2D()

我需要使用tex2Dlod()来避免这种情况吗?我读到那tex2Dlod()是较慢的tex2D()

4

1 回答 1

1

GPU 一次对 4 个像素的“四边形”进行着色,用于纹理提取的梯度来自从相邻像素对计算的有限差分。这就是 GPU 能够为像素着色器中的任意表达式生成偏导数的方式。如果您可以为作为纹理坐标传入的值计算更准确的解析导数,则 tex2Dgrad 函数会很有用。

于 2011-12-29T12:02:39.127 回答