當前位置:首頁 >教程首頁 > 遊戲程序 > Unity3D遊戲開發工程師班 >Unity Shader視差遮蔽映射與局部差異導數函數

Unity Shader視差遮蔽映射與局部差異導數函數

發布時間:2020-05-06 10:35:20

Hello . 大家好!今天帶來的是美術向的Unity Shader視差遮蔽映射與局部差異導數函數小教學,我是麥田。

一、視差映射

什麼是視差映射?即視差貼圖。遊戲/影視中使用的一種改進法線貼圖技術。也可以理解為高度圖。

舉個不恰當的例子,一隻鴿子以為自己是一隻老鷹在天上飛的很高。往下看,下麵群山溝壑。受製於我們手機性能的影響,我們就要想辦法去解決這種問題。又或者我需要表達高度的地方,通過曲麵細分或者置換出麵的話,實在太貴了。

這時我們就可以根據實際情況來選擇這方麵的優化方式。視差,其實就是通過切線空間中的視角(相對於法線的角度)和該點處的高度圖的值的函數,來渲染多邊形上某個點的紋理坐標來實現的。

在較陡的視角下,紋理坐標的位移更大,由於視線變化而產生的視差效應給人眼造成了深度錯覺。

二、”上才藝“

1、打開Unity,我用的版本是2019.3.6,安裝好Amplify Shader Editor;

2、版本選擇1.8,最新版本的確實舒服,最重要的是老版本在視差映射方麵MAC上有BUG;

3、然後我們在場景內創建一個平麵 ;

4、Ctrl+Shift+F,選中Cramea,快速切換攝像機角度朝地45度;

5、創建一個Shader文件;

6、準備好一套圖,Base,Normal,AO,Height等等。

OK,正文開始,可以看一下這裏的設置,前向渲染,層級2000。

1.png

首先,我們創建一個Texture Object和UV,注意一下,是Object,不是Sample Texture,然後將Height貼圖給它,UV需要指認為獲取Height。(下圖)

2-1.png2-2.png2-3.png

獲取一個View Dir(視口方向),設置到切線空間。

這裏補充一下,圖表封裝的還是非常好的,View Dir在代碼裏都是要手擼的。View Dir的原理圖長這樣。

3-1.png

View Dir原理圖

3-2.png

創建一個核心節點視差遮擋映射,圖表已經給你封裝好了,就是這個,讓你免去計算的痛苦。

4.png

其基本原理即為獲取到Height貼圖的數據(0-1),進行V方向偏移,記錄獲取到的數據進行步進采樣。

具體算法請參見網易大佬的知乎兩篇譯文,裏麵有詳細的計算方式和實現原理。

創建以下內容,將獲取到的高度UV給到視差遮擋映射。並且創建一個Range,最大值給1,暴露到材質麵板。

7.png

三、”上才藝x2“

創建DDX與DDY這兩個函數

8.png

DDX&DDY節點輸出相對於屏幕空間xy坐標的指定輸入值的偏導數。

這又是什麼玩意?

簡單的說就是三角麵上一個像素的位置上對屏幕坐標x和y方向的導數,也就是該點位置的表麵相對於屏幕平麵的傾斜程度的度量。

具體解釋鏈接:http://www.aclockworkberry.com/shader-derivative-functions/

鏈接中解釋的是GLSL中的用法,兩者其實是一樣的,這裏的dFdX即為DDX,同理dFdy即為DDY。

看到下圖我們能理解,DDX與DDY的計算方式了,GPU光柵的時候,會將他們變成2×2像素的塊。通過獲取塊中像素值之間的差異來計算出導數,即為右邊減去左邊,底下減去上麵。所以,導數是逐像素計算的。

9.png

那麼應用場景在哪裏?Unity3D引擎中的MipMap就是這樣計算而來。

10.png

介紹完了核心的視差遮蔽映射與局部差異導數函數,下麵我們就來繼續完善我們想做的東西吧!

11.png

創建四個TexSample,將MipMode改為Derivative,再創建一個Range(快捷鍵1),暴露出DDX與DDY後,將DDX&DDY給到與其對應的數值。

12.png

最後我們將自定義後的UV傳遞給TexSample,以下為總節點圖:

13.png

最後我們來Game視圖看一下效果。

14.webp.jpg

1.隻有法線無視差的效果

2.擁有了視差

我們看到,類似一個置換的效果,但是邊緣有拉伸鋸齒感(和高度圖有關)。

15.png

3.擁有了DDX&DDY

攝像機拉遠一點之後,就會計算局部差異導數函數,此時鋸齒感消失。

16.png

歸根結底,他還是一個Plane,並沒有改變平麵模型,但是是造成了視覺假象。

來源:Thepoly

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答
×

確定