溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

發(fā)布時間:2022-01-18 11:14:24 來源:億速云 閱讀:158 作者:柒染 欄目:大數(shù)據(jù)

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

前言

傳統(tǒng)Matcap無法響應(yīng)光源與相機位置變化——也就是無法使用動態(tài)的光照、機位和反射

如下圖中,相機旋轉(zhuǎn),但無論從哪個方向看,模型都是受到同樣光照的——不會逆光!

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

這次就來討論一下如何解決這個問題~

順便說一句,今天我們要做的事情不需要代碼喲~~

Cubemap ?

提到圖片采樣模擬光照,Matcap之外有種更具名氣的方法,就是Cubemap(如下圖所示)

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

Cubemap的優(yōu)點是顯而易見的,能響應(yīng)旋轉(zhuǎn),因此是計算靜態(tài)反射的首選方法

所以有小伙伴提議用Cubemap代替Matcap,這是個很好的思路,值得贊揚

但Cubemap也有它自己的缺陷:

  1. 只能響應(yīng)相機變化,無法響應(yīng)光照變化

  2. Cubemap繪制困難,相比之下,Matcap的繪制極為簡單和直觀

  3. 同分辨率時清晰度低于Matcap,高清晰度時占用內(nèi)存更大

  4. 若實時生成,成本極高(例如Realtime Reflection Probe)

所以我們接下來還是討論如何用Matcap解決光照和旋轉(zhuǎn)的問題,至于反射,還會用到Cubemap,但Cubemap采樣不會在Matcap Shader中計算

實時Matcap采樣圖

沒錯,很簡單的方法,我們利用RenderTexture實時渲染一張Matcap采樣圖就好了!

  • 球體可以使用任何其他Shader,例如官方Standard Shader

  • 存圖的相機通過CullingMask只渲染球體

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

大家可能會想,為什么不全用Standard Shader呢,用相機渲染RenderTexture效率不是更低了么?

其實不然,原因如下:

  • 在正式項目中,一幀里需要渲染的物體數(shù)量會很多(例如100個),假如有兩個實時光,如果全用Standard Shader,不考慮Instancing,那Draw Call至少200以上,而且單次渲染的壓力會比Matcap大很多;而使用RenderTexture的方法,只需要1次Standard+100次Matcap,效率明顯高很多

  • 如果需要多材質(zhì),可參考《Matcap Shader 詳解【4】 - 多材質(zhì)與混合材質(zhì)》,渲染兩三張Matcap,可以組合出場景中各種需要的材質(zhì)表現(xiàn)。而且多個Matcap也可以通過一個DC來渲染,不復(fù)雜,所以就不展開說明了~

  • RenderTexture的相機只用于渲染一個球體,所以效率還是很高的,遠(yuǎn)遠(yuǎn)超過RealTime Reflection Probe。

下面我們來看一下實現(xiàn)的效果(雙光源,除了主光源,還有一個反光):

動態(tài)機位(相機旋轉(zhuǎn))

如圖,當(dāng)相機旋轉(zhuǎn)的時候,Scene視圖右下角可以看到,Matcap圖會實時更新,所以Game視圖中繞到角色背后會有逆光效果

可與文章開頭的動圖對比


Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

動態(tài)光照

如圖,動態(tài)調(diào)整光照的旋轉(zhuǎn)方向(Scene視圖中),將實時反映到渲染結(jié)果上

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

反射

Matcap的確可以利用Cubemap來實現(xiàn)反射,但是為了進一步提升效率,Cubemap沒有必要在Matcap中采樣,而是直接渲染到RenderTexture里就好

如下圖所示,Scene右下角可見,動態(tài)Matcap既有良好的反射結(jié)果,又有動態(tài)變化的明暗,而且想怎么轉(zhuǎn)就怎么轉(zhuǎn),結(jié)果可見Game視圖

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

Matcap Shader中的動態(tài)光照及機位與反射是怎樣的

注:此處使用的Cubemap就是文章開始給出的例圖,直接用在了光照設(shè)置中的環(huán)境反射上。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI