ShaderLab基础(Pass定义)

      SubShader的语法包含 Tags ,CommonState,PassDef,TagsCommonState在前面章节进行了学习,本小节将讨论PassDef,PassDef有三种形态:固定管线,可编程Shader,SurfaceShader

       固定管线是为了支持老一代能力有限的GPU提供支持。对Shader的约束性比较高。下面是固定管线的一个例子。

 ShaderLab基础(Pass定义)_第1张图片

从上面例子可以看出,固定管线Pass的定义主要是由一些固定管线相关的命令组成,这些命令将在后面的课程进行详细讲解。


可编程Shader分为vertex shaderfragment shader,其中vertex  shader分别对应渲染管线的顶点变换和光照,fragment shader对应光栅化之后的像素处理。下面是可变成Shader的例子

ShaderLab基础(Pass定义)_第2张图片

从例子可以看出可编程Shader主要是通过在CGPROGAMENDCG之间定义Shader.通过Vertex命令定义vertex shader,通过fragment命令定义fragment shader

 

       最后一种ShaderSurface Shader。下面是Surface shader的例子

ShaderLab基础(Pass定义)_第3张图片

同样,它也是通过在CGRPOGRAMENDCG之间定义Surface shader.主要是通过命令Surface命令定义Surface函数。

 

接下来选中sf,然后在属性面板中点击 show generated code按钮,如下图所示

ShaderLab基础(Pass定义)_第4张图片

然后将打开根据此surface  shader生成的可编程shader,如下图所示

ShaderLab基础(Pass定义)_第5张图片

生成的可编程shader比较复杂,sf这个shader所生成的文件行数有5百多行,生成的shader主要是对关照的处理,非常复杂。。从这里我们也可以看出,可以通过surface shader 写少量代码就可以完成可编程Shader很复杂的工作,surface shader主要是简化程序员的工作。


上一节 ShaderLab基础(深度测试)

 Unity 开发交流QQ群:528152133

你可能感兴趣的:(shaderlab,入门与精通)