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使用者,因为我本身自己 ...
 
随机推荐
- memcached工作原理
			
1.Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找.对比以及做到尽可能的散列.同时,memcached用的 ...
 - HDU 3371 kruscal/prim求最小生成树   Connect the Cities  大坑大坑
			
这个时间短 700多s #include<stdio.h> #include<string.h> #include<iostream> #include<al ...
 - 以Python角度学习Javascript(二)之DOM
			
HTML DOM 定义了访问和操作 HTML 文档的标准方法. DOM 将 HTML 文档表达为树结构. 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文 ...
 - Android中获取IMSI和IMEI
			
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); Str ...
 - datetime中strftime和strptime用法
			
from datetime import * format = "%Y-%m-%d %H:%M:%S" a=datetime.now() day=a.day b=a.replace ...
 - Product of Array Exclude Itself
			
Given an integers array A. Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WI ...
 - js 猜数字游戏
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - ExecutorService 和 NSOperationQueue
			
ExecutorService,简化了Android中的并发处理,NSOperationQueue简化了iOS中的并发处理.它们都管理线程池,作用十分相近,下面简单说明一下. 1.ExecutorSe ...
 - iOS 关于objectForKey返回类型是不是mutable
			
以前看NSUserDefault时,记住了那里的objectForKey返回的一定是immutable的对象.现在有点弄混了,其实,NSObject的objectForKey方法没有这个限制,是可以返 ...
 - Java for LeetCode 045 Jump Game II
			
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...