您的位置:首页 > 移动开发 > Unity3D

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

2017-09-06 22:27 459 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: