gl-matrix+webgl实现三维城市河面上穿行灯光倒影动画效果代码
代码语言:html
所属分类:三维
代码描述:gl-matrix+webgl实现三维城市河面上穿行灯光倒影动画效果代码
代码标签: gl-matrix webgl 三维 城市 河面 穿行 灯光 倒影 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap"); body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: #001; } canvas { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; } #controls { position: fixed; top: 10px; left: 10px; z-index: 100; display: flex; align-items: center; z-index: 1; } button { background-color: #4CAF50; border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; border-radius: 10px; font-size: 16px; margin: 4px 2px; cursor: pointer; transition: background-color 0.3s; &:hover { background-color: #25902950; } &:active { background-color: #00FFFFCC; } } .btn { background-color: rgba(0, 0, 0, 0.4); border: none; color: rgba(255, 255, 255, 0.4); padding: 10px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 2px 2px; cursor: pointer; border-radius: 5px; transition: background-color 0.3s; } .btn:hover { background-color: rgba(255, 255, 255, 0.2); color: rgba(255, 255, 0, 1); } #fullscreenBtn { font-size: 20px; } .container { margin: 0 auto; padding: 2rem; position: absolute; width: 100%; font-family: "Roboto", sans-serif; text-shadow: 0 0 5px #000, 0 0 10px #000; color: #fff; filter: drop-shadow(0 0 10px rgba(0, 0, 50, 0.7)) drop-shadow(0 0 15px rgba(0, 0, 0, 0.5)) drop-shadow(0 0 20px rgba(0, 0, 0, 0.3)); z-index: 2; } /* Phone User */ @media (max-width: 768px) { h1 { font-size: 1.25rem; } .container { font-size: 0.8rem; } .btn { font-size: 0.8rem; } #fullscreenBtn { font-size: 0.8rem; padding: 8px 15px; } } </style> </head> <body translate="no"> <canvas id="glCanvas"></canvas> <div class="container"> <h1>Animated Shader: Venice in Reflection</h1> <p><button id="fullscreenBtn">⤢ Toggle Fullscreen</button> </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gl-matrix-min.js"></script> <script > /* Source: https://www.shadertoy.com/view/MdXGW2 */ const canvas = document.getElementById('glCanvas'); const gl = canvas.getContext('webgl2'); if (!gl) { console.error('WebGL 2 not supported'); document.body.innerHTML = 'WebGL 2 is not supported in your browser.'; } const vertexShaderSource = `#version 300 es in vec4 aPosition; void main() { gl_Position = aPosition; }`; const fragmentShaderSource = `#version 300 es precision highp float; uniform vec3 iResolution; uniform float iTime; uniform vec4 iMouse; out vec4 fragColor; /*--- BEGIN OF SHADERTOY ---*/ #define SHOW_GALLERY #define SHOW_LIGHTS #define SHOW_BRIDGES #define SHOW_MOON_AND_CLOUDS #define BUMPFACTOR 0.2 #define EPSILON 0.1 #define BUMPDISTANCE 200. #define CAMERASPEED 6. #define BUILDINGSPACING 20. #define MAXBUILDINGINSET 12. #define GALLERYHEIGHT 10.5 #define GALLERYINSET 2.5 float time; float hash( float n ) { return fract(sin(n)*32.5454412211233); } vec2 hash2( float n ) { return fract(sin(vec2(n,n+1.0))*vec2(11.1451239123,34.349430423)); } vec3 hash3( float n ) { return f.........完整代码请登录后点击上方下载按钮下载查看
网友评论0