CUDA学习(八十一)

简介:

纹理捕捉:
绑定到纹理参考的纹理被表示为一个数组T.

  • N个texels为一维纹理,
  • 用于二维纹理的N×M个像素,
  • 用于三维纹理的N×M×L纹素。

它使用非标准化纹理坐标x,y和z或纹理存储器中描述的标准化纹理坐标x / N,y / M和z / L进行提取。 在本附录中,假定坐标位于有效范围内。 纹理内存解释了如何根据寻址模式将超出范围的坐标重新映射到有效范围。
最近点采样:
在这种过滤模式下,纹理获取返回的值是:

  • 对于一维纹理,tex(x)= T [i]
  • 针对二维纹理的tex(x,y)= T [i,j]
  • 针对三维纹理的tex(x,y,z)= T [i,j,k]

其中i = floor(x),j = floor(y),k = floor(z)。
图13显示了N = 4的一维纹理的最近点采样:
对于整数纹理,纹理拾取返回的值可以选择性地重新映射为[0.0,1.0]。
1

线性滤波:
在这种仅适用于浮点纹理的过滤模式中,纹理获取返回的值为:

  • 针对一维纹理的tex(x)=(1-α)T [i] +αT[i + 1]
  • tex(X,Y)=(1-α)(1-β)T [I,J] +α(1-β)T [I +1,J] +(1-α)βT[I,J+ 1] +αβT[i + 1,j + 1]为二维纹理,
  • tex(x,y,z)= (1-α)(1-β)(1-γ)T [I,J,K]+α(1-β)(1-γ)T [i + 1的,J,K] + (1-α)β(1-γ)T [I,J+1,K] +αβ(1-γ)T [I +1,J+1,K] + (1-α)(1-β)γT[I,J,K+ 1] +α(1-β)γT〔I+ 1,J,K+ 1] + (1-α)βγT[I,J+1,K+ 1] +αβγT[I+ 1,J+1,K+ 1] 对于三维纹理,

当:

  • $i=floor(x_B), α=frac(x_B), x_B=x-0.5$,
  • $j=floor(y_B), β=frac(y_B), y_B=y-0.5$,
  • $k=floor(z_B), γ=frac(z_B), z_B= z-0.5$,

α,β和γ以9位定点格式以8位小数值的形式存储(所以1.0被精确表示)。
图14示出了N = 4的一维纹理的线性滤波。
表查找:
为了确保TL(0)= TL(x)= tex((N-1)/ R)x + 0.5),可以实现跨越区间[0,R]的x的表查找TL T [0]和TL(R)= T [N-1]
图15说明使用纹理过滤从N = 4的一维纹理实现R = 4或R = 1的表格查找。
3
timg

目录
相关文章
|
并行计算 编译器
|
缓存 并行计算 调度
|
缓存 并行计算 索引
|
并行计算 C语言 存储
|
存储 并行计算 C语言
|
并行计算 前端开发
|
并行计算 API 编译器
CUDA学习(六十五)
很早之前就发现云栖社区的编辑器有一个Bug,往草稿箱存博客,当草稿箱博客数超过十篇时,无法再选择十篇前的博客进行编辑
2364 0
|
移动开发 并行计算 编译器
|
并行计算 前端开发 Windows
|
并行计算 API 异构计算