1、新建shader和材质,将shader给材质
2、定义属性,这部分属性后面就可以直接在材质的面板上进行调整
3、SubShader实现部分
这里介绍的是unity里的shader文件结构
Shader"Mocha/01 myshader"{//这里制定Shader的名字,不要求与文件名保持一致
Properties{
//属性
_Color("Color",Color)=(1,1,1,1) //颜色float4
_Vector("Vector",Vector)=(1,2,3,4) //向量float4
_Int("Int",Int)=1234 //整数float
_Float("Float",Float)=4.5 //小数float
_Range("Range",Range(1,11))=6 //随机数float
_2D("Texture",2D)="white"{} //图片sampler2D(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)
_Cube("Cube",Cube)="White"{} //立方体纹理samplerCube(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)用于天空盒子等
_3D("Texure",3D) = "White"{} //3D贴图sampler3D(其中white代表当未指定图片时默认其未一张白色的图片,也可改为其他颜色)
}
//SubShader可以有很多个,显卡运行效果的时候,从第一个SubShader开始,如果里面的效果全部可以实现,那么就使用第一个SubShader,如果不支持则进行下一个
SubShader{
//每个SubShader至少有一个Pass块 相当于一个方法
Pass{
//在这里编写Shader代码
CGPROGRAM
//使用CG语言编写Shader代码
//每次使用上面定义好的属性时需要重新定义一下并且此处每行代码“;”结束
//取到的值为上述默认定义好的值
float4 _Color;
float4 _Vector;
float _Int;
float _Float;
float _Range;
sampler2D _2D;
samplerCube _Cube;
sampler3D _3D;
//float half fixed 的区别
//一般小数这三个都可以声明定义
float t1;
half t2;
fixed t3;
half2 t4;
fixed2 t5;
//区别在于范围不同
//float 32位
//half 16位 -6万 -- +6万
//fixed 11位 -2 -- +2 (一般颜色用fixed)
ENDCG
}
}
//当所有的SubShader都不符合的时候,则用此备胎Shader效果可自定义备胎Shader
Fallback "VertexLit"
}
4、shaderlab是脚本语言,可以动态编译
网友评论