three+kokomi+marcher实现webgl时光穿梭动画效果代码
代码语言:html
所属分类:动画
代码描述:three+kokomi+marcher实现webgl时光穿梭动画效果代码
代码标签: three kokomi marcher webgl 时光 穿梭 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/aqua-1.5.5.css">
<style>
body {
margin: 0;
overflow: hidden;
}
</style>
</head>
<bod >
<div id="sketch" class="relative w-screen h-screen bg-black"></div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.139.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/kokomi.umd.1.9.4.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/marcher.umd.1.2.5.js"></script>
<script >
"use strict";
const vertexShader = `
#define GLSLIFY 1
highp float random(vec2 co)
{
highp float a=12.9898;
highp float b=78.233;
highp float c=43758.5453;
highp float dt=dot(co.xy,vec2(a,b));
highp float sn=mod(dt,3.14);
return fract(sin(sn)*c);
}
uniform float iTime;
attribute vec2 aSeed;
attribute float aSize;
varying float vRandColor;
void main(){
vec3 p=position;
float t=iTime*1000.;
float v=.01;
float s=v*t;
// p.z=p.z+s;
p.z=mod(p.z+s,2000.);
vec4 mvPosition=modelViewMatrix*vec4(p,1.);
gl_Position=projectionMatrix*mvPosition;
float pSize=aSize*(200./-mvPosition.z);
gl_PointSize=pSize;
float randColor=random(aSeed);
vRandColor=randColor;
}
`;
const fragmentShader = `
#define GLSLIFY 1
float circle(vec2 st,float r){
vec2 dist=st-vec2(.5);
return 1.-smoothstep(r-(r*1.15),r,dot(dist,dist)*4.);
}
uniform vec3 iColor1;
uniform vec3 iColor2;
varying float vRandColor;
void main(){
vec2 p=gl_PointCoord-.5+.5;
vec3 color=iColor1;
if(vRandColor>0.&&vRandColor<.5){
color=iColor2;
}
float shape=circle(p,1.);
vec3 col=color*shape;
gl_FragColor=vec4(col,1.);
}
`;
class Particles extends kokomi.Component {
constructor(base, config = {}) {
super(base);
const { count = 10000, pointColor1 = "#ff6030", pointColor2 = "#1b3984&.........完整代码请登录后点击上方下载按钮下载查看
网友评论0