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