本附錄給出了用于計(jì)算 Texture Functions 的紋理函數(shù)返回值的公式,具體取決于紋理引用的各種屬性(請(qǐng)參閱紋理和表面內(nèi)存)。
綁定到紋理引用的紋理表示為一個(gè)數(shù)組 T
一維紋理的 N 個(gè)texels,
二維紋理的 N x M texels,
三維紋理的 N x M x L texels。
它是使用非歸一化紋理坐標(biāo) x、y 和 z 或歸一化紋理坐標(biāo) x/N、y/M 和 z/L 獲取的,如紋理內(nèi)存中所述。 在本附錄中,假定坐標(biāo)在有效范圍內(nèi)。 紋理內(nèi)存解釋了如何根據(jù)尋址模式將超出范圍的坐標(biāo)重新映射到有效范圍。
J.1. Nearest-Point Sampling
在這種過濾模式下,紋理獲取返回的值是
tex(x)=T[i] 對(duì)于一維紋理,
tex(x,y)=T[i,j] 對(duì)于二維紋理,
tex(x,y,z)=T[i,j,k] 對(duì)于三維紋理,
其中 i=floor(x),j=floor(y),k=floor(z)。
下圖 說明了 N=4 的一維紋理的最近點(diǎn)采樣。
對(duì)于整數(shù)紋理,紋理獲取返回的值可以選擇重新映射到 [0.0, 1.0](請(qǐng)參閱紋理內(nèi)存)。
J.2. Linear Filtering
在這種僅適用于浮點(diǎn)紋理的過濾模式下,紋理獲取返回的值是
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,
其中:
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 位定點(diǎn)格式存儲(chǔ),帶有 8 位小數(shù)值(因此精確表示 1.0)。
下圖 說明了 N=4 的一維紋理的線性過濾。
J.3. Table Lookup
x 跨越區(qū)間 [0,R] 的查表 TL(x) 可以實(shí)現(xiàn)為 TL(x)=tex((N-1)/R)x+0.5) 以確保 TL(0)= T[0] 和 TL(R)=T[N-1]。
下圖 說明了使用紋理過濾從 N=4 的一維紋理中實(shí)現(xiàn) R=4 或 R=1 的表查找。
關(guān)于作者
Ken He 是 NVIDIA 企業(yè)級(jí)開發(fā)者社區(qū)經(jīng)理 & 高級(jí)講師,擁有多年的 GPU 和人工智能開發(fā)經(jīng)驗(yàn)。自 2017 年加入 NVIDIA 開發(fā)者社區(qū)以來,完成過上百場(chǎng)培訓(xùn),幫助上萬(wàn)個(gè)開發(fā)者了解人工智能和 GPU 編程開發(fā)。在計(jì)算機(jī)視覺,高性能計(jì)算領(lǐng)域完成過多個(gè)獨(dú)立項(xiàng)目。并且,在機(jī)器人和無(wú)人機(jī)領(lǐng)域,有過豐富的研發(fā)經(jīng)驗(yàn)。對(duì)于圖像識(shí)別,目標(biāo)的檢測(cè)與跟蹤完成過多種解決方案。曾經(jīng)參與 GPU 版氣象模式GRAPES,是其主要研發(fā)者。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5025瀏覽量
103270 -
gpu
+關(guān)注
關(guān)注
28文章
4754瀏覽量
129080
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論