UE4材質是什么樣的機制


 材質的機制

寫材質跟寫程序非常不同,因為他們是不同的機制。

一般情況下,程序代碼是順序執行的,有跳轉有循環。

但是材質不一樣。

材質是並行運算的

材質是對每個像素(有時是每個頂點)並行運算的。

一個物體表面有多少像素,這個材質就會被同時執行多少遍。

材質沒有循環

材質里面沒有循環。如果材質里加上循環,可能直接把顯卡給燒掉了(哈哈,這里不嚴謹了~)。

因為每個像素都要執行一遍,假設材質里有循環,每個循環的次數是100(好像並不太多),那么要執行的指令數是沒有循環時的100倍(這里又不太嚴謹了。。)!

材質運行時沒有分支

材質中確實可以放bool類型的參數,但是這個參數是Static的。含義就是只能在編輯期修改,運行期不能修改。

還有switch,也是static的。

 

這是官方文檔:

簡單來說,編譯Shader需要對每一個分支進行編譯,如果運行期允許修改,那可能會導致需要編譯的Shader太多,出現Shader大爆炸。

如果你使用過StaticBoolParameter,那你可能會注意到,每次修改這個類型的變量,都會導致重新編譯。

理解這些,對你寫材質有幫助。


原文地址:原文地址

本文首發於翰者學堂

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM