1.Shader在什么情況下使用
Lightmapped通常用在烘焙貼圖,就是比如Unity烘焙出來的結(jié)果凤薛,需要渲染的話烘焙的貼圖就得用這個shader收厨。
Lightmapped系列基本就下面幾個缴啡,基本都在舊的上面加了一張Lightmapped貼圖采樣,然后混合骂际,因此只分析一個基礎(chǔ)的疗琉,VertexLit系列比較難我們放最后討論。
2.Shader的價值(用的多不多)歉铝,Shader的難度
舊版烘焙能用到吧盈简,這個系列應(yīng)該用的比較多。
3.代碼詳細注釋
Shader "Legacy Shaders/Lightmapped/Bumped Diffuse" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
_LightMap ("Lightmap (RGB)", 2D) = "black" {}//烘焙的貼圖
}
SubShader {
LOD 300
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert nodynlightmap
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
float2 uv2_LightMap;
};
sampler2D _MainTex;
sampler2D _BumpMap;
sampler2D _LightMap;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb * _Color;
//采樣烘焙的貼圖
half4 lm = tex2D (_LightMap, IN.uv2_LightMap);
//用Emission來渲染兩者相乘的結(jié)果犯戏,因此不太需要之前的提亮操作
o.Emission = lm.rgb*o.Albedo.rgb;
//透明混合
o.Alpha = lm.a * _Color.a;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
}
FallBack "Legacy Shaders/Lightmapped/Diffuse"
}
4.Shader編寫思路送火,用到的知識點
用Emission來渲染兩者相乘的結(jié)果,如果我們自己寫先匪,應(yīng)該有很多種寫法种吸,反正都是兩張圖混合顏色嘛。