一般的貼圖又稱紋理貼圖笼痹,是早期渲染工程師為了處理頂點(diǎn)渲染以及差值渲染所引起 的視覺誤差而使用的位圖影像配喳。
紋理通常含有顏色信息,并且一般會(huì)投射在網(wǎng)格的三角形上凳干,這種使用紋理的方法就好像我們小時(shí)候把假紋身印在手臂上一樣晴裹。但其實(shí)紋理也可以存儲(chǔ)顏色以外的視覺信息。而且紋理也不一定用于投射網(wǎng)格上救赐。
紋理中每個(gè)單獨(dú)的像素稱為紋素涧团,以區(qū)別屏幕上的像素。
紋理的種類##
漫反射貼圖(Diffuse map)
漫反射貼圖的紋素存儲(chǔ)了表面的漫反射顏色经磅,這好比是在表面上貼上貼紙或涂上油漆泌绣。法線貼圖(Normal map)
每個(gè)紋素用來存儲(chǔ)以RGB值編碼后的法矢量。光澤貼圖(Gloss map)
每個(gè)紋素上描述了表面的光澤程度预厌。環(huán)境貼圖(Environment map)
含周圍環(huán)境的圖像以渲染反射效果阿迈。
UV
如何將二維的紋理投射到網(wǎng)格上。首先轧叽,我們要定義一個(gè)稱為紋理空間(texture space)的二維坐標(biāo)系苗沧。紋理坐標(biāo)通常以兩個(gè)歸一化的數(shù)值(u,v)表示炭晒,這些坐標(biāo)的范圍是從紋理的左下角(0,0)伸展至右上角(1,1)待逞。使用歸一化紋理坐標(biāo)的好處是這些坐標(biāo)不會(huì)受紋理尺寸的影響。
紋理尋址模式(texture addressing mode)
紋理坐標(biāo)可以延伸至[0,1]范圍之外网严,圖形硬件可以以以下幾種方式處理范圍以外的紋理坐標(biāo)飒焦,這些處理方式被稱為紋理尋址模式。
- 纏繞模式(wrap mode)
此模式中屿笼,紋理在各方向重復(fù)又重復(fù)牺荠。所有形式為(ju,kv)的紋理坐標(biāo)等價(jià)于(u,v)驴一,k和j是任何整數(shù)休雌。 - 鏡像模式(mirror mode)
此模式和纏繞模式相似,不同的是在u為奇數(shù)倍上的紋理會(huì)在v軸方向形成鏡像肝断,同時(shí)v奇數(shù)倍上的紋理會(huì)在u軸方向形成鏡像杈曲。 - 截取模式(clamp mode)
當(dāng)紋理在正常的坐標(biāo)之外驰凛,紋理的邊緣紋素會(huì)簡單地延伸。 - 邊緣顏色模式(border color mode)
此模式下担扑,用戶可以指定一個(gè)顏色恰响,當(dāng)紋理坐標(biāo)在[0,1]之外使用。
紋素密度(textel density)
紋素密度是紋素與像素的比涌献。
紋素密度會(huì)隨著物體相對(duì)攝像機(jī)的距離而改變胚宦。紋素密度影響內(nèi)存的使用量,也會(huì)影響三維場(chǎng)景的視覺品質(zhì)燕垃。
當(dāng)紋素密度小于1枢劝,每個(gè)紋素就會(huì)明顯的比屏幕像素大,那么就會(huì)察覺到紋素的邊緣卜壕,這會(huì)影響游戲的真實(shí)感您旁。當(dāng)紋素密度遠(yuǎn)大于1,許多紋素會(huì)影響單個(gè)屏幕像素轴捎,這樣會(huì)產(chǎn)生莫列波紋鹤盒。更甚者由于像素邊緣內(nèi)的多個(gè)像素會(huì)按細(xì)微的攝像機(jī)移動(dòng)而不斷改變像素的顏色,像素的顏色就會(huì)顯得浮動(dòng)不定和閃爍侦副。
而且昨悼,若玩家不會(huì)接近一些遠(yuǎn)距離的物體,用非常高的紋素密度渲染那些物體只會(huì)浪費(fèi)內(nèi)存跃洛。
多級(jí)漸遠(yuǎn)紋理(mipmapping)
理想狀況下,我們希望無論物體時(shí)遠(yuǎn)近终议,都能維持紋素密度接近于1汇竭,但是要準(zhǔn)確的維持約束是不可能的,所以我們采用多級(jí)漸遠(yuǎn)紋理技術(shù)來逼近穴张。
其方法是细燎,對(duì)于每張紋理,我們建立較低分辨率位圖的序列皂甘,其中每張位圖的寬度和高度都是前一張的一半玻驻,我們稱這些影像為多級(jí)漸遠(yuǎn)紋理(mipmap)
世界空間紋理密度
紋理過濾(texture filtering)
當(dāng)渲染紋理三角形上的像素時(shí),圖形硬件會(huì)計(jì)算像素中心落入紋理空間的位置偿枕,對(duì)紋理貼圖采樣璧瞬。通常紋素和像素之間沒有一對(duì)一的映射,像素中心可以落入紋理空間的任何位置渐夸,包括兩個(gè)或兩個(gè)以上紋素之間的邊緣嗤锉。因此,圖形硬件通常需要采樣出多于一個(gè)紋素墓塌,并把采樣結(jié)果混合以得出實(shí)際的采樣紋素顏色瘟忱,這一過程稱為紋理過濾奥额。
- 最鄰近(nearest neighbor)
這種粗糙的方法會(huì)挑選最鄰近像素中心的紋素。當(dāng)使用多級(jí)漸遠(yuǎn)紋理時(shí)访诱,這種方法會(huì)挑選一個(gè)漸遠(yuǎn)紋理級(jí)數(shù)垫挨,該級(jí)數(shù)最接近但高于理想的分辨率。理想分辨率是指達(dá)到屏幕空間紋素密度為1触菜。該采樣模式速度最快九榔,但是效果最差,是DX9默認(rèn)的采樣模式玫氢。 - 雙線性(bilinear)
此方法會(huì)圍繞著像素中心的4個(gè)紋素采樣帚屉,并計(jì)算該4個(gè)顏色的加權(quán)平均值(權(quán)重是基于紋素和像素中心的距離),當(dāng)使用多級(jí)漸遠(yuǎn)紋理時(shí)漾峡,也是選擇最近接的級(jí)數(shù)攻旦。 - 三線性(trilinear)
此方法把雙線性過濾法施予最接近的兩個(gè)漸遠(yuǎn)級(jí)紋理級(jí)數(shù)(一個(gè)高于理想分辨率,一個(gè)地獄理想分辨率)生逸,然后把兩個(gè)采樣結(jié)果線性差值牢屋。這樣便能消除屏幕上礙眼的,相鄰漸遠(yuǎn)紋理級(jí)數(shù)之間的邊界槽袄。線性和雙線性過濾以目前的硬件來說效果相對(duì)較好烙无,速度也不會(huì)太慢,但不建議過多使用遍尺。 - 各項(xiàng)異性(anisotropic)
雙向性和三線性都是對(duì)2的冪次方的紋素塊采樣截酷。如果紋理表面是剛好面對(duì)著攝像機(jī)的,這樣是正確的做法乾戏。然而迂苛,若表面傾斜于虛擬屏幕。這就不太正確了鼓择。各向異性過濾會(huì)根據(jù)視角三幻,對(duì)一個(gè)梯形范圍內(nèi)的紋理采樣,借以提高非正對(duì)屏幕的紋理表面視覺品質(zhì)呐能。這種類型的過濾效果最好念搬,也是最慢的。