• 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 

  • 相关阅读:
    [转发]UML类图符号 各种关系说明以及举例
    Promise 对象
    ES6基础(二)
    ES6基础
    JSON介绍
    Ajax的面试题
    Ajax请求
    jQuery从小白开始---初始jQuery
    常用的String原型
    JS之类数组
  • 原文地址:https://www.cnblogs.com/bambomtan/p/5107425.html
Copyright © 2020-2023  润新知