ShaderLab Syntax 基本语法(had,shader,unity,开发技术)

时间:2024-05-04 09:55:17 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    ShaderLab+Syntax+%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95

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


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。


本文:ShaderLab Syntax 基本语法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:基于tcpdf将html转成pdf下一篇:

10 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18