Unity3D shader脚本
Unity中的shader脚本,是用叫做shaderlab的脚本语言来写。这个unity中的shader不只是DX中HLSL写的顶点和像素shader,而应该说是对应着
DX中的Effect脚本,定义了一个完整渲染的状态。
一个文件,只能包含一个unity的shader
shader文件的内容:
简单的一个shader的内容框架大致如下:
shader "shader name"
{
properties
{
_Color("Diffuse Color", Color) = (1,.5,.5,1)
_Texture("Main Texture", 2D) = ""{}
}
SubShader
{
Tags{"Queue"="Transparent"}
pass
{
Tags{}
Material{}
}
}
Fallback ""
}
框架看上去非常简洁,大致的功能也从字面意思上面就可以理解。
properties 中定义的变量,是可以暴露出来给编辑器编辑的,在unity编辑器中选中一个材质,材质中的shader里面定义在properties 
中的变量就会出现该材质的属性面板中,可以手动设置对应的属性。其中,纹理属性后面,还有一些可选的属性可以设置,用于设置纹理的坐标,和其他一些属性。
当使用顶点shader的时候,该属性标记的纹理坐标无效。
一个SubShader相当于DX中的技术,一个shader中可以出现多个subshader。在引擎渲染物体的时候,会在shader中找到第一个可以匹配硬件的SubShader,用于渲染。
如果一个都没有找到,则用 Fallback 中的shader来渲染物体。
Tags 标记。SubShader 和 pass都有自己的标记。先来说说SubShader的Tags,这个Tags是用来告诉引擎该什么时候渲染该物体。一般在渲染引擎中,
渲染物体顺序为 背景物体->不透明物体->透明物体->UI。Unity给了几个保留的关键字,Background, Geometry, Transparent,Overly.也就对应着背景,不透明,透明,UI。
在内部,这几个关键字都对应着一个数值Background = 1000, Geometry = 2000, Transparent = 3000,Overly = 4000。所以,我们也可以把tag这样写:
Tags{"Queue"="Geometry + 1"}
这代表着该物体时在不透明物体渲染之后,透明物体渲染之前被渲染。
Unity3D shader脚本的更多相关文章
- Unity3D shader简介
		Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ... 
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
		本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ... 
- Unity3D批处理脚本
		Unity3D批处理脚本 本文属于转载,如有侵权,请留言,我会及时删除! Max09在模型到处的模型和U3D场景的尺寸不一致,Max09中的1m导到U3D中,只有0.01m,这时可以在U3D中将模型的 ... 
- 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
		本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ... 
- 【淡墨Unity3D Shader计划】四 热带雨林的文章: 排除、深度测试、Alpha测试和基本雾编译
		本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云 ... 
- 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&混合操作编译
		本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨) ... 
- 【浅墨Unity3D Shader编程】之中的一个  夏威夷篇:游戏场景的创建 & 第一个Shader的书写
		本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ... 
- 【译】Unity3D Shader 新手教程(1/6)
		本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ... 
- 转 猫都能学会的Unity3D Shader入门指南(二)
		猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ... 
随机推荐
- Android 遍历界面控件
			//遍历界面上的控件 fubin.pan LinearLayout sLinerLayout = (LinearLayout)findViewById(R.id.layout_scr); for (i ... 
- [Effective JavaScript 笔记]第22条:使用arguments创建可变参数的函数
			第21条讲述使用可变参数的函数average.该函数可处理任意数量的参数并返回这些参数的平均值. 如何创建可变参数的函数 1.实现固定元数的函数 书上的版本 function averageOfArr ... 
- 自编译ngrok服务器
			转载:http://www.haiyun.me/archives/1012.html 首先安装GO环境,http://www.haiyun.me/archives/1009.html 1 2 3 4 ... 
- android.os.BadParcelableException: ClassNotFoundException when unmarshalling:解决办法
			例如在用AlarmManager的时候 AlarmManager alarmMgr = (AlarmManager) mContext .getSystemService(Context.ALARM_ ... 
- 编译 uImage
			编译 uImage 和测试 u-Boot - 小猪爱拱地 - 博客频道 - CSDN.NET http://blog.csdn.net/caspiansea/article/details/38057 ... 
- iOS 和 Android 中的Alert
			iOS 和 Android中都有alert这种提示框,下面简单介绍下. ios中的alert叫做UIAlertView,共有4种样式,由于在ios7上,自定义alertview不太好用,所以也就这4种 ... 
- HDU1568斐波那契推理
			Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ... 
- Android之jni深入
			小技巧:自动生成 java本地方法对应的c代码的方法名 javah 指令 +全类名 java1.6版本 class C:\workspace\HelloWorldFromC2\bin\classes ... 
- 【转】Quartus II调用modelsim无缝仿真
			Quartus II调用modelsim无缝仿真 ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com 本篇文章为转载,写的不错,最近在学mode ... 
- php  练习
			下拉样式 <select> <?php $a = array( array("n001 汉族"), array("n002 回族"), arr ... 
