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