gl-matrix实现可调配置webgl粒子特效动画代码
代码语言:html
所属分类:粒子
代码描述:gl-matrix实现可调配置webgl粒子特效动画代码
代码标签: gl-matrix 可调 配置 webgl 粒子 特效 动画 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="utf-8"> <style> body { margin: 0; overflow: hidden; background: linear-gradient(to bottom, #000000, #0a0a2a); display: flex; justify-content: center; align-items: center; height: 100vh; font-family: 'Arial', sans-serif; color: #fff; } canvas { display: block; width: 800px; height: 800px; cursor: pointer; box-shadow: 0 0 50px rgba(0, 100, 255, 0.3); } .controls { position: absolute; top: 20px; right: 20px; width: 250px; background: rgba(0, 0, 20, 0.7); padding: 15px; border-radius: 8px; z-index: 100; max-height: 90vh; overflow-y: auto; } .controls h3 { margin-top: 15px; margin-bottom: 5px; border-bottom: 1px solid rgba(100, 150, 255, 0.5); padding-bottom: 5px; } .control-group { margin-bottom: 15px; } .control-item { margin-bottom: 8px; } label { display: block; margin-bottom: 3px; font-size: 12px; } input[type="range"] { width: 100%; } input[type="color"] { width: 50px; height: 25px; border: none; cursor: pointer; } .color-picker { display: flex; align-items: center; gap: 10px; } .color-value { font-size: 11px; color: #aaa; } button { background: rgba(30, 30, 100, 0.6); border: 1px solid rgba(100, 150, 255, 0.5); padding: 8px 15px; color: white; border-radius: 5px; cursor: pointer; transition: all 0.3s; text-transform: uppercase; font-size: 12px; letter-spacing: 1px; margin: 5px 3px; } button:hover { background: rgba(70, 70, 200, 0.7); transform: translateY(-2px); } .buttons-container { display: flex; flex-wrap: wrap; justify-content: space-between; } </style> </head> <body> <canvas id="glCanvas"></canvas> <div class="controls"> <h3>Effets</h3> <div class="buttons-container"> <button id="btnGravity">Gravité</button> <button id="btnExplosion">Explosion</button> <button id="btnImplosion">Implosion</button> <button id="btnVortex">Vortex</button> <button id="btnNeon">Néon</button> <button id="btnReset">Reset</button> </div> <h3>Particules</h3> <div class="control-group"> <div class="control-item"> <label for="particleSize">Taille des particules</label> <input type="range" id="particleSize" min="5" max="40" value="15" step="1"> </div> <div class="control-item"> <label for="particleDensity">Densité des particules</label> <input type="range" id="particleDensity" min="10" max="35" value="25" step="1"> </div> </div> <h3>Couleurs</h3> <div class="control-group"> <div class="control-item color-picker"> <label>Couleur primaire</label> <input type="color" id="primaryColor" value="#3366ff"> <span id="primaryColorValue" class="color-value">#3366ff</span> </div> <div class="control-item color-picker"> <label>Couleur secondaire</label> <input type="color" id="secondaryColor" value="#ff3366"> <span id="secondaryColorValue" class="color-value">#ff3366</span> </div> <div class="control-item color-picker"> <label>Couleur d'accent</label> <input type="color" id="accentColor" value="#33ff66"> <span id="accentColorValue" class="color-value">#33ff66</span> </div> </div> <h3>Animation</h3> <div class="control-group"> <div class="control-item"> <label for="rotationSpeed">Vitesse de rotation</label> <input type="range" id="rotationSpeed" min="0.1" max="3" value="1" step="0.1"> </div> <div class="control-item"> <label for="pulseSpeed">Vitesse de pulsation</label> <input type="range" id="pulseSpeed" min="0.5" max="5" value="1.5" step="0.1"> </div> <div class="control-item"> <label for="pulseIntensity">Intensité de pulsation</label> <input type="range" id="pulseIntensity" min="0.5" max="3" value="1.2" step="0.1"> </div> </div> <h3>Effets visuels</h3> <div class="control-group"> <div class="control-item"> <label for="glowIntensity">Intensité de lueur</label> <input type="range" id="glowIntensity" min="0" max="3" value="1.2" step="0.1"> </div> <div class="control-item"> <label for="colorSaturation">Saturation des couleurs</label> <input type="range" id="colorSaturation" min="0.5" max="3" value="1.5" step="0.1"> </div> <div class="control-item"> <label for="colorIntensity">Intensité des couleurs</label> <input type="range" id="colorIntensity" min="0.5" max="3" value="1.5" step="0.1"> </div> </div> </div> <script type="x-shader/x-vertex" id="vertexShader"> attribute vec4 aVertexPosition; attribute vec3 aVertexColor; attribute float aPointOffset; attribute vec3 aOriginalPosition; attribute float aPointSize; uniform mat4 uModelViewMatrix; uniform mat4 uProjectionMatrix; uniform float uTime; uniform float uBasePointSize; uniform bool uGravityMode; uniform float uGravityTime; uniform bool uExp.........完整代码请登录后点击上方下载按钮下载查看
网友评论0