ShaderLab Syntax 基本语法
本文为个人从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。
转载于:https://blog.51cto.com/ymdzz/1753072
ShaderLab Syntax 基本语法相关推荐
- 再试译ScottGu's Posts 之 VS2008之语言特性--查询语法--New Orcas Language Feature: Query Syntax...
学习一门新的语言,总要从其语法学起.为了方便大家学习,同时也为了自己学习,就将ScottGu的这篇关于3.5中增加的新的特性帖子译了出来.这次我翻译采用中汉对照的方式,不然像上次译的那个那样的话不但我 ...
- 语言(Language)和语法(Syntax)简述
语言Language和语法Syntax简述 一字母表和字符串 二语法和语言 1几个基本概念 a语法Grammer b推导Derivation c归纳Reduction d语法规则的递归定义Recurs ...
- ShaderLab学习总结
转载 Unity ShaderLab学习总结 Why Bothers? 为什么已经有ShaderForge这种可视化Shader编辑器.为什么Asset Store已经有那么多炫酷的Shader组件可 ...
- Unity ShaderLab学习总结
http://www.jianshu.com/p/7b9498e58659 Unity ShaderLab学习总结 作者 DonaldW 关注 2014.07.20 17:17* 字数 4891 阅读 ...
- php的基本语法和数据类型
php的基本语法 1,php可以和html代码混合,但是一定要使用 <?php //php代码 ?> 可以在php中嵌入html代码 <?php echo"hello ,w ...
- python3语法错误-【Python3之异常处理】
一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...
- 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的. 为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前用 ...
- vim显示行号、语法高亮、自动缩进的设置
在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc 在Red Hat Linux 中v ...
- linux如何使用vim显示行号语法高亮,(.vimrc简单使用)
每次用vim,都要上网查如何使用插件.vimrc,索性就写成博客,省的以后再查了. vimrc就是vim配置文件,正常使用的vim配置很少,最重要的是不显示行号,没有语法高亮. 下面是我平时使用的配置 ...
最新文章
- iOS 实现多个可变 cell 复杂界面的制作
- JAVA 实现 快速排序算法
- 为什么使用缩进来分组语句?15个为什么,帮助你更好的理解Python!
- 如何第一时间了解研究领域最新动态?
- 尸鬼封尽の覆盖源码 管你什么鬼一招解决
- Django 笔记-20190521
- linux虚拟用户创建目录权限不足,centos7的FTP服务vsftpd里建立虚拟用户不同目录分配不同权限...
- 航空订票系统界面java_Java命令行界面(第21部分):航空公司2
- 使用python和pandas进行同类群组分析
- 企业实战04:Oracle数据库_管理表
- CArray动态数组
- Doris FE配置参数(全面)
- Action中动态方法的调用 Action中通配符的使用 Result的配置
- Origin 三种方法在图片中添加水平辅助线
- 计算机的操作系统有哪些
- SSH配置公钥后仍需要输入密码问题解析
- jenkins的应用
- 震旦ad188复印机报机器故障维修召唤c0211
- python不等于语法
- java 上传图片转base64_java将图片转为base64返回给前端