5.随机
http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
float rand(vec2 co)
{
return fract(sin(dot(co.xy,vec2(12.9898,78.233))) * 43758.5453);
}
改善后的
highp float rand(vec2 co)
{
highp float a = 12.9898;
highp float b = 78.233;
highp float c = 43758.5453;
highp float dt= dot(co.xy ,vec2(a,b));
highp float sn= mod(dt,3.14);
return fract(sin(sn) * c);
}
//4.gl_FragCoord:当前片元相对于窗口位置的坐标值(绝对值,不是相对值哦,也就是说最大值是窗口的宽高)
//3.得到当前像素点的纹理坐标
vec2 texCoord(vec2 viewWH){
return vec2(gl_FragCoord.x, viewWH.y-gl_FragCoord.y)/viewWH;//得到当前片元的纹理坐标(相对值)
}
//2.一个像素占比:在View中的一个像素,在纹理坐标里占多宽多长
vec2 pixel(vec2 viewWH){
return vec2(1.0,1.0)/viewWH;
}
//1.沿中心对纹理坐标进行缩放之后的新坐标(也是从0.0到1.0)
vec2 scaleCorByCenter(vec2 originCor,vec2 scaleST){
float nexCorS=(originCor.x-0.5)/scaleST.x+0.5;
float newCorT=(originCor.y-0.5)/scaleST.y+0.5;
return vec2(nexCorS,newCorT);
}