Unity_Shader 之TRANSFORM_TEX詳解

問:

(1) TRANSFORM_TEX是做什麼的

(2)float4 _MainTex_ST 中的_MainTex_ST變量也沒有用到,爲啥非要聲明一下?

 

 

答:

(1)簡單來說,TRANSFORM_TEX主要作用是拿頂點的uv去和材質球的tiling和offset作運算, 確保材質球裏的縮放和偏移設置是正確的。 (v.texcoord就是頂點的uv)

 

 

下面這兩個函數是等價的。

o.uv =   TRANSFORM_TEX(v.texcoord,_MainTex);

 

o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;

_MainTex_ST.xy中是tiling

_MainTex_ST.zw中是offset

(2)而_MainTex_ST的ST是應該是SamplerTexture的意思 ,就是聲明_MainTex是一張採樣圖,也就是會進行UV運算。  如果沒有這句話,是不能進行TRANSFORM_TEX的運算的。_MainTex_ST.xy爲 下圖中的Tiling,zw爲下圖中的offset.

 

如果Tiling 和Offset你留的是默認值,即Tiling爲(1,1) Offset爲(0,0)的時候,可以不用

o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);

換成o.uv = v.texcoord.xy;也是能正常顯示的;相當於Tiling 爲(1,1)Offset爲(0,0),但是如下圖自己填的Tiling值和Offset值就不起作用了

【風宇衝】Unity3D教程寶典之Shader篇:特別講 <wbr>常見問題解答

 

 

 

轉載自風宇衝Unity3D教程學院

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章