MMD聯(lián)動Unity學(xué)習(xí)筆記 Vol.54 Unity Shader Graph Texture2D 相關(guān)節(jié)點

前言 ???? ???? ???? ???? ???? ????
????這期我們還是跟著官方的視頻學(xué)習(xí)Unity里關(guān)于Shader Graph的內(nèi)容,這期是這個系列的第11期,貼圖輸入Input Texture。




顧名思義,2D紋理就是Unity常見的各種貼圖,而Texture Array紋理數(shù)列和Texture Atlas紋理集一樣,都屬于多個紋理的集合。Atlas是把各個元素都存在一張圖中,它本身仍是一張貼圖。而Array這個概念可能對于技術(shù)同學(xué)們來說比較好理解,簡單說,Array就像是一疊卡片一樣疊在一起。在Shader Graph中,Atlas可以使用2D Asset節(jié)點,而Array就要使用到2D Array節(jié)點了。

比較麻煩的是,現(xiàn)在Unity里無法直接在Editor創(chuàng)建紋理數(shù)列,我們只能在代碼中創(chuàng)建。完成代碼在下面工程中。
工程下載:https://github.com/Sennettming/Unity-ShaderGraph-Tutorial

另一個缺點是因為Unity中沒有針對Texture 2D Array的Importer來輔助設(shè)置不同平臺的壓縮格式和大小,所以在針對多平臺打包的時候,我們需要對每一個平臺都烘焙一個單獨的Texture Array,并用代碼將其和對應(yīng)的平臺聯(lián)系起來。

我們使用Sample Texture 2D節(jié)點來采樣輸入給Shader的2D的貼圖,包括法線,簡單來說,這個過程就是把存儲在內(nèi)存里的位圖通過對應(yīng)的UV坐標映射到渲染物體的表面。而紋理采樣節(jié)點會向Shader輸出一個四維向量的顏色值,你可以用自定義的UV算法和上一節(jié)講的采樣器對默認值進行修改。

回到第二節(jié)的案例,可以發(fā)現(xiàn),我們這個效果也主要是由自定義的UV算法來實現(xiàn)的。所以實際上根據(jù)不同的算法,最后采樣得到貼圖的效果,也就大不相同。

Sample Texture 2D LOD和Sample Texture 2D的區(qū)別就在于,LOD節(jié)點可以獲取被采樣節(jié)點的Midmap層級,但這個一般很少被用到。

當采樣Texture Array資源的時候,需要單獨提供一個sliceIndex的參數(shù),做為判斷當前采樣的是數(shù)組中哪一張圖片的依據(jù),對應(yīng)到Sample Texture 2D Array節(jié)點的Index參數(shù)。相對于Texture Atlas說,紋理數(shù)列Texture Array的好處在于可以存儲更多的紋理,而且沒有UV切分的限制。