zoukankan      html  css  js  c++  java
  • 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)Unity46EditorDataCGIncludes

     

    首先,我们在Unity Editor中直接CreateShader。同时创建一个空的材质球。

    打开编辑器,就可以看到文件最给我们提供的原始代码。接下来就开始修改吧。

    1Delete>_MainTex ("Base (RGB)", 2D) = "white" {}

    21的代码行Add>_EmissiveColor("Emissive Color",Color) = (1,1,1,1)

    当完成2操作的时候 切换回unity editor,你会发现着色器代码编译ok了。把他给我们的BasicMat。就可以看到我们添加的属性了。

     2 Finish

    32的代码下行Add>_AmbientColor("Ambient Color",Color)=(1,1,1,1)

     3 Finish,又多了一个Color属性了。

    43的代码下行 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

  • 相关阅读:
    Delphi下Treeview控件基于节点编号的访问
    oracle的conn / as sysdba是以sys还是system用户登录呢?
    delphi 字母加数字如何自增??比如0A--0Z,1A--1Z一直到9A--9Z 请赐教
    ORACLE_HOME要怎么配置?
    sqlplus / as sysdba 详解
    oracle 11G数据库实例增加内存
    SQL在字符串中取出最长数字子序列
    delphi 全局变量的定义与初始化赋值
    Delphi公用函数单元
    Dapper的正确使用姿势
  • 原文地址:https://www.cnblogs.com/2Yous/p/4204513.html
Copyright © 2011-2022 走看看