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语言 编译器
|
并行计算 程序员
|
并行计算 异构计算
|
机器学习/深度学习 缓存 并行计算
|
并行计算 程序员 异构计算
|
缓存 并行计算 索引
|
并行计算 API 调度
CUDA学习(八十八)
3.虽然__syncthreads()一直被记录为同步线程块中的所有线程,但Pascal和以前的体系结构只能在warp级别强制执行同步。 在某些情况下,只要每条经线中至少有一条线达到屏障,就可以在不被每条线执行的情况下成功实现屏障。
1738 0
|
并行计算 安全 调度
|
并行计算 编译器 存储
|
并行计算 算法