webgl实现图片玻璃破碎效果代码
代码语言:html
所属分类:其他
代码描述:webgl实现图片玻璃破碎效果代码,可通过右上角面板调节参数。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body, html { margin: 0; padding: 0; } canvas { position: fixed; top: 0; left: 0; width: 100%; } .tip { position: fixed; top: 90%; left: 50%; transform: translate(-50%, -50%); font-family: monospace; user-select: none; pointer-events: none; background-color: cornsilk; color: red; } .lil-gui { --width: 400px; --widget-height: 20px; font-size: 15px; --input-font-size: 15px; --padding: 10px; --spacing: 10px; --slider-knob-width: 5px; --background-color: rgba(5, 0, 15, .9); --widget-color: rgba(255, 255, 255, .3); --focus-color: rgba(255, 255, 255, .4); --hover-color: rgba(255, 255, 255, .5); --font-family: monospace; z-index: 1; } </style> </head> <body translate="no"> <input id="image-selector-input" style="visibility:hidden;" type="file"> <canvas></canvas> <div class="tip"> click to break, space to toggle </div> <script type="x-shader/x-fragment" id="vertShader"> precision mediump float; varying vec2 vUv; attribute vec2 a_position; void main() { vUv = .5 * (a_position + 1.); gl_Position = vec4(a_position, 0.0, 1.0); } </script> <script type="x-shader/x-fragment" id="fragShader"> precision highp float; precision highp sampler2D; varying vec2 vUv; uniform sampler2D u_image_texture; uniform float u_edge_thickness; uniform float u_ratio; uniform vec2 u_pointer_position; uniform float u_img_ratio; uniform float u_click_randomizer; uniform float u_rotation; uniform float u_effect; uniform float u_effect_active; #define TWO_PI 6.28318530718 #define PI 3.14159265358979323846 float random(float x) { return fract(sin(x * 12.9898) * 43758.5453); } float random2(vec2 p) { return fract(sin(dot(p.xy, vec2(12.9898, 78.233))) * 43758.5453); } float noise(vec2 p) { vec2 ip = floor(p); vec2 u = fract(p); u = u*u*(3.0-2.0*u); float res = mix( mix(random2(ip), random2(ip+vec2(1.0, 0.0)), u.x), mix(random2(ip+vec2(0.0, 1.0)), random2(ip+vec2(1.0, 1.0)), u.x), u.y); return res*res; } float get_sector_shape(float d, float a, float angle, float edges) { float angle1 = PI;.........完整代码请登录后点击上方下载按钮下载查看
网友评论0