Unity_Shader开发_Shaderlab(三)---------2016.1.6

一、UnityShader 的形态

      在Unity的Graphics Reference ---Shader Reference(http://docs.unity3d.com/Manual/SL-Reference.html)里有介绍 unity shader 有三种写法,分别是: 

         surface shader 

     Vertex and fragment shader

     fixed function shader

          可编程图形管线中能编写的部分主要是两部分: 顶点程序 ,片段程序。

         fixed function shader 是固定管线的shader ,在可编程管线硬件出现之前,很多光照计算放在硬件集进行处理。可以把这个固定管线的shader理解为固定管线集的操作。能在绝大多数的硬件上运行,能实现的功能如 简单的光照,纹理采样。

        surface shader 是unity 推荐使用的shader。在unity里创建一个物理默认的shader 就是surface shader。为什么有surface shader呢? 图形管线能够识别的 只有两种程序 就是Vertex 和 Fragment shader。 surface shader 是在这两种shader上的包装,更方便我们编写shader 代码,最终unity还是会吧surface shader编译成Vertex 和 Fragment shader。

       

二、Shaderlab的基本结构

         surface shader 的语法 : Shader Properties SubShader Pass Fallback CustomEditor 

         Properties  能定义一系列的参数在材质面板中显示,来调整已达到想要的效果,详细地址(http://docs.unity3d.com/Manual/SL-Shader.html)

     Subshader 能定义一系列的shader 以适应不同的硬件设备,由上至下,一旦匹配就不再匹配了。

Shader "MyShader" {
    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
    }
}

 unity的shader 语法统一了 三种shader编写的方式。 材质是 定义了一个物体的呈现方式,它包含了物体的一系列信息如 贴图、顶点、shader,他就像是一个商品,而shader就是加工这个商品的加工方式,而贴图就是加工的原材料。

三、Build_In Shader

      unity内建shader ,unity有很多内建shader 

原文地址:https://www.cnblogs.com/bambomtan/p/5107425.html