webgl实现canvas可交互的可爱泡泡碰撞融合代码
代码语言:html
所属分类:其他
代码描述:webgl实现canvas可交互的可爱泡泡碰撞融合代码
代码标签: webgl canvas 交互 可爱 泡泡 碰撞 融合 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
html, body {
overflow: hidden;
margin: 0;
background-color: #f3f2f1;
}
canvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.lil-gui {
--width: 450px;
max-width: 90%;
--widget-height: 20px;
font-size: 15px;
--input-font-size: 15px;
--padding: 10px;
--spacing: 10px;
--slider-knob-width: 5px;
--background-color: rgba(5, 0, 15, .8);
--widget-color: rgba(255, 255, 255, .3);
--focus-color: rgba(255, 255, 255, .4);
--hover-color: rgba(255, 255, 255, .5);
--font-family: monospace;
}
</style>
</head>
<body>
<canvas></canvas>
<script type="x-shader/x-fragment" id="vertShader">
precision highp float;
varying vec2 vUv;
attribute vec2 a_position;
void main () {
vUv = .5 * (a_position + 1.);
gl_Position = vec4(a_position, 0., 1.);
}
</script>
<script type="x-shader/x-fragment" id="fragShaderSpeed">
precision highp float;
precision highp sampler2D;
varying vec2 vUv;
uniform sampler2D u_prev_frame_texture;
uniform vec2 u_pointer_position;
uniform float u_pointer_power;
uniform vec2 u_delta_xy;
uniform float u_ratio;
uniform float u_speed_fade;
#define TWO_PI 6.28318530718
#define PI 3.14159265358979323846
void main () {
vec2 uv = vUv;
vec2 pointer = u_pointer_position;
pointer.x *= u_ratio;
vec2 pointer_uv = uv;
pointer_uv.x *= u_ratio;
float pointer_dot = 1. - clamp(length(pointer_uv - pointer), 0., 1.);
pointer_dot = pow(pointer_dot, 6.);
pointer_dot *= u_pointer_power;
vec3 back = texture2D(u_prev_frame_texture, uv).rgb;
back *= u_speed_fade;
back = mix(back, vec3(u_delta_xy, 0.), pointer_dot);
gl_FragColor = vec4(back.xyz, 1.);
}
</script>
<script type="x-shader/x-fragment" id="fragShaderOutput">
precision highp float;
precision highp sampler2D;
varying vec2 vUv;
uniform sampler2D u_image_texture;
uniform sampler2D u_speed_texture;
uniform float u_ratio;
uniform float u_img_ratio;
uniform float u_time;
uniform float u_pointer_multiplier;
#define TWO_PI 6.28318530718
#define PI 3.14159265358979323846
float random(vec2 co) {
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
float .........完整代码请登录后点击上方下载按钮下载查看
















网友评论0