Unity5.0内置Shader解析

原创 2016年02月01日 14:15:54
Shader "Mobile/Bumped Specular" {
Properties {
_Shininess ("Shininess", Range (0.03, 1)) = 0.078125
_MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader { 
Tags { "RenderType"="Opaque" }
LOD 250

CGPROGRAM
#pragma surface surf MobileBlinnPhong exclude_path:prepass nolightmap noforwardadd halfasview interpolateview


inline fixed4 LightingMobileBlinnPhong (SurfaceOutput s, fixed3 lightDir, fixed3 halfDir, fixed atten)
{
fixed diff = max (0, dot (s.Normal, lightDir));
fixed nh = max (0, dot (s.Normal, halfDir));
fixed spec = pow (nh, s.Specular*128) * s.Gloss;

fixed4 c;
c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * spec) * atten;

UNITY_OPAQUE_ALPHA(c.a);

/*此函数定义在UnityCG.cginc文件中,

具体定义为:#define UNITY_OPAQUE_ALPHA(outputAlpha) outputAlpha = 1.0

看函数名称和用法我想此函数的作用为:由于此Shader是不透明的,所以保证最终输出颜色其a通道为1。*/

return c;
}


sampler2D _MainTex;
sampler2D _BumpMap;
half _Shininess;


struct Input {
float2 uv_MainTex;
};


void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
o.Albedo = tex.rgb;
o.Gloss = tex.a;
o.Alpha = tex.a;
o.Specular = _Shininess;
o.Normal = UnpackNormal (tex2D(_BumpMap, IN.uv_MainTex));
}
ENDCG
}


FallBack "Mobile/VertexLit"
}

相关文章推荐

unity shader入门指南与总结

作者学习shader已经有很长一段时间了,这篇文章是对shader的整理和总结。shader的世界缤纷多彩,浩瀚无穷,作者的认识只是弥勒山下的一粒沙子,如沧海一粟,希望次文章可以对您有所帮助,那便是作...

unity3d--内置shader详解

Unity3D内置了很多Shader,文档很详细,自己翻一下.便于加深印象. 首先先解释下Unity3D的Shader.Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同...

UnityShader实例08:溶解消融(Dissolve)材质

溶解消融(Dissolve)材质 在不少3D游戏中,角色死亡后会有一个溶解消融的特效,这个除了粒子特效以外还需要shader的配合。下面就是本例实现的一个效果,当然没有例子配合看起来是搓搓的,不过效果...

【Unity Shaders】Transparency —— 使用alpha通道创建透明效果

本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以...

适合手机上用的实时光照shader,移动平台上着色器的优化

移动平台上着色器的优化 最近在看本书叫《unity着色器和屏幕特效开发秘籍》挺不错的。喜欢的朋友可以下载http://pan.baidu.com/s/1bXwMEM 直接上源码吧,有注释看着舒...

Unity Shader.Find 找不到内置shader

unity Shader.Find()找不到内置shader问题 unity的工程项目中经常会将代码和资源分开,即一个主工程,一个资源工程。主工程里没有资源,资源都放到资源工程中。主工程使用...

Unity内置的Shader打包时丢失

丢失效果如下: 解决办法: 经过上面的设置后,然后再打包,就成功解决内置的shader丢失的问题FR:海涛高软(QQ技术交流群:386476712)...

unity shader 内置变量

官网Manual:http://docs.unity3d.com/Manual/SL-UnityShaderVariables.html unity提供大量的内置变量,来供我们使用,主要包括一些 :...

Unity5 (5.0-5.2) Shader编译机制初探 - 小心,Shader在吞噬你的内存

又被Unity坑了一把,简单说下吧,下面都是流水账,结论就写在最后了,就是Unity5 - 5.2的shader编译机制真是不咋地。1.Why Always me?问题是这样的,我照着Unity5 的...

Unity内置Shader

  • 2017年04月19日 12:53
  • 228KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity5.0内置Shader解析
举报原因:
原因补充:

(最多只允许输入30个字)