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