http://imgtec.eetrend.com/blog/3912
http://blog.csdn.net/zj8792612/article/details/16116145
在线着色器编辑
1.http://pixelshaders.com/editor/
http://codedstructure.net/projects/webgl_shader_lab/
默认精度设置:
precision mediump float;
1.语方结构体
参考 c
2.变量申明
float
bool
int (一般不用)
vec2 为float的向量
ivec2 为int向量
mat2 为float矩阵
mat3
mat4
sampler2D为二维贴图的句柄
samplerCube 三维贴图的句柄
gl_FragCoord 片元着色器位置变量
gl_FragColor 片元着色器输出变量
gl_Position 点着色器输出变量
3.共享全局变量
uniform修饰的变量可以在全局(不同的编译模块间共用)
4.存储修饰符
const 常量
attribute 用于程序和顶点着色器传递变量值,只能修饰基本类型, 在且只在点着色器中可读
uniform 在全局可以访问, 整个图元处理过程中均为只读。
varying 用于顶点着色和片元着色器之间单向通讯,顶点着色器写入后,在片元着色器中可以读出。
5.内建函数
mix(float y1,float y2,float x)按y(0)=y1 y(1.0)=y2,取x的线性插值,可用于向量。
sin(float)
cos(float)
length(vector) 取向量长度
abs(float)
sqrt(float)
fract(float)取float的小数部分
floor(float)取下整
mix(a,b)
max(a,b)
exp(a,b)
distance(a,b)
dot(x,y)
cross(x,y)
normalize(x)
discard; 放弃渲染当前片段 ///如果在片元程序中没有给gl_FragColor赋值,则可能导致错误。