Shader筆記

切線空間是由模型中該頂點(diǎn)處的法線、切線和副切線組成的,就算沒(méi)有法線紋理,模型的每個(gè)頂點(diǎn)也是有自己的切線空間的。因?yàn)槲覀円趂ragment shader里構(gòu)建變換矩陣,所以到了像素級(jí)別的時(shí)候你可以認(rèn)為此時(shí)每個(gè)像素的切線空間的三個(gè)坐標(biāo)軸是由頂點(diǎn)處的三個(gè)向量插值過(guò)來(lái)的。

你所說(shuō)的“每個(gè)像素點(diǎn)的法線應(yīng)該都是和它自己的切線空間的z軸重合的”,準(zhǔn)確說(shuō)來(lái)是每個(gè)像素點(diǎn)的插值法線應(yīng)該都是和它自己的z軸重合的,因?yàn)槲覀兙褪鞘褂昧诉@個(gè)值肯定是一致的……法線貼圖里存儲(chǔ)的是在這個(gè)切線空間里面的某個(gè)方向,是我們希望高模中該處的法線方向。

你會(huì)有這樣的問(wèn)題應(yīng)該是把模型法線和我們期望的法線弄混了。法線貼圖一般是由高精度模型得來(lái)的,而我們真正使用的模型是由高模簡(jiǎn)化而來(lái)的,它包含了的頂點(diǎn)數(shù)和面片數(shù)都大大小于高模,這就意味著法線精度一定會(huì)缺失。所以我們就需要使用一張像素精度級(jí)別的紋理來(lái)存儲(chǔ)高模的法線信息,這就是法線紋理。

頂點(diǎn)坐標(biāo)和正切線為什么是float4,這有點(diǎn)意思,因?yàn)檫@里它表示是齊次坐標(biāo),比如我們這樣表示一個(gè)float4(x,y,z,w),當(dāng)w = 1的時(shí)候它表示點(diǎn)(x,y,z),當(dāng)w= 0的時(shí)候它表示一個(gè)向量(x,y,z)。區(qū)別就在這里,當(dāng)W為1時(shí)表示點(diǎn),當(dāng)W為0時(shí)表示向量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要介紹cocos2d-x如何使用OpenGL實(shí)現(xiàn)著色器程序,介紹可以通過(guò)GLSL語(yǔ)言實(shí)現(xiàn)的兩類著色器...
    work_xiao閱讀 5,008評(píng)論 0 5
  • <轉(zhuǎn)>我也忘了轉(zhuǎn)自哪里,抱歉,感謝原作者 什么是Shader Shader(著色器)是一段能夠針對(duì)3D對(duì)象進(jìn)行操作...
    星易乾川閱讀 5,846評(píng)論 1 16
  • 一.標(biāo)準(zhǔn)光照模型OpenGL與Direct3D提供了幾乎相同的固定功能光照模型。什么是固定功能光照模型?在過(guò)去只有...
    karma085閱讀 3,844評(píng)論 0 2
  • 模糊效果在游戲中經(jīng)常會(huì)用到,有的為了突出前景會(huì)把背景給模糊化,有的是因?yàn)橐恍┘寄苄枰:ЧD:莝ha...
    work_xiao閱讀 4,142評(píng)論 0 1
  • 01 昨天晚上,我重看了星爺?shù)慕?jīng)典影片《少林足球》,經(jīng)典的影片重看還是會(huì)有許多心得。 星爺扮演的小師弟去找三師兄想...
    凌阿深閱讀 1,916評(píng)論 12 20

友情鏈接更多精彩內(nèi)容