posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Sampling

          Posted on 2007-12-14 13:42 ZelluX 閱讀(449) 評論(0)  編輯  收藏 所屬分類: Laboratory

          CAL樣例程序里面出現(xiàn)很多sample指令,google到的簡單介紹:

          Antialias (抗鋸齒)

          雖然減小像素的大小可以使圖像可以更加精細(xì),一定程度上減輕了鋸齒,但是只要像素的大小大到可以互相彼此區(qū)分,那么鋸齒的產(chǎn)生是不可避免的!抗鋸齒的方法一般是多點(diǎn)(注意此處是“點(diǎn)”而不是“像素”,后面可以看出它們間的區(qū)別)采樣。

          一、??????? 理論與方法:

          1 Oversampling (重復(fù)取樣):

          1 )方法:

           首先,將場景以比你的顯示器(前緩沖)更高分辨率進(jìn)行渲染:

          假設(shè)當(dāng)前的(前 / 后緩沖)的分辨率是 800 × 600 ,那么可以先將場景渲染到 1600 × 1200 的渲染目標(biāo)上(紋理);

           然后,從高分辨率的渲染目標(biāo)得到低分辨率的場景渲染結(jié)果:

          ????? 此時(shí)取每 2 × 2 個(gè)像素塊顏色的平均值為最終渲染的像素顏色值。

          2 )優(yōu)點(diǎn):可以顯著地改善鋸齒導(dǎo)致的失真。

          3 )缺點(diǎn):需要更大的緩沖,同時(shí)填充緩沖導(dǎo)致性能消耗變大;

          ?????????? 進(jìn)行多個(gè)像素的取樣,導(dǎo)致性能下降;

          ?????????? 由于以上缺點(diǎn), D3D 并沒有采用這種抗鋸齒方法。

          2 Multisampling (多取樣):

          1 )方法:

          只需要對像素進(jìn)行一次取樣,而是在每個(gè)像素中取 N 個(gè)點(diǎn)(取決于具體的取樣模型),該像素的最終顏色 = 該像素原先的顏色 *  多邊形覆蓋的點(diǎn)數(shù)  /  總的取樣點(diǎn)數(shù);

          2 )優(yōu)點(diǎn):可以改善鋸齒帶來的失真的同時(shí)而不會增加取樣次數(shù),同時(shí)比起 Oversampling 它也不需要更大的后備緩沖。

          3 )缺點(diǎn):原本當(dāng)一個(gè)多邊形覆蓋了一個(gè)像素的中心點(diǎn)時(shí),該像素的顏色才會由該多邊形決定(在像素管線階段典型的就是尋址到合適的紋理顏色與頂點(diǎn)管線輸出的顏色進(jìn)行調(diào)制),但是 Multisampling 中,如果該多邊形覆蓋了其中一部分取樣點(diǎn)卻未覆蓋像素中心點(diǎn),該像素顏色仍然由此多邊形決定。如此一來,紋理尋址可能出現(xiàn)錯(cuò)誤,這對于紋理集( atlas )會出現(xiàn)另一種失真效果:多邊形邊緣顏色錯(cuò)誤!

          3 Centriod Sampling (質(zhì)心采樣):

          1 )方法:

          ???? 為了解決在使用 Multisampling 導(dǎo)致的在紋理集中進(jìn)行紋理尋址帶來的錯(cuò)誤,不再采用像素中心的顏色作為“該像素原先的顏色”,而是用“該像素中被多邊形覆蓋的那些取樣點(diǎn)的中心點(diǎn)的顏色”。這樣就保證了被渲染的像素點(diǎn)始終是多邊形的內(nèi)部(也就是說紋理地址不會超出多邊形的范圍)。

          2 )如何使用:

          ???????? ①任何有COLOR語義作為輸入的Pixel Shader會自動運(yùn)用質(zhì)心采樣;

          ???? ②在Pixel Shader的輸入?yún)?shù)的語義后中手動加入 _centroid 擴(kuò)展,例如:

          ?? float4 ?TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0

          {

          ? return tex2D( PointSampler, TexCoord );

          }

          3 )注意:

          ??? 質(zhì)心采樣主要用于采用紋理集的 Multisampling ,對于一整張紋理對應(yīng)一個(gè)的多邊形網(wǎng)格的情況,采用質(zhì)心采樣反而會導(dǎo)致錯(cuò)誤!

          主站蜘蛛池模板: 罗山县| 图木舒克市| 平潭县| 内江市| 海兴县| 工布江达县| 咸宁市| 冷水江市| 鄂尔多斯市| 阿克| 玉溪市| 卢龙县| 紫金县| 体育| 广水市| 全南县| 峨眉山市| 临夏市| 光泽县| 南召县| 若尔盖县| 汉中市| 阿图什市| 南京市| 化德县| 新沂市| 南皮县| 大英县| 长兴县| 抚顺县| 岳普湖县| 昭觉县| 庄河市| 攀枝花市| 宁武县| 水城县| 麦盖提县| 平和县| 舞阳县| 邢台县| 通城县|