regl实现webgl记忆碎片岩浆流动动画效果代码

代码语言:html

所属分类:动画

代码描述:regl实现webgl记忆碎片岩浆流动动画效果代码

代码标签: regl webgl 记忆 碎片 岩浆 流动 动画

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

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

<head>
  <meta charset="UTF-8">
  


  
  
<style>
body {
  filter: contrast(1.42);
  overflow: hidden;
  background-image: url("https://assets.codepen.io/194946/noise_1.png");
}
svg {
  overflow: hidden;
  width: 100vw;
  height: 100vh;
  z-index: -1;
  mix-blend-mode: multiply;
}
canvas {
  filter: contrast(2) brightness(1.2);
  mix-blend-mode: multiply;
}
</style>


  
  
</head>

<body translate="no">
  <script id="shader--vertex" type="x-shader/x-vertex">
 precision mediump float;
attribute vec2 position;

varying vec2 uv;
  
void main() {
  uv = position * 0.5 + 0.5;
  gl_Position = vec4(position, 0.0, 1.0);
} 
</script>

<script id="shader--fragment" type="x-shader/x-fragment">
 precision mediump float;

const float TAU = 6.2831853072;
const float PI = 3.1415926536;
uniform sampler2D sourceImage;
uniform sampler2D bufferTexture;
uniform sampler2D normalTexture;
uniform vec2 resolution;
uniform vec2 mouse;
uniform float time;
varying vec2 uv;

float rand (vec2 co) {
  return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}

void main() {
  vec4 below = texture2D(bufferTexture, mod(
    uv + vec2(0.0, abs(rand(uv) * 20.0)/resolution.y),
    1.0
  ));
  
  float angle = (below.r + time*0.1) * TAU;
  vec2 offset = vec2(cos(angle), sin(angle))/resolution;
  float amount = clamp(
    distance(gl_FragCoord.xy, mouse.xy),
    0.0,
    300.0
  )/300.0;
  
  gl_FragColor = mix(
    texture2D(sourceImage, uv),
    te.........完整代码请登录后点击上方下载按钮下载查看

网友评论0