Aitin原创稿件,转载请注明出处!
1.贴图资源下载
传送门 密码:laty
资源临时 取消
2.unity 导入资源包 youyiu.unitypackage
3.书写和使用第一个Shader
在空白处右键->Create->Shader,
或者是直接点Create下拉菜单->Shader,创建一个Shader文件,取名为 “testShader”。
然后双击打开它,Unity会默认使用名为MonoDevelop的编辑器打开这个Shader文件
发现Unity已经为我们写好了很多代码。
我们不妨自己重新写点不一样的东西。删掉原本的这些代码,拷贝如下代码到编辑器中:。
//-----------------------------------------------【Shader说明】----------------------------------------------
// Shader功能: 凹凸纹理显示+自选边缘颜色和强度
// 使用语言: Shaderlab
//---------------------------------------------------------------------------------------------------------------------
Shader "Shader编程/testShader"
{
//-------------------------------【属性】-----------------------------------------
Properties
{
_MainTex("【纹理】Texture", 2D) = "white" {}
_BumpMap("【凹凸纹理】Bumpmap", 2D) = "bump" {}
_RimColor("【边缘颜色】Rim Color", Color) = (0.17,0.36,0.81,0.0)
_RimPower("【边缘颜色强度】Rim Power", Range(0.6,9.0)) = 1.0
}
//----------------------------【开始一个子着色器】---------------------------
SubShader
{
//渲染类型为Opaque,不透明
Tags{ "RenderType" = "Opaque" }
//-------------------开始CG着色器编程语言段-----------------
CGPROGRAM
//使用兰伯特光照模式
#pragma surface surf Lambert
//输入结构
struct Input
{
float2 uv_MainTex;//纹理贴图
float2 uv_BumpMap;//法线贴图
float3 viewDir;//观察方向
};
//变量声明
sampler2D _MainTex;//主纹理
sampler2D _BumpMap;//凹凸纹理
float4 _RimColor;//边缘颜色
float _RimPower;//边缘颜色强度
//表面着色函数的编写
void surf(Input IN, inout SurfaceOutput o)
{
//表面反射颜色为纹理颜色
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
//表面法线为凹凸纹理的颜色
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
//边缘颜色
half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
//边缘颜色强度
o.Emission = _RimColor.rgb * pow(rim, _RimPower);
}
//-------------------结束CG着色器编程语言段------------------
ENDCG
}
//“备胎”为普通漫反射
Fallback "Diffuse"
}
拷贝完成,保存一下这段代码,unity会自动检测和编译被保存的代码,
我只需返回Unity窗口,等待编译完成即可
4.挂载 纹理贴图 效果如下
哇咔咔 ~~
网友评论