Shader学习过程4——shader的组织形式

unity当中有3中不同的编写shader的方案

        1、surface shaders  表面着色器 推荐使用。 可以完成百分之90的效果,是在vertex and fragment shaders上做了包装,方便大家使用。

        2、vertex and fragment shaders  顶点 和 片段 着色器。一切皆有可能

        3、fixed function shaders  固定管线shader。局限性比较大,能完成部分效果

unity官方建议我们先阅读有关的shaderlab语法,然后再继续阅读关于表面着色器与顶点片段着色器的内容。固定管线shader只使用了shaderlab语法来编写,其他两种不限与shaderlab语法。比如 glsl hlsl  用这种语言是镶嵌在shaderlab语言当中的一种代码片段。

        Shaderlab基本结构

        shader “name”{

                    [Properties]

                    SubShaders

                    [FallBack]

        }

properties :着色器可以有一个属性列表。任何在着色器种声明的属性都可以显示在unity内部的材质球中。典型的属性是物体的颜色,纹理,或者着色器使用的任意值。如下图


SubShader :就是专门位GPU渲染写的片段程序  至少有一个,可以有多个。显卡只能选择其中一个SubShader来执行,需要多个是因为,当硬件不支持第一个,会去运行第二个,如果第一个呗良好的支持,就不去执行第二个。可以写多个,从难到简,这样就可以在好的机器上运行复杂的。如果一个都不能被执行,就要用到FallBack所指定的着色器,可以指定unity内建的shader

猜你喜欢

转载自blog.csdn.net/baicaishisan/article/details/80526021