Unity-shader基本结构

Unity Sharder 基本结构


//定义shader的显示等级以及名字    Shader "Level/Name"

Shader "Custom/SinShader"{    }

//定义shader中所用到的属性        Properties{    }

常用属性类型(格式: 属性变量名("Unity属性显示名称",属性类型)):

其中,属性变量名 以及 Unity属性显示名称 可自己定义,属性类型固定:

        _Color("_Color",Color) = (1,1,1,1)     // 颜色类型

        _Vector("_Vector",Vector) = (1,2,3,4)    // 四维向量类型 X Y Z W

        _Int("_Int",Int) = 100     // 整数类型

        _Float("Float",Float)=12.3     // 小数类型 默认值不加F shader里面没有double类型

        _Range("Range",Range(1,100))=50    // 范围类型 从哪个范围到哪个范围 这里设置的范围是1-100 默认值是50 可以取到1和100

        _2D("Texture",2D) = "white"{}    // 指定图片 类型  若{}里指定图片了会显示图片的颜色 如果没有指定图片会显示为设置的纯色 这里为white

        _Cube("_Cube",Cube) = "white"{}    // 立方体纹理 立方体贴图

        _3D("Texture",3D) = "white"{}    //3D 纹理

// SubShader 可以有很多个 里面编写的是渲染的代码 利用属性编写一些 控制 渲染出来的效果

    创建多个SubShader 因为不同的SubShader可以实现不同的效果 在不同的显卡上运行时需要,比如不同的显卡对应不同的SubShader 好一点的对应 一个SubShader 差一点的对应一个SubShader.显卡运行效果时,从第一个SubShader开始,如果里面的效果都可以实现,那么就使用第一个SubShader,如果这个SubShader满足不了这个显卡的需求,它会自动跳到下一个 如果没有可以实现的会调用 Fallback"VertexLit" 默认的,一般第一个SubShader是显示效果最好的 第二个比第一个次一点以此类推这样会增加shader的适应能力

//Pass块

    SubShader 里面必须有一个 Pass块 也可以有多个,一个Pass块代表一个方法。 

你可能感兴趣的:(Unity-shader基本结构)