UnityShader从入门到放弃(一)UnityShader的结构

来源:互联网 发布:ipsec dh算法 编辑:程序博客网 时间:2024/06/17 12:01
Shader "Luoxiaoxiao/Shader_1"{//指定Shader的名字 不要求与脚本名一致
        Properties{    //属性  UnityShader中的类型  _Color("Color",Color)=(1,1,1,1)  _Vector("Vector",Vector)=(1,2,3,4)  _Int("Int",Int)=325  _Float("Float",Float)=4.5  _Range("Range",Range(1,11))=6//Rang本质是Float类型的 只不过是增加了一个范围的限制  _2D("Texture",2D)="white"{}//指定一个图片  _Cube("Cube",Cube)="white"{}//立方体纹理 --天空盒  _3D("Texture",3D)="balck"{}//3D的纹理  }  //SubShader可以有很多个  根据显卡的能力  自动选择能够实现的SubShader  上边的效果优于下边的效果  SubShader{      //至少有一个Pass      Pass{    //在这里编写Shader代码  CGPROGRAM  //使用CG语言编写Shader代码  //属性在使用时要重新定义一遍  fixed4 _Color;//Color本质是一个4个值得  在CGPROGRAM中要定义成fixed4类型的  编译时会自动取到Color的默认值  float4 _Vector;  float _Int;  float _Float;  float _Range;  sampler2D 2D;//2D类型的要定义成sampler2D  samplerCube _Cube;  sampler3D _3D;  //在任何使用float 的地方都可以使用half、fixed代替   //float4 = half4 = fixed4............  //三者之间的区别在于 精度不同 所占用的显存不同  根据需要使用相应的精度可以节约资源  //float 32位进行存储  常用语位置的定义  //half  16位进行存储 -6W - +6W  用的较少  //fixed 11位进行存储 -2  - +2 常用于颜色的定义  ENDCG  }  }  Fallback"VertexLit"}
一个UnityShader脚本由Shader名、Properties、一个或者多个SubShader、Pass块、Fallback组成,其中Properties中定义一些属性,如颜色、纹理等,控制Shader实现效果的代码在Pass块的CGPROGRAM和ENDCG间。当所定义的Shander不能被所运行的设备所支持时,会回滚到Fallback后所定义的Shader。