Unity3D ShaderLab 语法:Properties
本篇内容主要介绍Unity
ShaderLab 语法:Properties
Unity中的整个场景效果的表现,Shader起了至关重要的作用,为了方便我们的学习,unity采用了cg作为着色器语言。
Unity配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的语法,
它不只纪录基本的端点或者映像点(vertex/pixel),也描述了材质所必要的一切资讯。
理解一门足以,cg让学习shader的编写更快捷高效,表面着色器的语言大多基于组件得方式写入着色器。
为了了解unity内置的强大cg功能,可以参考unity editor目录下的文件:D:\Program Files (x86)\Unity46\Editor\Data\CGIncludes:

首先,我们在Unity Editor中直接Create\Shader。同时创建一个空的材质球。
打开编辑器,就可以看到文件最给我们提供的原始代码。接下来就开始修改吧。
1:Delete>_MainTex ("Base (RGB)", 2D) = "white" {}
2:1的代码行Add>_EmissiveColor("Emissive Color",Color) = (1,1,1,1)
当完成2操作的时候 切换回unity editor,你会发现着色器代码编译ok了。把他给我们的BasicMat。就可以看到我们添加的属性了。
2 Finish
3:2的代码下行Add>_AmbientColor("Ambient Color",Color)=(1,1,1,1)
3 Finish,又多了一个Color属性了。
4:3的代码下行 Add>_MySliderValue("Slider Value",Range(0,10))=1.3
4 Finish。
通过类似上面的属性,我们可以创建一个个可视化面板来调整着色器。避免直接修改代码。

定义的Properties中的属性,可以通过UI直接绑定属性在脚本中的值。
其他属性在Unity手册中有说明。至此你也会编写Properties。

着色器内部的每个属性都被名称 (name) 引用(Unity 中,着色器属性名称以下划线开头是很常见的)。在材质检视器中属性会显示为显示名称 (display name)。对每个属性来说,默认值放在等号之后:
对于范围 (Range) 和 浮点 (Float) 属性,默认值只是一个数字。
对于颜色 (Color) 和向量 (Vector) 属性来说,默认值为圆括号中的四个数字。
对纹理(二维 (2D)、矩形 (Rect)、立方体 (Cube))来说,默认值可以是一个空字符串或者是以下内置默认纹理中的一种:"白色”、“黑色”、“灰色”或“凹凸贴图”。
随后在着色器中,通过使用方括号内的属性名称访问属性值:[name].
详细ShaderLab Properties帮助页面参见游戏蛮牛api:
http://www.unitymanual.com/m/Components/SL-Properties.html
鄙视下:
http://edu.china.unity3d.com/learning_document,不登陆不给看api。
Unity3D ShaderLab 语法:Properties的更多相关文章
- Unity3D ShaderLab Use Properties
在上一篇,学会了怎么使用ShaderLab 语法:Properties,这一次,我们将会使用属性值点亮材质球. 1:Delete>sampler2D _MainTex; 2:1行位置Add> ...
- Unity3D ShaderLab 修改渲染队列进行深度排序
Unity3D ShaderLab 修改渲染队列进行深度排序 为了更深刻的理解透明度,我们还需要学习一下深度排序,简单来说就是物体被渲染的先后顺序. Unity允许我们通过代码来控制某个特定物体渲染到 ...
- Unity3D ShaderLab 透明裁剪着色器
Unity3D ShaderLab 透明裁剪着色器 上一篇,我们介绍了使用Alpha实现透明的手法,其实Unity为我们的#pragma提供了另一种参数,是我们能做出更高效 简单的透明效果,也就是裁剪 ...
- Unity3D ShaderLab 布料着色器
Unity3D ShaderLab布料着色器 布料着色器是我们在虚拟现实中经常使用的着色器.本篇就来完成一个较为简单的布料着色器. 新建Shader,Material,InteractiveCloth ...
- Unity3D ShaderLab 漫反射卷积光照模型
Unity3D ShaderLab 漫反射卷积光照模型 漫反射卷积[Diffuse convolution]是一个模糊立方体的过程,它保留了立方图的整体光照强度,只模糊了细节. 这种效果在我们要活得一 ...
- Unity3D ShaderLab 静态贴图光照模型
Unity3D ShaderLab 静态贴图光照模型 其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果. ...
- Unity3D ShaderLab 立方体图的菲涅尔反射
Unity3D ShaderLab 立方体图的菲涅尔反射 菲涅尔反射是反射类型中比较常见的一种类型,当我们的视线正对物体表面,那么反射量会明显增加, 我们几乎可以在任何支持反射类型的物体表面看到这种情 ...
- Unity3D ShaderLab立方体图的法线渲染
Unity3D ShaderLab立方体图的法线渲染 某些情况下,我们希望立方体图的材质球上产生法线效果,来更多的表现细节,比如菱形花纹的玻璃,冰块的表面. 在帧数的协调下,我们可以通过input结构 ...
- Unity3D ShaderLab 立方体图的反射遮罩
Unity3D ShaderLab 立方体图的反射遮罩 上一篇,简单的介绍了立方体图的反射,那么我们能不能使用一张纹理对其进行指定遮罩呢?这样美工可以更好的控制图像的效果. 我们接着使用上一篇的sha ...
随机推荐
- JSCore的基本使用
一.简单介绍 JSCore全称为JavaScriptCore,是苹果公司在iOS中加入的一个新的framework.该framework为OC与JS代码相互操作的提供了极大的便利.该工程默认是没有导入 ...
- spring配置带参数的视图解析器:ParameterMethodNameResolver
1.配置处理器 <!-- 处理器 --> <bean id="myController" class="cn.cnsdhzzl.controller.M ...
- Java--常用类summary
/* 2:API的概述(了解) (1)应用程序编程接口. (2)就是JDK提供给我们的一些提高编程效率的java类. 3:Object类(掌握) (1)Object是类层次结构的根类,所有的类都直接或 ...
- BestCoder Round #11 题解集合
1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...
- Oracle select case when
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- js 日期时间控制器
/////////////////////////调用实例 // <div> // <span>交易查询:</span> <span>从 // < ...
- xampp搭建服务器环境、html5新的input类型
怎么让别人看见你写的 先把你的文档放入htdocs里面 再输入网址: http://你的IP地址/文件名 就ok了例如我的 HTML5中的input类型: <input>标签规定用户可输入 ...
- 绑定本地Service并与之通信-----之二
import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.app.Se ...
- lazyload 分页加载
http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/ echo $d['pic']; ?>" src=&qu ...
- 西天取经第一步——制作自己的HTML5游戏
废话不说,直入主题:这是一个休闲益智类游戏,与愤怒的小鸟类似采用Box2dWeb引擎.再开发游戏之前,首先我要把Box2dWeb给总结一下方便以后调用 大家可以在http://code.google. ...