样本方法的复杂性HLSL。 O(1),O(n)?

时间:2013-02-07 02:43:29

标签: directx hlsl directx-11 directx-9 directx-10

大家好。我想知道是否有人知道HLSL纹理采样函数的复杂性,如tex2d和DX10 / 11等效。如果纹理所在的像素数组,它会以恒定的复杂度访问像素,但它使用UV来访问像素,所以我不知道函数的复杂性。有人知道吗?

1 个答案:

答案 0 :(得分:1)

O(1)

我不知道HLSL采样是如何在内部工作的,但我最近为自定义网格类构建了自己的(工作)采样器。性能的差异是由插值方法的选择引起的:

点采样器

点采样器使用nearest-neighbour interpolation。当然,这种算法非常高效,因为UV只是四舍五入到最接近的整数像素索引。

线性采样器

这种结果会产生更好的结果,因为它使用linear interpolation。假设您的UV指向四个像素之间的位置。然后在正方形的顶部像素上执行lerp,在底部像素上执行另一个像素,在结果上执行第三个像素。由于这种滤波涉及四个像素和12个浮点插值,因此它不如点采样快。

各向异性采样器

各向异性过滤器可产生(当前)最高质量的结果。它是可用类型中最慢的。


Sampling comparison