本篇内容主要介绍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的更多相关文章

  1. Unity3D ShaderLab Use Properties

    在上一篇,学会了怎么使用ShaderLab 语法:Properties,这一次,我们将会使用属性值点亮材质球. 1:Delete>sampler2D _MainTex; 2:1行位置Add> ...

  2. Unity3D ShaderLab 修改渲染队列进行深度排序

    Unity3D ShaderLab 修改渲染队列进行深度排序 为了更深刻的理解透明度,我们还需要学习一下深度排序,简单来说就是物体被渲染的先后顺序. Unity允许我们通过代码来控制某个特定物体渲染到 ...

  3. Unity3D ShaderLab 透明裁剪着色器

    Unity3D ShaderLab 透明裁剪着色器 上一篇,我们介绍了使用Alpha实现透明的手法,其实Unity为我们的#pragma提供了另一种参数,是我们能做出更高效 简单的透明效果,也就是裁剪 ...

  4. Unity3D ShaderLab 布料着色器

    Unity3D ShaderLab布料着色器 布料着色器是我们在虚拟现实中经常使用的着色器.本篇就来完成一个较为简单的布料着色器. 新建Shader,Material,InteractiveCloth ...

  5. Unity3D ShaderLab 漫反射卷积光照模型

    Unity3D ShaderLab 漫反射卷积光照模型 漫反射卷积[Diffuse convolution]是一个模糊立方体的过程,它保留了立方图的整体光照强度,只模糊了细节. 这种效果在我们要活得一 ...

  6. Unity3D ShaderLab 静态贴图光照模型

    Unity3D ShaderLab 静态贴图光照模型 其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果. ...

  7. Unity3D ShaderLab 立方体图的菲涅尔反射

    Unity3D ShaderLab 立方体图的菲涅尔反射 菲涅尔反射是反射类型中比较常见的一种类型,当我们的视线正对物体表面,那么反射量会明显增加, 我们几乎可以在任何支持反射类型的物体表面看到这种情 ...

  8. Unity3D ShaderLab立方体图的法线渲染

    Unity3D ShaderLab立方体图的法线渲染 某些情况下,我们希望立方体图的材质球上产生法线效果,来更多的表现细节,比如菱形花纹的玻璃,冰块的表面. 在帧数的协调下,我们可以通过input结构 ...

  9. Unity3D ShaderLab 立方体图的反射遮罩

    Unity3D ShaderLab 立方体图的反射遮罩 上一篇,简单的介绍了立方体图的反射,那么我们能不能使用一张纹理对其进行指定遮罩呢?这样美工可以更好的控制图像的效果. 我们接着使用上一篇的sha ...

随机推荐

  1. JSCore的基本使用

    一.简单介绍 JSCore全称为JavaScriptCore,是苹果公司在iOS中加入的一个新的framework.该framework为OC与JS代码相互操作的提供了极大的便利.该工程默认是没有导入 ...

  2. spring配置带参数的视图解析器:ParameterMethodNameResolver

    1.配置处理器 <!-- 处理器 --> <bean id="myController" class="cn.cnsdhzzl.controller.M ...

  3. Java--常用类summary

    /* 2:API的概述(了解) (1)应用程序编程接口. (2)就是JDK提供给我们的一些提高编程效率的java类. 3:Object类(掌握) (1)Object是类层次结构的根类,所有的类都直接或 ...

  4. BestCoder Round #11 题解集合

    1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...

  5. Oracle select case when

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  6. js 日期时间控制器

    /////////////////////////调用实例 // <div> // <span>交易查询:</span> <span>从 // < ...

  7. xampp搭建服务器环境、html5新的input类型

    怎么让别人看见你写的 先把你的文档放入htdocs里面 再输入网址: http://你的IP地址/文件名 就ok了例如我的 HTML5中的input类型: <input>标签规定用户可输入 ...

  8. 绑定本地Service并与之通信-----之二

    import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.app.Se ...

  9. lazyload 分页加载

    http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/ echo $d['pic']; ?>" src=&qu ...

  10. 西天取经第一步——制作自己的HTML5游戏

    废话不说,直入主题:这是一个休闲益智类游戏,与愤怒的小鸟类似采用Box2dWeb引擎.再开发游戏之前,首先我要把Box2dWeb给总结一下方便以后调用 大家可以在http://code.google. ...