最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

games101學(xué)習(xí)筆記-三角形光柵化p5p6

2023-06-08 20:14 作者:白菜兒先生  | 我要投稿

目錄

一、視錐體的另一種表示

二、光柵化

2.1基本概念?

2.2視口變換?

2.3光柵化

光柵的顯示設(shè)備? ? 光柵化三角形?三角形包圍盒

2.4走樣與反走樣

頻域基礎(chǔ)? ? ? 采樣、走樣與反走樣在時域、頻域中的表現(xiàn)? ? ?MSAA算法

2.5深度緩沖


正文

一、視錐體的另一種表示

經(jīng)過之前學(xué)習(xí)的MVP變換后,所有物體都已經(jīng)轉(zhuǎn)換到-1到1的標(biāo)準(zhǔn)立方體范圍內(nèi)。

對規(guī)整的長方體而言,它的定義只需要有遠(yuǎn)近,左右,上下三組值即可。

而對于視錐體而言,這種表示方式并不方便。為了更方便地定義透視投影中前后平面組成的視錐體,引入了兩個概念:長寬比aspect和垂直可視角度fovY。如下圖所示。


橫截面如下:


則有


也就是說,根據(jù)近平面距離n、垂直可視角度fovY和寬高比aspect,可以得到平面上下的邊界t和b、左右的邊界l和r,如此可以表示一個平面;再加上遠(yuǎn)平面距離f,可以表示之前的透視變換中的部分視錐體所組成的立方體。


二、光柵化

2.1基本概念

光柵:德語中屏幕的意思。

光柵化:在屏幕上繪制物體。

像素:在改課中理解為一個個小方塊,顏色的最小的單位。每個像素由(紅黃藍(lán))混合而成。

屏幕空間:在該課中的屏幕空間如下圖。


每個像素都用二維整數(shù)坐標(biāo)表示,下標(biāo)范圍(0,0)~(width-1,height-1)

屏幕范圍(0,0)~(width,height)

像素中心(x+0.5,y+0.5)

2.2視口變換

視口變換:從xy平面[-1,1]?2轉(zhuǎn)變?yōu)閇0,width]x[0,height]



2.3光柵化

不同的光柵顯示設(shè)備

示波器、CRT顯示器(光柵掃描,隔行掃描技術(shù))、LED 、LCD液晶顯示器 、電子墨水屏……

LCD液晶顯示原理:兩個方向垂直的偏振片,中間是液晶。經(jīng)過一個偏振片后光只剩下一個方向的光,如果經(jīng)過液晶的作用發(fā)生偏轉(zhuǎn),則能順利通過下一個偏振片,否則無光通過。

光柵化三角形

三角形:最基礎(chǔ)的廣泛應(yīng)用的圖形

原因是

1.最基礎(chǔ)的多邊形(邊數(shù)最少的多邊形)

2.任何其他圖形都能用三角形拼成

三角形的獨(dú)特性質(zhì)?

1.一定是平面

2.三角形的內(nèi)外好定義

3.三角形三個頂點(diǎn),方便根據(jù)位置做插值漸變

如何根據(jù)三個頂點(diǎn)繪制出整個三角形?

光柵化步驟:

1.采樣2.判斷像素與三角形位置關(guān)系3.逐像素繪制三角形

采樣:將連續(xù)的函數(shù)離散化。在光柵化時,就是將每個像素的中心點(diǎn)作為一個采樣點(diǎn),根據(jù)這個中心點(diǎn)與三角形的位置關(guān)系進(jìn)行賦值。如下圖所示:

判斷像素與三角形位置關(guān)系,如下圖所示,Q在三角形內(nèi)部的條件是,P2Q在P2P0左側(cè),P0Q在P0P1左側(cè),P1Q在P1P2左側(cè)。數(shù)學(xué)表示為三組叉乘同號。當(dāng)某一點(diǎn)確定在三角形內(nèi),使其為1,否則為0。(賦值可有所不同)

因此,光柵化的代碼實(shí)現(xiàn)如下:

1.定義一個inside(t,x,y),如果點(diǎn)xy在三角形里(即三組叉乘同號),函數(shù)值為1,否則為0。

2.進(jìn)行一個遍歷,實(shí)現(xiàn)采樣

三角形的包圍盒

如果每次繪制三角形都要把整個屏幕空間遍歷一遍,會浪費(fèi)很多時間。因此,可以只在恰好能包圍三角形的矩形范圍內(nèi),進(jìn)行遍歷。也就是三角形包圍盒。

只需要從三個頂點(diǎn)中得到最左、最右、最高、最低的信息即可得到包圍盒。如下。

2.4走樣和反走樣

采樣會帶來一些artifacts(瑕疵),如鋸齒、摩爾紋、車輪效應(yīng)等等。

如下圖就是走樣(鋸齒)的效果:

走樣產(chǎn)生原因:

信號變換速度過快,采樣速度跟不上。(具體會在后面闡釋)

頻域基礎(chǔ)

cos和sin都有固定的頻率,而根據(jù)傅里葉級數(shù)可以知道任何一個函數(shù)都可以由cos和sin逼近表示,如下為門函數(shù)用三角函數(shù)表示圖示。

對某個函數(shù)進(jìn)行傅里葉變換,可以得到它在頻域上的函數(shù)。

下圖呈現(xiàn)了一張圖在時域中和頻域中的樣子。

頻域中越低頻越靠近中間,表示變化不明顯的區(qū)域;越高頻越靠近邊緣,表示變化明顯的輪廓等。

因此,如果過濾掉高頻的波(低通濾波),就會產(chǎn)生模糊效果。如果過濾低頻(高通),就會保留輪廓。這種過濾,在時域上表現(xiàn)為卷積,在頻域表現(xiàn)為相乘。

卷積:指遍歷像素,每個像素由它及它周圍的像素進(jìn)行一系列計算而成,這些計算由如下圖中3x3的(也可以是不同尺寸)矩陣來確定。數(shù)值不同,實(shí)現(xiàn)的效果也不同。

如下圖為線性低通濾波在時域和頻域上的過程。時域卷積,頻域相乘。

采樣的時候在時域和頻域發(fā)生了什么?

下圖是在時域中,將某個函數(shù)分解成了五個三角函數(shù)的圖示。用相同的采樣頻率進(jìn)行采樣,可以看到f1x的采樣基本上可以還原f1x的曲線,而當(dāng)函數(shù)本身的頻率越高時,走樣的現(xiàn)象越明顯。

在頻域中,采樣相當(dāng)于對原始頻譜進(jìn)行了復(fù)制搬移。

那么走樣是在哪里產(chǎn)生的呢?從之前的時域分解圖上可以看到,是由于采樣頻率不足以還原高頻的三角函數(shù),所以導(dǎo)致了走樣;從頻域圖中可以看到,當(dāng)采樣頻率fs<2*f0時,會產(chǎn)生混疊,于是導(dǎo)致了走樣。(時域頻域根本上是一回事,就是采樣頻率追不上信號頻率)

既然如此,如何進(jìn)行反走樣呢?

根據(jù)時域中產(chǎn)生走樣的原因,將高頻的三角函數(shù)去掉,就可以避免采樣無法還原三角函數(shù);

根據(jù)頻域中的原因,在搬移之前將高出fs/2的部分去掉,就可以防止混疊。

(另外一種方式是增大采樣率,但是受制于屏幕分辨率,無法實(shí)現(xiàn))

綜合來講,就是要在頻域進(jìn)行低通濾波,濾掉高頻信號,再進(jìn)行采樣。在前文頻域基礎(chǔ)中提到,低通濾波會使圖像丟失高頻突變信息,變得模糊,因此反走樣在時域上看,就是先模糊,再采樣。

頻域上的反走樣

?

時域上的反走樣

對每個像素而言,相當(dāng)于發(fā)生了下圖的事情:每個像素都成為了一個平均。

上述說法對圖像的模糊是硬傷,因此在實(shí)際操作中,為了保證清晰度,采用了MSAA算法。

MSAA

算法核心:把每個像素分成多個部分(也可以用不規(guī)則的分布),計算每個部分是否在三角形內(nèi)部,所有部分計算完成后,計算出整個像素的覆蓋率。根據(jù)覆蓋率著色。

如下圖,將每個像素分成4部分,每個部分都要計算是否在三角形內(nèi)部。最終再以像素為單位計算覆蓋率。

代價:增大計算量,如果是一個像素分成4份,就要增加4倍計算量。


除了MSAA外,課中還簡要提到了如下兩個算法:

FXAA快速近似抗鋸齒

先得到有鋸齒的圖,找到邊界,換成沒鋸齒的邊界

TAAtemporal?AA

復(fù)用上一幀的結(jié)果(可以理解成MSAA的分割變到了時間維度上)


2.5深度緩沖z-buffer

如何處理遠(yuǎn)近遮擋關(guān)系:

1.畫家算法,先畫最遠(yuǎn)的物體,新光柵化的東西會覆蓋之前畫好的物體。但是在深度關(guān)系無法清晰對比的物體上容易出問題,比如下圖情況,三者互相遮擋,互為前后。


2.z-buffer

原理:對一個場景,同時渲染出兩個結(jié)果(兩個同步進(jìn)行),一個是最后的結(jié)果framebuffer,一個是場景中任何一個像素對應(yīng)的深度depthbuffer。如下圖。

每個像素記錄最淺深度。

起初先設(shè)置所有像素的最淺深度為無窮大。

在光柵化時,每繪制一個三角形,其中每個像素都會判斷是否比最淺深度小,如果小,就把framebuffer中的顏色值改為這個像素的顏色值,并把這個像素的z值設(shè)為最小深度。

其過程圖示如下,先繪制了紅色三角形,由于紅色三角形中所有像素點(diǎn)都小于當(dāng)前最淺深度R,因此這些點(diǎn)的顏色都變成紅色,最淺深度都變成5。接著繪制藍(lán)色三角形,其中比最淺深度小的像素點(diǎn)的值蓋了原來的值,而其他的則沒有覆蓋。

無論渲染的先后順序如何,其遮擋關(guān)系都是確定的。

參考資料:

https://www.bilibili.com/video/BV1X7411F744

games101學(xué)習(xí)筆記-三角形光柵化p5p6的評論 (共 條)

分享到微博請遵守國家法律
余干县| 右玉县| 郧西县| 绥宁县| 高要市| 老河口市| 八宿县| 巴林右旗| 洪湖市| 色达县| 浪卡子县| 民勤县| 鸡泽县| 巴彦淖尔市| 土默特右旗| 晋州市| 岗巴县| 施甸县| 灵武市| 新和县| 万宁市| 恩施市| 淄博市| 金塔县| 盘山县| 高青县| 汝南县| 惠安县| 英吉沙县| 海晏县| 金阳县| 南乐县| 上虞市| 翼城县| 镇宁| 望城县| 龙岩市| 尉犁县| 商水县| 定兴县| 沙坪坝区|