Unity3D Shader 开发详解 (1)
来源:互联网 发布:淘宝店店主的工作经验 编辑:程序博客网 时间:2024/04/29 03:04
Unity 做为一款跨平台的游戏引擎,为了适应不同平台的GPU能力,自定义了 ShaderLabel 语言来组织 Shader 的内容。并针对不同平台进行编译。
ShaderLabel 是一种标签语言,类似 HTML。一个 Shader 文件格式如下:
Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }
Shader文件必须由 Shader 关键字开始,后面跟着该 Shader 的引用名。可以像目录一样组织引用名, 并且引用名跟文件名不必一样。
SubShader 标签块中包含了Shader程序的逻辑实现部分。一个Shader文件中必须包含一个SubShader标签块,也可以包含多个SubShader标签块,这样 Unity 可以根据硬件平台的性能自动选择相匹配的 SubShader 来执行其中的逻辑。
Fallback 是一个可选的标签块,当对于一个硬件平台,所有的 SubShader 都不匹配的时候,会执行 Fallback 中引用的 Shader 文件来进行处理。如果我们不需要做这些兼容性的处理,可以不定义 Fallback 标签块,或则用以下形式使其无效:
Fallback off
CustomEditor 也是一个可选的标签块,它指定了这个 Shader 的自定义编辑器类名。这是一个继承自 ShaderGUI 的类。
一个完整的 Shader 文件例子如下:
Shader "MyShader/Name" {
Properties {
_MyTexture ("My Texture", 2D) = "white" { }
// other properties like colors or vectors go here as well
}
SubShader {
// here goes the 'meat' of your
// - surface shader or
// - vertex and program shader or
// - fixed function shader
}
SubShader {
// here goes a simpler version of the SubShader
// above than can run on older graphics cards
}
Fallback "othershader"
CustomEditor "MyCustomEditor"
}
0 0
- Unity3D Shader 开发详解 (1)
- 详解Unity3D Shader开发之Shader框架
- 详解Unity3D Shader开发之渲染管线
- Unity3D Built-in Shader,unity3d内置shader详解1
- unity3d--内置shader详解
- Unity3d 描边shader详解
- unity3d shader学习(1)
- Unity3d Shader开发(一)Properties
- Unity3d Shader开发(二)SubShader
- unity3d Shader开发简介
- 详解Unity3D Shader之Shader Lab框架
- Unity3D shader(1)——fixed shader
- Unity3D深入浅出 - Shader基础开发
- Unity3d Shader开发(三)Pass(Texturing )
- Unity3d Shader开发(三)Pass(Culling & Depth Testing)
- Unity3d Shader开发(三)Pass(Color, Material, Lighting )
- Unity3D Built-in Shader详解一
- Unity3D Built-in Shader详解一
- cocos2d-x getBoundingBox getContentSize getTextureRect 解释
- java怎么还是那么渣O(∩_∩)O哈哈~Class,Object这些混淆的概念
- jQuery 中 attr() 和 prop() 方法的区别
- Map<String, String> 遍历的四种方法
- LightOJ 1004 - Monkey Banana Problem (dp)
- Unity3D Shader 开发详解 (1)
- Linux下Socket的实现(C++)
- codeblocks round 326 div2 C Duff and Weight Lifting
- hdoj--1166--敌兵布阵(线段树)
- unity中使用protobuf(兼容ios平台)
- EXT.js对中文字符串的排序
- awk 数组
- 调试程序 识别线程 用QThread::currentThread()方法
- QT5入门之22 -QT状态栏