ShaderLab Syntax
来源:互联网 发布:adidas旗舰店淘宝真假 编辑:程序博客网 时间:2024/06/03 19:45
ShaderLab Syntax
在Unity中,所有的Shader文件都由一个声明语言“ShaderLab”写成。文件中,一个嵌套的括号语法,描述了shader的各种东西 - 例如哪个shader属性应该被显示在材质监视窗口(Inspector窗口); 什么类型的硬件需要什么样的fallbacks操作; 使用什么类型的混合模式 等等..; 然后实际上的“shader 代码”是该文件中写在CGPROGRAM
片段内的代码(查看surface shaders 和 vertex and fragment shaders)。
本篇和子篇介绍了嵌套括号“ShaderLab”语法。CGPROGRAM
代码块是用常规的 HLSL/Cg 着色语言写成,请查看他们的文档页面。
Shader是一个shader文件的根命令。每个文件必须定义一个shader(且只能有一个)。它指定了每个材质中使用了它的对象如何渲染。
Syntax
Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }
定义一个shader。它将出现在材质的inspector窗口的shader列表中的name下。Shaders可以选择一个Properties列表,显示在材质inspector窗口。然后是一个SubShaders列表,一个fallback选项,和一个可有可无的自定义编辑器声明。
Dtails
Properties
Shaders可以有一个列表的properties。Shader中每个被声明的properties都会显示在Unity的材质的inspector面板中。典型的属性比如对象颜色、纹理或只是shader所使用的任意值。
SubShaders & Fallback
每个shader是由多个sub-shaders组成。你必须定义至少一个。当加载一个shader,Unity会浏览subshaders列表,并选择第一个被用户终端设备支持的subshader。如果没有找到支持的subshaders,Unity会尝试使用fallback shader。
不同的显卡有不同的能力。他给游戏开发商提出了一个永恒的课题; 你希望你的游戏在新的硬件中看起来很棒, 但是你不希望它只在3%的玩家中有效。这就是为什么subshaders会加入。创建一个包含所有你梦想的理想特效的subshader,然后添加更多subshaders来支持老得显卡。这些subshaders肯能会用一个较慢的方式来实现你所期望的特效,或者他们选择不现实一些细节。
Shader “level of detail” (LOD) 和 “shader replacement” 是两个建立在subshaders上的技术。查看see Shader LOD and Shader Replacemement获取更多信息.
Examples
这是一个最简单的shaders:
// colored vertex lightingShader "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定义了一个默认值为(1,0.5,0.5,1)的颜色属性_Color(此属性将会在材质inspector面板上以Main Color显示)。然后定义了一个单独的subshader。这个subshader包含了一个Pass,它打开了固定管线顶点光照,并为他设置了材质。
查看更多复杂的例子请浏览Surface Shader Examples 或 Vertex and Fragment Shader Examples.
- ShaderLab Syntax
- ShaderLab syntax: Blending
- Shader Learing(ShaderLab syntax篇)
- Unity-shaderLab
- shaderlab 关键字
- ShaderLab 笔计一
- ShaderLab: Stencil
- ShaderLab-UV
- shaderlab 基础
- shaderLab语法
- Shaderlab blend
- ShaderLab: Pass
- ShaderLab: Properties
- ShaderLab: SubShader
- ShaderLab: Pass
- ShaderLab: Blending
- ShaderLab: Stencil
- ShaderLab: Name
- 安装Anaconda之前,有的已经安装过一个Python版本
- HTTP返回码总结
- 解题报告:HDU_6128:Inverse of sum (二次剩余)
- Spire.Email 教程:从C#,VB.NET中的PST文件获取文件夹信息
- String的按值传递,java传参都是传值
- ShaderLab Syntax
- DotNetCore跨平台~在appsettings.json里自定义配置项
- vim 搜索后大小写替换
- 86 Partition List
- linux查找命令总结
- 号小二-您身边的帐号专家!
- CSS网页布局心得(样式优先级,块级元素,内联元素,display,position,float)
- 关于http无状态的思考
- js onclick函数传入参数问题