Unity3d Shader(二) SubShader
2014-01-07 09:16
134 查看
Unity中的每一个着色器都包含一个subshader的列表,当Unity需要显示一个网格时,它能发现使用的着色器,并提取第一个能运行在当前用户的显示卡上的子着色器。
Syntax 语法
Subshader { [Tags] [CommonState] Passdef [Passdef ...] }通过可选标签,通用状态 和 一个Pass 定义的列表构成了子着色器。 Details 细节子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态。当Unity选择用于渲染的子着色器时,它为每一个被定义的通道渲染一次对象(可能会更多,这取决于光线的交互作用)。当对象的每一次渲染都是一次昂贵的操作时,你能选择使用最小数目的通道来定义着色器。当然,有时在一些显示硬件上需要的效果不能通过单次通道来完成。除了使用多次通道你别无选择。通道定义的类型包括a regular
Pass, a Use Pass or a Grab
Pass。任何出现在通道定义的状态同时也能在整个子着色器块中可见。这将使所有通道处于共享状态。
例子:
SubShader {
Pass {
Lighting Off
SetTexture [_MainTex] {}
}
}
这个着色器定义了一个单一的通道用来关闭任何光照,并只使用一个名叫_MainTex的纹理来显示网格。
Syntax 语法
Subshader { [Tags] [CommonState] Passdef [Passdef ...] }通过可选标签,通用状态 和 一个Pass 定义的列表构成了子着色器。 Details 细节子着色器定义了一个渲染通道的列表,并可选是否为所有通道初始化所需要的通用状态。当Unity选择用于渲染的子着色器时,它为每一个被定义的通道渲染一次对象(可能会更多,这取决于光线的交互作用)。当对象的每一次渲染都是一次昂贵的操作时,你能选择使用最小数目的通道来定义着色器。当然,有时在一些显示硬件上需要的效果不能通过单次通道来完成。除了使用多次通道你别无选择。通道定义的类型包括a regular
Pass, a Use Pass or a Grab
Pass。任何出现在通道定义的状态同时也能在整个子着色器块中可见。这将使所有通道处于共享状态。
例子:
SubShader {
Pass {
Lighting Off
SetTexture [_MainTex] {}
}
}
这个着色器定义了一个单一的通道用来关闭任何光照,并只使用一个名叫_MainTex的纹理来显示网格。
相关文章推荐
- Unity3D Shader官方教程翻译(四)----Shader语法:SubShader
- Unity3d shader之次表面散射(Subsurface Scattering)
- Unity3D的Shader基本结构—子着色器SubShader
- Unity3d shader之次表面散射(Subsurface Scattering)
- Unity3d Shader开发(四)UsePass ,GrabPass ,SubShader Tags
- unity3D 涂涂乐使用shader实现上色效果
- Unity3D 玻璃 Shader
- Unity3D Shader入门指南(一)
- [Unity3d]Shader 着色器 学习前了解知识
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)
- Unity3d Shader开发(三)Pass(Alpha testing )
- Unity3d Shader开发(五)Fallback ,Category
- 猫都能学会的Unity3D Shader入门指南(一)
- Unity3D之shader概述
- Unity3D Shader(11)——fragment shader(边缘泛光)
- Unity3D Shader官方教程翻译(十二)----Shader语法:Pass的标记
- 猫都能学会的Unity3D Shader入门指南(一)
- 【浅墨Unity3D Shader编程】之四 热带雨林篇: 剔除、深度测试、Alpha测试以及基本雾效合辑
- OpenGL GLSL Shader Subroutines