项目导出了unitypackage上传到了Git
1.流动的水面
Shader "Custom/River" {
Properties{
_Color("Color", Color) = (1,1,1,1)
_MainTex("Albedo (RGB)", 2D) = "white" {}
_RiverSpeedX("X_Speed", range(2, 10)) = 7
_RiverSpeedY("Y_Speed", range(2, 10)) = 7
}
SubShader{
Tags { "RenderType" = "Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
fixed4 _Color;
fixed _RiverSpeedX;
fixed _RiverSpeedY;
void surf(Input IN, inout SurfaceOutput o) {
//_Time代表时间
fixed xSpeed = _RiverSpeedX * _Time;
fixed ySpeed = _RiverSpeedY * _Time;
fixed2 uv = IN.uv_MainTex + fixed2(xSpeed, ySpeed);
fixed4 c = tex2D(_MainTex, uv) * _Color;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
2.地球的自转
Shader "Custom/Ball" {
Properties {
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Color("Color", color) = (0, 0, 0, 0)
_Alpha("Alpha", Range(0, 1)) = 0.5
_RiverSpeedX("X_Speed", range(0.5, 10)) = 0.6
_RiverSpeedY("Y_Speed", range(0.5, 10)) = 0.6
}
SubShader {
Tags { "RenderType"="Transparent" }
LOD 200
CGPROGRAM
//alpha表示透明
#pragma surface surf Lambert alpha
sampler2D _MainTex;
fixed _Alpha;
fixed _RiverSpeedX;
fixed _RiverSpeedY;
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed xSpeed = _RiverSpeedX * _Time * 0.1;
fixed ySpeed = _RiverSpeedY * _Time * 0.1;
fixed2 uv = IN.uv_MainTex - fixed2(xSpeed, ySpeed);
fixed4 c = tex2D (_MainTex, uv);
o.Albedo = _Color.rgb;
o.Alpha = _Color.a * c.a * _Alpha;
}
ENDCG
}
// FallBack "Diffuse" //可以产生阴影
}
3.带有法线贴图的(岩石表面)
Shader "Custom/RockShader" {
Properties {
_Color("Color", color) = (1, 1, 1, 1)
_MainTex("MainTex", 2D) = "white"{}
_BumpMap("BumpMap", 2D) = "bump"{}
_Specular("Specular", range(0, 1)) = 0.6
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
sampler2D _BumpMap; //法线贴图
fixed4 _Color;
float _Specular;
struct Input
{
float2 uv_MainTex;
float2 uv_BumpMap;
};
void surf(Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
o.Albedo *= _Color;
o.Specular = _Specular;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
}
FallBack "Diffuse"
}
4.最基本的
Shader "MS/FirstShader"
{
Properties
{
_MainTex("贴图", 2D) = "white"{}
}
//核心,子着色器
SubShader
{
//渲染模式 不透明
Tags{"RenderType" = "opaque"}
LOD 200
//开始CG代码
CGPROGRAM
//声明着色器模式:表面着色器 , 光照模型:Lambert
#pragma surface surf Lambert
sampler2D _MainTex;
//声明结构体Input
struct Input
{
float2 uv_MainTex;
};
// 实现surf函数 , 该函数必须有两个参数:
//Input 输入,SurfaceOutput(内置)输出
void surf(Input IN, inout SurfaceOutput o)
{
o.Albedo = 0; //环境光为白色
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
}
ENDCG
}
}
网友评论