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