webgl+canvas实现GLSL 着色器振荡梯度动画效果代码

代码语言:html

所属分类:动画

代码描述:webgl+canvas实现GLSL 着色器振荡梯度动画效果代码

代码标签: webgl canvas GLSL 着色器 振荡 梯度 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/reset.min.css">
  
  
<style>
html, body {
  width: 100%; height: 100%; 
  overflow: hidden;
}
canvas {
  display: block;
  width: 100vw; height: 100vh;
  background: #000;
}
</style>

  
</head>

<body translate="no">
  <canvas id="c"></canvas>

<!-- Vertex Shader -->
<script id="vertex-shader" type="x-shader/x-vertex">
    attribute vec2 a_position;
    void main() {
        gl_Position = vec4(a_position, 0, 1);
    }
</script>

<!-- Fragment Shader -->
<script id="fragment-shader" type="x-shader/x-fragment">
    precision mediump float;
    uniform vec3 iResolution;
    uniform float iTime;
    uniform int iFrame;
    uniform sampler2D iChannel0;


    float adjustValue(float value, float progress) {
      float offset = 0.7;

      return tan(value * (1.0 - progress) + offset * progress);
    }

    float whiteNoise(vec2 uv) {
      float x = (uv.x + 0.1) * (uv.y + 0.1);
      return fract(sin(x) * 43758.5453123);
    }

    float fBm(vec2 uv) {
      float sum = 0.0;
      float scale = 1.0;
      float amplitude = 1.0;
      for (int i = 0; i < 4; ++i) {
        sum += whiteNoise(uv * scale) * amplitude;
        scale *= 2.0;
        amplitude *= 0.5;
      }
      return sum;
    }

    void main()
    {
        float grainTileSize = 5.0; // the bigger the number, the finer the grain
        float grainTileOpacity = 0.15; // the opacity of the grain tile
        float fre.........完整代码请登录后点击上方下载按钮下载查看

网友评论0