CUDA纹理线性过滤

sga*_*zvi 3 textures cuda

在CUDA C编程指南第5版附录E.2(线性过滤)中,声明:

在这种仅适用于浮点纹理的过滤模式中,纹理提取返回的值是......

大胆的部分令我困惑.难道floating point仅仅意味着纹理元素类型或返回类型也?例如,我声明了3个纹理,如下所示.

texture<float,cudaTextureType2D> tex32f;
texture<unsigned char, cudaTextureType2D, cudaReadModeNormalizedFloat> tex8u;
texture<unsigned short, cudaTextureType2D, cudaReadModeNormalizedFloat> tex16u;
Run Code Online (Sandbox Code Playgroud)

线性过滤tex32f仅适用于,也适用于tex8utex16u

Arc*_*are 5

这意味着线性滤波仅在纹理的"读取模式"时可用cudaReadModeNormalizedFloat,即整数类型(如u8)被提升为[0.0,1.0]范围内的浮点值(对于无符号整数)或[-1.0] ,1.0](对于有符号整数).

  • 我的原始答案实际上也不正确......事实上,你可以用非标准化的纹理坐标进行插值(尽管你必须做一个尴尬的+0.5偏移来获得预期的效果).你不能做的是从设置为cudaReadModeElementType的纹理引用进行线性插值. (2认同)