首页 > 编程语言 > 详细

Unity-ShaderLab入门

时间:2019-07-08 16:30:09      阅读:117      评论:0      收藏:0      [点我收藏+]

本文章内容源自-Unity Shader入门精要。仅为自己增加记忆程度所写。

 

上一篇已经大致介绍过ShaderLab了,现在让我们更进一步。

 

还记得以下的结构吗:

Shader "ShaderName" {

  Properties{

    //属性

  }

   SubShader{

    //显卡A使用的子着色器

  }

   SubShader{

    //显卡B使用的子着色器

  }

  Fallback "VertexLit"

}

Shader "ShaderName" 其中的ShaderName即为该Shader在Unity里会出现的名字,如若名字设置为"Custom/MyShader",那么如下图      

                技术分享图片

在选择Shader的时候,该Shader会出现在相应的位置。

Properties语义块中包含了一系列属性(Property)。这些属性将会出现在材质面板中。

Properties语义块的定义通常如下:

Properties {

  Name ( "display name" ,  PropertyType = DefaultValue )

  Name ( "display name" ,  PropertyType = DefaultValue )

  //更多属性

}

 

声明这些属性是为了更方便的在材质面板中使用它们。如果我们需要在Shader中访问它们,就需要使用每个属性的名字(Name),这些属性的名字通常是由一个下划线开始。显示的名称(display name)则是出现在材质面板上的名字。我们需要为每个属性指定它们的类型。(PropertyType),常见的属性类型如下表所示。除此之外,我们还需要为每个属性指定一个默认值,在我们第一次把该Unity Shader赋给某个素材时,材质面板上显示的就是这些默认值。

技术分享图片

对于Int,Float,Range这些数字类型的属性,其默认值就是一个单独的数字;对于Color和Vector这类属性,默认值就是圆括号包围的一个四维向量;对于2D,Cube,3D这三种纹理类型,默认值的定义稍微复杂,他们的默认值是通过一个字符串后跟着一个花括号来指定的,其中,字符串要么是空的,要么是内置的纹理名称,如"white" "black" "gray" 或者 "bump"。花括号的用处原本是用于指定一些纹理属性的,例如在Unity5.0以前的版本中,我们可以通过TexGen CubeReflect、TexGen CubeNormal等选项来控制固定管线的纹理坐标的生成。但在Unity5.0以后的版本中,这些选项被移除了,如果我们需要类似的功能。就需要自己在顶点着色器中编写计算相应纹理坐标的代码。 

Unity-ShaderLab入门

原文:https://www.cnblogs.com/optexpr/p/11151900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!