您的位置:首页 > 移动开发 > Unity3D

Unity着色器和屏幕特效开发秘籍 顶点-片元着色器实现系列-BasicDiffuse

2018-02-24 16:55 501 查看
BasicDiffuse表面着色器代码为:
Shader "BasicDiffuse"
{
Properties
{
_EmissiveColor("Emissive Color",Color) = (1,1,1,1)
_AmbientColor("Ambient Color",Color) = (1,1,1,1)
_MySilderValue("This is a Silder",Range(0,10)) = 2.5
}
SubShader
{
Tags{"RenderType" = "Opaque"}
LOD 200
CGPROGRAM
#pragma surface surf BasicDiffuse
fixed4 _EmissiveColor;
fixed4 _AmbientColor;
float _MySilderValue;
struct Input
{
half2 uv_MainTex;
};
inline fixed4 LightingBasicDiffuse(SurfaceOutput s,fixed3 lightDir,fixed3 viewDir,fixed atten)
{
fixed NdotL = dot(normalize(s.Normal),normalize(lightDir));
fixed4 col;
col.rgb = s.Albedo * _LightColor0.rgb * max(0,NdotL);
col.a = s.Alpha;
return col;
}
void surf(Input IN,inout SurfaceOutput o)
{
fixed4 col = pow((_EmissiveColor + _AmbientColor),_MySilderValue);
o.Albedo = col.rgb;
o.Alpha = col.a;
}
ENDCG
}
FallBack "Diffuse"
}
效果如下:



对应的顶点-片元着色器代码为:Shader "BasicDiffuse"
{
Properties
{
_EmissiveColor("Emissive Color",Color) = (1,1,1,1)
_AmbientColor("Ambient Color",Color) = (1,1,1,1)
_MySilderValue("This is a Silder",Range(0,10)) = 2.5
}
SubShader
{
Pass
{
Tags{"LightMode" = "ForwardBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
fixed4 _EmissiveColor;
fixed4 _AmbientColor;
fixed _MySilderValue;
struct a2v
{
float4 vertex:POSITION;
float3 normal:NORMAL;
};
struct v2f
{
float4 pos:SV_POSITION;
float3 worldNormal:TEXCOORD0;
float3 worldPos:TEXCOORD1;
};
v2f vert(a2v v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.worldPos = mul(unity_ObjectToWorld,v.vertex).xyz;
o.worldNormal = mul(unity_ObjectToWorld,v.normal);
return o;
}
fixed4 frag(v2f i):SV_Target
{
fixed3 worldNormal = normalize(i.worldNormal);
fixed3 lightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));
fixed NdotL = dot(worldNormal,lightDir);
fixed4 col = pow((_EmissiveColor + _AmbientColor),_MySilderValue);
fixed3 finalColor = _LightColor0.rgb * col.rgb * max(0,NdotL);
return fixed4(finalColor,1.0);
}
ENDCG
}
}
FallBack "Diffuse"
}效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐