给图片加入噪声
前面我们学过噪声,也学过如何绘制图片,这里结合起来
- 示例代码一
#ifdef GL_ES
precision mediump float;
#endif
uniform float u_time;
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform sampler2D u_tex0;
float random2d(vec2 coord){
return fract(sin(dot(coord.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
void main(){
vec2 coord = gl_FragCoord.xy / u_resolution;
vec3 color = vec3(0.0);
vec4 image = texture2D(u_tex0, coord);
float noise = random2d(coord);
image.xyz+=vec3(noise);
gl_FragColor = image;
}
- 代码效果

- 示例代码二
下面我们让噪声点为可控的,让图片可以变得明亮起来,我们加入参数amount
#ifdef GL_ES
precision mediump float;
#endif
uniform float u_time;
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform sampler2D u_tex0;
float amount = 0.6;
float random2d(vec2 coord){
return fract(sin(dot(coord.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
void main(){
vec2 coord = gl_FragCoord.xy / u_resolution;
vec3 color = vec3(0.0);
vec4 image = texture2D(u_tex0, coord);
float noise = (random2d(coord) -0.5) * amount;
image.xyz+=vec3(noise);
gl_FragColor = image;
}
- 代码效果
当amount = 0.6的时候

amount = 1.6的时候

《跟我一起学glsl编程》期待你的关注与点赞