网站建设资讯

NEWS

网站建设资讯

ShaderLabSyntax基本语法-创新互联

本文为个人从Unity文档翻译所得,如要转载请注明源博客地址:http://ymdzz.blog.51cto.com

成都创新互联公司成立于2013年,先为红安等服务建站,红安等地企业,进行企业商务咨询服务。为红安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

ShaderLab Syntax 基本语法

Unity里的所有的Shader文件都是用一种说明性语言(declarative language)来编写。

在Shader文件里,用括号包含的语法来声明用于描述Shader的变量。

例如显示哪一些Shader属性(shader properties)到Material的监视面板中;做哪种硬件回滚操作;使用哪一种混合模式(blending modes)等等。而真正的Shader代码写在一个CGPROGRAM片段中。

Shader文件的第一个定义就是Shader的名字,每一个文件都必须定义一个(而且只能定义一个)Shader。Material所使用的Shader定义了有多少个物体要被渲染。

语法(Syntax)

Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }

它将会出现在Material的监视面板中,Shader可以定义成一系列的属性,并显示在Material的监视面板中。接着是一系列的SubShader,再往下是任意的回滚(fallback)或者是自定义编辑器声明。

细节(Details)

属性(Properties)

Shader可以有一系列的属性,任何定义在Shader里的属性都会显示在material的监视面板中,

典型的属性包括物体的颜色、贴图或者是Shader要用到的任意变量。

SubShaders & Fallback

每一个Shader包含了一系列的SubShader,至少要有一个,当加载一个Shader的时候,Unity会按顺序调用这一系列的SubShader,并且采用第一个支持当前用户机器的SubShader,如果没有一个SubShader可以被支持,那么Unity将会尝试使用回滚操作。

不同的显卡有不同的性能,这是一个所有游戏开发者都会遇到的不变的困扰,你想你的游戏运行在高端配置机器上效果更华丽,但是又不想让游戏只能在3%的机器上跑。于是SubShader出现了,你可以创建一个拥有所有华丽效果的SubShader,同时准备更多的SubShader用于低端的显卡,这些SubShader会实现你想在低端机器上跑的效果,或者更多的效果细节。

Shader的LOD(level of detail),即细节等级,和Shader replacement是两个在SubShader上的技术点。

例子:

以下是一个简单的Shader:

// colored vertex lighting

Shader "Simple colored lighting"

{

  // a single color property

  Properties {

    _Color ("Main Color", Color) = (1,.5,.5,1)

  }

  // define one subshader

  SubShader

  {

    // a single pass in our subshader

    Pass

    {

      // use fixed function per-vertex lighting

      Material

      {

        Diffuse [_Color]

      }

      Lighting On

    }

  }

}

这一个Shader定义了一个颜色属性_Color,将会以MainColor这个名字显示在Material的监视面板上,默认值是(1, 0.5, 0.5, 1),然后定义了一个SubShader,这个SubShader由一个Pass组成,这个Pass开启了fixed-function vertex lighting和为它创建了一个基本的Material。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:ShaderLabSyntax基本语法-创新互联
标题URL:http://njwzjz.com/article/hihgg.html