unityshader 晶格化消散
前言
幾何著色器,而且作為最近才可編程的著色器,在網(wǎng)上看到他的案例也少得可憐。幾何著色器在我們平時的項目中使用的很少,畢竟我們開發(fā)過程對于光照的需求,以及他的性能的優(yōu)化幾乎占了shader使用的六七十。但是對于新型的著色器,他的很多功能潛力都有待開發(fā)。下面就是他的運用。
效果
話不多少 先看效果


不熟悉幾何著色器的同學可以走下面鏈接進去
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-geometry-shader#return-value
功能展示






幾個基本原理
1 RGB通道噪點圖——處理隨機效果。 看到上面的按理可以知道有很多的隨機的行為,列如圖片從左邊隨機的消散,每個消散的晶片隨機的位置,和隨機的旋轉方向等都是使用一張噪點圖。
2 構建平移旋轉矩陣——處理晶片的移動和旋轉。應為我們并沒有使用貼圖記錄每一個晶片的位置,所以每一個晶片位置需要根據(jù)時間和噪點圖,推斷出其位置和旋轉角度。
3 向量于面相交的數(shù)學原理——處理從哪個方向消融以及消融的方向。從上面可以看到,消融的方向以及晶塊的消散方向都是可以根據(jù)materal自定義的。用途更廣泛了。
注意事項
因為是幾何著色器的原因,所以本身對Gpu硬件的需求也很高,應該是shader4.0以后的。所以可能很多手機并不能支持這種消耗的著色器。但是電腦使用幾何著色器確是很好。
對于我寫的這個shader,也并不支持逐像素光照。畢竟每一個頂點要獲取法線。在我自己構建的兩個矩陣下,每個定點要多兩次矩陣轉換。對性能來說是個不少的消耗。
結束
這個是面片的形式往外擴散,也可以做成幾何體,但是感覺面片的形式可能更加符合審美,并沒有發(fā)出去。
通過測試,對性能的消耗還是有的。畢竟這個著色器暫時提供的借口有限,能夠優(yōu)化的地方也相對比較少。
功能有不足之處或者有問題可以加我哦:2364823151