十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Matcap Shader中的動(dòng)態(tài)光照及機(jī)位與反射是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為進(jìn)賢等服務(wù)建站,進(jìn)賢等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為進(jìn)賢企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
傳統(tǒng)Matcap無法響應(yīng)光源與相機(jī)位置變化——也就是無法使用動(dòng)態(tài)的光照、機(jī)位和反射
如下圖中,相機(jī)旋轉(zhuǎn),但無論從哪個(gè)方向看,模型都是受到同樣光照的——不會逆光!
這次就來討論一下如何解決這個(gè)問題~
順便說一句,今天我們要做的事情不需要代碼喲~~
提到圖片采樣模擬光照,Matcap之外有種更具名氣的方法,就是Cubemap(如下圖所示)
Cubemap的優(yōu)點(diǎn)是顯而易見的,能響應(yīng)旋轉(zhuǎn),因此是計(jì)算靜態(tài)反射的首選方法
所以有小伙伴提議用Cubemap代替Matcap,這是個(gè)很好的思路,值得贊揚(yáng)
但Cubemap也有它自己的缺陷:
只能響應(yīng)相機(jī)變化,無法響應(yīng)光照變化
Cubemap繪制困難,相比之下,Matcap的繪制極為簡單和直觀
同分辨率時(shí)清晰度低于Matcap,高清晰度時(shí)占用內(nèi)存更大
若實(shí)時(shí)生成,成本極高(例如Realtime Reflection Probe)
所以我們接下來還是討論如何用Matcap解決光照和旋轉(zhuǎn)的問題,至于反射,還會用到Cubemap,但Cubemap采樣不會在Matcap Shader中計(jì)算
沒錯(cuò),很簡單的方法,我們利用RenderTexture實(shí)時(shí)渲染一張Matcap采樣圖就好了!
球體可以使用任何其他Shader,例如官方Standard Shader
存圖的相機(jī)通過CullingMask只渲染球體
大家可能會想,為什么不全用Standard Shader呢,用相機(jī)渲染RenderTexture效率不是更低了么?
其實(shí)不然,原因如下:
在正式項(xiàng)目中,一幀里需要渲染的物體數(shù)量會很多(例如100個(gè)),假如有兩個(gè)實(shí)時(shí)光,如果全用Standard Shader,不考慮Instancing,那Draw Call至少200以上,而且單次渲染的壓力會比Matcap大很多;而使用RenderTexture的方法,只需要1次Standard+100次Matcap,效率明顯高很多
如果需要多材質(zhì),可參考《Matcap Shader 詳解【4】 - 多材質(zhì)與混合材質(zhì)》,渲染兩三張Matcap,可以組合出場景中各種需要的材質(zhì)表現(xiàn)。而且多個(gè)Matcap也可以通過一個(gè)DC來渲染,不復(fù)雜,所以就不展開說明了~
RenderTexture的相機(jī)只用于渲染一個(gè)球體,所以效率還是很高的,遠(yuǎn)遠(yuǎn)超過RealTime Reflection Probe。
下面我們來看一下實(shí)現(xiàn)的效果(雙光源,除了主光源,還有一個(gè)反光):
如圖,當(dāng)相機(jī)旋轉(zhuǎn)的時(shí)候,Scene視圖右下角可以看到,Matcap圖會實(shí)時(shí)更新,所以Game視圖中繞到角色背后會有逆光效果
可與文章開頭的動(dòng)圖對比
動(dòng)態(tài)光照
如圖,動(dòng)態(tài)調(diào)整光照的旋轉(zhuǎn)方向(Scene視圖中),將實(shí)時(shí)反映到渲染結(jié)果上
反射
Matcap的確可以利用Cubemap來實(shí)現(xiàn)反射,但是為了進(jìn)一步提升效率,Cubemap沒有必要在Matcap中采樣,而是直接渲染到RenderTexture里就好
如下圖所示,Scene右下角可見,動(dòng)態(tài)Matcap既有良好的反射結(jié)果,又有動(dòng)態(tài)變化的明暗,而且想怎么轉(zhuǎn)就怎么轉(zhuǎn),結(jié)果可見Game視圖
注:此處使用的Cubemap就是文章開始給出的例圖,直接用在了光照設(shè)置中的環(huán)境反射上。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。