GLSL——常用内建函数与应用
STEP函数
step(a, b);当b > a时, 返回1;当b < a时,返回0。
函数原型
float step(float a, float x)
{
if (a < x)
{
return x;
}
else
{
return a;
}
}
应用
对控件着色时,x坐标小于0.5时,使用黑色渲染;x坐标大于0.5时,使用红色渲染。
代码段
varying mediump vec2 texCoord0;
void main()
{
precision mediump float;
float color = 0.;
// 使用step函数原型实现
// if (texCoord0.x > 0.5)
// {
// color = 1.;
// }
// else
// {
// color = 0.;
// }
//使用step函数实现
color = step(0.5, texCoord0.x);
gl_FragColor = vec4(vec3(color, 0., 0.), 1.);
}
效果
MIX
mix(colorA, colorB, weight); 两种颜色混合渲染,weight为colorB的渲染权重,1-weight为colorA的渲染权重,应用于颜色混合叠加效果。
函数原型
vec4 mix(vec4 colorA, vec4 colorB, float a)
{
return x * (1 - a) + y * a;
}
应用
将黑色和红色进行混合,黑色权重按x坐标增加
代码段
varying mediump vec2 texCoord0;
void main()
{
precision mediump float;
vec4 colorRed = vec4(1.0, 0., 0., 1.);
vec4 colorBlack = vec4(0., 0., 0., 1.);
//使用mix原型实现
//gl_FragColor = colorRed * (1 - texCoord0.x) + colorBlack * texCoord0.x;
//使用mix函数实现
gl_FragColor = mix(colorRed, colorBlack, texCoord0.x);
}
效果
CLAMP
clamp(x, min, max);当x大于max时,返回max, 当x小于min时,返回min,当x介于min和max之间时,返回x本身
函数原型
float clamp(float x,