CUDA C 纹理提取Texture Fetching
CUDA C 紋理提取Texture Fetching
一.參數曲面的紋理
使用紋理指定參數曲面屬性。
二.CUDA C 紋理獲取開發
用于計算紋理函數,根據紋理引用的各種屬性返回的值的公式(請參見紋理和曲面內存)。
綁定到紋理引用的紋理表示為
N
texels for a one-dimensional texture,
N x M
texels for a two-dimensional texture,
N x M x L
texels for a three-dimensional texture.
使用非規格化紋理坐標x、y和z,或紋理內存中描述的規格化紋理坐標x/N、y/M和z/L獲取。假設坐標在有效范圍內。紋理內存解釋了如何根據尋址模式將超出范圍的坐標重新映射到有效范圍。
- 最近鄰采樣
在這種過濾模式下,紋理獲取返回的值是
tex(x)=T[i]
for a one-dimensional texture,
tex(x,y)=T[i,j]
for a two-dimensional texture,
tex(x,y,z)=T[i,j,k]
for a three-dimensional texture,
where i=floor(x), j=floor(y), and k=floor(z).
圖1顯示了N=4的一維紋理的最近鄰采樣。
對于整數紋理,可以選擇將紋理提取返回的值重新映射到[0.0,1.0]。
圖1. 最近鄰采樣過濾模式。四個紋理的一維紋理的最近鄰采樣。
- 線性濾波
在這種過濾模式下(僅適用于浮點紋理),紋理提取返回的值是
tex(x)=(1?α)T[i]+αT[i+1]
for a one-dimensional texture,
tex(x,y)=(1?α)(1?β)T[i,j]+α(1?β)T[i+1,j]+(1?α)βT[i,j+1]+αβT[i+1,j+1]
for a two-dimensional texture,
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]
for a three-dimensional texture,
where:
i=floor(xB), α=frac(xB), xB=x-0.5,
j=floor(yB), β=frac(yB), yB=y-0.5,
k=floor(zB), γ=frac(zB), zB=z-0.5,
線性濾波
α、β和γ以9位定點,8位小數(精確表示為1.0)格式存儲。
圖2說明了N=4的一維紋理的線性過濾。
圖2. 線性濾波模式。鉗位尋址模式下四個紋理一維紋理的線性濾波。
- 查表
為了確保TL(0)=T[0]和TL(R)=T[N-1)/R)x+0.5,可以將x跨越區間[0,R]的表查找TL(x)實現為TL(x)=tex((N-1)/R)+0.5。
圖3說明了使用紋理過濾從N=4的一維紋理實現R=4或R=1的表查找。
圖3. 使用線性過濾的一維表格查找
總結
以上是生活随笔為你收集整理的CUDA C 纹理提取Texture Fetching的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CPU,GPU,GPGPU
- 下一篇: 深度学习调用TensorFlow、PyT