Lesson 7——陰影貼圖小總結(jié)

好的,我們來(lái)總結(jié)一下Lesson 7主要干了些什么馁痴?
它完成了陰影貼圖的效果翼岁,也就是讓我們渲染的人物模型,有了陰影的存在培廓。

我們來(lái)看下下面兩張圖——


沒(méi)有陰影的圖
有陰影的圖

可能大家看到人物右邊的臉都比較暗,這個(gè)因?yàn)槲覀冄劬吹奈恢盟绊懙拇航校?strong>并不是陰影肩钠。我們所渲染出的陰影,是下面highlight的部分——

標(biāo)記出陰影


那么好象缀,它是怎么實(shí)現(xiàn)的呢蔬将?

做一個(gè)兩步渲染!

所謂的兩步渲染央星,并不是說(shuō)單純地渲染兩遍霞怀,而是使用兩個(gè)著色器分別渲染一遍

第一步渲染的著色器是深度著色器莉给,稱它為depthbuffer毙石。
第二步渲染的著色器是著色器,稱它為shader颓遏。

二者的區(qū)別在哪里呢徐矩?
首先,depthShader中叁幢,相機(jī)的位置是放在光源位置的滤灯,這樣我們可以得到模型的哪些部分可以被光照亮,而哪些部分被自身遮擋曼玩,會(huì)產(chǎn)生陰影鳞骤。

我們通過(guò)depthShader可以得到下圖——


depth

通過(guò)上圖,我們得知黍判,看到的地方豫尽,都是亮的,看不到的顷帖,都或多或少的有些陰影美旧。(可以看看一開(kāi)始放出的圖渤滞,就能明白了)


好,我上面說(shuō)了榴嗅,我們的兩步渲染妄呕,不是單純的渲染兩遍。
我們得想辦法录肯,

將上面depthShader得到的可見(jiàn)度區(qū)域的信息傳遞給下一個(gè)著色器趴腋,

這樣,第二遍渲染結(jié)束论咏,我們才可以得到有陰影的圖。

那么如何傳遞呢颁井?——指針

具體操作是這樣厅贪,我們將shadowbuffer放進(jìn)triangle()函數(shù)中,triangle()函數(shù)通過(guò)指針來(lái)修改triangle()函數(shù)中zbuffer中的值雅宾,而正好當(dāng)?shù)诙€(gè)著色器shader在再一次調(diào)用triangle()函數(shù)的時(shí)候养涮,里面使用的就是zbuffer。

也就是說(shuō)眉抬,我們?cè)赿epthShader中保留了z緩沖區(qū)贯吓,它由shadowbuffer指針指向。這個(gè)DepthShader著色器輕易地將z緩沖區(qū)復(fù)制到幀緩沖區(qū)中蜀变,然后在第二次渲染的時(shí)候悄谐,我們就保留了之前的深度信息

我們來(lái)康康代碼:

triangle(screen_coords, depthshader, depth, shadowbuffer);
void triangle(Vec4f* pts, IShader& shader, TGAImage& image, float* zbuffer) 
triangle(screen_coords, shader, frame, zbuffer);

因?yàn)長(zhǎng)esson 7提到了幀緩沖库北,一開(kāi)始不太明白爬舰,這里補(bǔ)充下——

幀緩沖器對(duì)屏幕每一點(diǎn)都有存儲(chǔ)強(qiáng)度/顏色信息的能力。在幀緩存中寫RGB就是在屏幕上畫(huà)顏色寒瓦。

緩沖器中的單元個(gè)數(shù)情屹,和屏幕上可以顯示的像素總數(shù),至少是一樣的杂腰。也可以更多垃你。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市喂很,隨后出現(xiàn)的幾起案子惜颇,更是在濱河造成了極大的恐慌,老刑警劉巖恤筛,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官还,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毒坛,警方通過(guò)查閱死者的電腦和手機(jī)望伦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門林说,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人屯伞,你說(shuō)我怎么就攤上這事腿箩。” “怎么了劣摇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵珠移,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我末融,道長(zhǎng)钧惧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任勾习,我火速辦了婚禮浓瞪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巧婶。我一直安慰自己乾颁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布艺栈。 她就那樣靜靜地躺著英岭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪湿右。 梳的紋絲不亂的頭發(fā)上诅妹,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音诅需,去河邊找鬼漾唉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛堰塌,可吹牛的內(nèi)容都是我干的赵刑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼场刑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼般此!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起牵现,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铐懊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瞎疼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體科乎,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贼急,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茅茂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏萍。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖空闲,靈堂內(nèi)的尸體忽然破棺而出令杈,到底是詐尸還是另有隱情,我是刑警寧澤碴倾,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布逗噩,位于F島的核電站,受9級(jí)特大地震影響跌榔,放射性物質(zhì)發(fā)生泄漏异雁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一僧须、第九天 我趴在偏房一處隱蔽的房頂上張望片迅。 院中可真熱鬧,春花似錦皆辽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至空免,卻和暖如春空另,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹋砚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工扼菠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坝咐。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓循榆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親墨坚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秧饮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容