跟我一起学glsl编程25 - 噪声图片

196 阅读1分钟

给图片加入噪声

前面我们学过噪声,也学过如何绘制图片,这里结合起来

  • 示例代码一
#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编程》期待你的关注与点赞