緊接著上一篇文章的shader入門知識(shí)的總結(jié),本文主要總結(jié)shader中的紋理貼圖、透明度混合、頂點(diǎn)動(dòng)畫、后期特效處理等操作。如果有什么地方有錯(cuò),請(qǐng)指出更正,謝謝。本文的代碼主要來(lái)自開源書:unity入門精要
一、Unity shader中的紋理
1、簡(jiǎn)單紋理
在unity shader中,紋理的主要作用是用來(lái)給模型貼上一個(gè)外表,這樣得到的模型顏色就具有紋理的顏色混合。在常見的一些shader上,都會(huì)有一個(gè)_MainTex的選項(xiàng),這就是我們常常用的主紋理貼圖。對(duì)于紋理貼圖,其對(duì)應(yīng)的需要有紋理坐標(biāo)。在應(yīng)用階段,unity就會(huì)將模型的紋理坐標(biāo)進(jìn)行整理,存儲(chǔ)在語(yǔ)義為TEXCOORD的語(yǔ)義中,通常我們會(huì)在shader中定義應(yīng)用階段到頂點(diǎn)計(jì)算階段的結(jié)構(gòu)體:
struct a2v{ vertex:POSITION; texcoord:TEXCOORD; }
其中的texcoord就是紋理坐標(biāo),注意這是模型上頂點(diǎn)的原始紋理坐標(biāo),還需要在頂點(diǎn)著色器上進(jìn)行坐標(biāo)轉(zhuǎn)換操作:
TRANSFORM_TEX(i.texcoord,_MainTex) = i.texcoord.xy * _MainTex.Scale + _MainTex.Offset
如果模型的貼圖沒有縮放和偏移,則可以直接采用原生的頂點(diǎn)紋理坐標(biāo)。