unity3d shaderlab 靜態(tài)貼圖光照模型

unity3d shaderlab 靜態(tài)貼圖光照模型

ID:9998393

大小:804.00 KB

頁數(shù):10頁

時間:2018-05-20

unity3d shaderlab 靜態(tài)貼圖光照模型_第1頁
unity3d shaderlab 靜態(tài)貼圖光照模型_第2頁
unity3d shaderlab 靜態(tài)貼圖光照模型_第3頁
unity3d shaderlab 靜態(tài)貼圖光照模型_第4頁
unity3d shaderlab 靜態(tài)貼圖光照模型_第5頁
資源描述:

《unity3d shaderlab 靜態(tài)貼圖光照模型》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、其實在unity的光照模型中,我們可以把光照訊息烘培進入一個2D貼圖,來實現(xiàn)著色器的光照效果。??更多精彩請關(guān)注【狗刨學(xué)習(xí)網(wǎng)】??下面是在unity中關(guān)閉燈光和打開燈光的對比效果。所以這類著色器的缺點就是不會隨著光源變化效果。??????????????接下來,我們開始創(chuàng)建,首先通過軟件MaCrea來制作我們的2D光照貼圖,MaCrea軟件???????通過該軟件可以快速制作一個完整的發(fā)光球體平面圖。??完成靜態(tài)光照貼圖的制作后。在unity中創(chuàng)建Shader,Material。直接打開Shader腳本編輯:1>roperties:1.

2、ze="2">1Properties{2.2?3.3_MainTint("DiffuseColor",Color)=(1,1,1,1)4.4?5.5_MainTex("Base(RGB)",2D)="white"{}6.6?7.7_NormalMap("NormalMap",2D)=""{}8.8?1.9}復(fù)制代碼2>SubShader:1.1CGPROGRAM2.2?3.3#pragmasurfacesurfUnlitvertex:vert4.4?5.5??6.6?7.7float4_MainTint;8.

3、8?9.9sampler2D_MainTex;10.10?11.11sampler2D_NormalMap;12.12?13.13structInput{14.14?15.15float2uv_MainTex;16.16?17.17float2uv_NormalMap;18.18?1.19float3tan1;2.20?3.21float3tan2;4.22?5.23};復(fù)制代碼//因為我們要使用單獨的球體貼圖來實現(xiàn)光照,所以我們無需使用Lambert光照函數(shù),只需要申明自定義無光亮的光照函數(shù);3>光照函數(shù)1.

4、>1inlinefixed4LightingUnlit(SurfaceOutputs,fixed3lightDir,fixed3atten){2.2?3.3fixed4c=fixed4(1,1,1,1);4.4?5.5c.rgb=c*s.Albedo;6.6?7.7c.a=s.Alpha;8.8?9.9returnc;10.10?11.11}復(fù)制代碼//我們只希望通過外部物體來產(chǎn)生陰影,因為該著色器不受光源的;4>計算球面貼圖1.1voidvert(inoutappdata_fullv,outInputo){

5、2.2?3.3UNITY_INITIALIZE_OUTPUT(Input,o);4.4?5.5??6.6?7.7TANGENT_SPACE_ROTATION;8.8?9.9o.tan1=mul(rotation,UNITY_MATRIX_IT_MV[0].xyz);10.10?11.11o.tan2=mul(rotation,UNITY_MATRIX_IT_MV[1].xyz);12.12?13.13}復(fù)制代碼//為了正確的檢索到球面貼圖,我們需要把正切旋轉(zhuǎn)矩陣乘以當(dāng)前模型的逆轉(zhuǎn)模型視圖;5>完善surf1.

6、1voidsurf(InputIN,inoutSurfaceOutputo){2.2?3.3float3normals=UnpackNormal(tex2D(_NormalMap,IN.uv_NormalMap));4.4?1.5o.Normal=normals;2.6?3.7??4.8?5.9float2litSphereUV;6.10?7.11litSphereUV.x=dot(IN.tan1,o.Normal);8.12?9.13litSphereUV.y=dot(IN.tan2,o.Normal);10.14?11.15??12.16?13.17half4c=t

7、ex2D(_MainTex,litSphereUV*0.5+0.5);14.18?15.19o.Albedo=c.rgb*_MainTint;16.20?17.21o.Alpha=c.a;18.22?19.23}復(fù)制代碼??通過以上的步驟,我們完成這個靜態(tài)的光照模型。返回unity中簡單設(shè)置后,就可以看出效果了。???????在上面的過程中,最主要的是vert函數(shù),因為在這個函數(shù)里,我們把旋轉(zhuǎn)切向量和逆轉(zhuǎn)模型視圖矩陣相乘,在賦值給o.tan1和o.tan2。??這個計算就是把向量彎曲到何時的位置來檢索球面的貼圖。而逆轉(zhuǎn)模型視

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。