Unity3d 內置世界變量

Unity3d 內置世界變量

// The following built-in uniforms (except _LightColor0) 
// are also defined in "UnityCG.cginc", 
// i.e. one could #include "UnityCG.cginc" 
uniform float4 _Time, _SinTime, _CosTime; // time values
uniform float4 _ProjectionParams;
// x = 1 or -1 (-1 if projection is flipped)
// y = near plane; z = far plane; w = 1/far plane
uniform float4 _ScreenParams; 
// x = width; y = height; z = 1 + 1/width; w = 1 + 1/height
uniform float4 unity_Scale; // w = 1/scale; see _World2Object
uniform float3 _WorldSpaceCameraPos;
uniform float4x4 _Object2World; // model matrix
uniform float4x4 _World2Object; // inverse model matrix 
// (all but the bottom-right element have to be scaled 
// with unity_Scale.w if scaling is important) 
uniform float4 _LightPositionRange; // xyz = pos, w = 1/range
uniform float4 _WorldSpaceLightPos0; 
// position or direction of light source
uniform float4 _LightColor0; // color of light source 

表面著色器的標準輸出結構(Surface Output)

struct SurfaceOutput   
{  
    half3 Albedo;            //反射率,也就是紋理顏色值(r,g,b)   
    half3 Normal;            //法線,法向量(x, y, z)   
    half3 Emission;          //自發(fā)光顏色值(r, g,b)   
    half Specular;           //鏡面反射度   
    half Gloss;              //光澤度  
    half Alpha;              //透明度  
};  

表面著色器輸入結構(Input Structure)

float3 viewDir - 視圖方向( view direction)值。為了計算視差效果(Parallax effects),邊緣光照(rim lighting)等,需要包含視圖方向( view direction)值。
float4 with COLOR semantic -每個頂點(per-vertex)顏色的插值。
float4 screenPos - 屏幕空間中的位置。 為了反射效果,需要包含屏幕空間中的位置信息。比如在Dark Unity中所使用的 WetStreet著色器。
float3 worldPos - 世界空間中的位置。
float3 worldRefl - 世界空間中的反射向量。如果表面著色器(surface shader)不寫入法線(o.Normal)參數,將包含這個參數。 請參考這個例子:Reflect-Diffuse 著色器。
float3 worldNormal - 世界空間中的法線向量(normal vector)。如果表面著色器(surface shader)不寫入法線(o.Normal)參數,將包含這個參數。
float3 worldRefl; INTERNAL_DATA - 世界空間中的反射向量。如果表面著色器(surface shader)不寫入法線(o.Normal)參數,將包含這個參數。為了獲得基于每個頂點法線貼圖( per-pixel normal map)的反射向量(reflection vector)需要使用世界反射向量(WorldReflectionVector (IN, o.Normal))。請參考這個例子: Reflect-Bumped著色器。
float3 worldNormal; INTERNAL_DATA -世界空間中的法線向量(normal vector)。如果表面著色器(surface shader)不寫入法線(o.Normal)參數,將包含這個參數。為了獲得基于每個頂點法線貼圖( per-pixel normal map)的法線向量(normal vector)需要使用世界法線向量(WorldNormalVector (IN, o.Normal))。

saturate( )函數

saturate的字面解釋是浸濕,浸透。其作用其實也就是將取值轉化為[0,1]之內的一個值。

輸入結構

struct Input   
{  
    //主紋理的uv值  _MainTex聲明的變量前面加uv 表示取變量uv值
    float2 uv_MainTex;  
    //凹凸紋理的uv值  
    float2 uv_BumpMap;  
};  

//變量聲明  
sampler2D _MainTex;//主紋理  
sampler2D _BumpMap;//凹凸紋理 

自定義光照模型

//【1】光照模式聲明:使用自定義的光照模式  
        #pragma surface surf SimpleSpecular  
  
        //【2】實現自定義的光照模式SimpleSpecular  
        half4 LightingSimpleSpecular (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten)   
        {  
            half3 h = normalize (lightDir + viewDir);  
  
            half diff = max (0, dot (s.Normal, lightDir));  
  
            float nh = max (0, dot (s.Normal, h));  
            float spec = pow (nh, 48.0);  
  
            half4 c;  
            c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * spec) * (atten * 2);  
            c.a = s.Alpha;  
            return c;  
        }  

unity3d shader 常用的混合操作

Blend SrcAlpha OneMinusSrcAlpha    // Alpha混合  
Blend One One                       // 相加  
Blend One OneMinusDstColor         // 比較柔和的相加(SoftAdditive)  
Blend DstColor Zero                  // 乘法  
Blend DstColor SrcColor              // 2倍乘法 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容