three实现变色粒子在容器中碰撞动画效果代码
代码语言:html
所属分类:粒子
代码描述:three实现变色粒子在容器中碰撞动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
@import url("https://fonts.googleapis.com/css?family=Inconsolata:400,400i,700");
* {
margin: 0;
padding: 0;
}
html,
body {
overflow: hidden;
font-family: Inconsolata, sans-serif;
color: #eee;
}
h1 {
position: relative;
z-index: 1;
padding: 1rem;
font-weight: 400;
font-size: 1rem;
}
.webgl {
position: fixed;
top: 0;
left: 0;
outline: none;
}
</style>
</head>
<body >
<canvas class="webgl"></canvas>
<script type="x-shader/x-vertex" id="vertexShader">
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;
attribute vec3 position;
attribute vec2 uv;
varying vec2 vUv;
void main()
{
vec4 pos=vec4(position,1.);
vec4 modelPosition=modelMatrix*vec4(position,1.);
vec4 viewPosition=viewMatrix*modelPosition;
vec4 projectedPosition=projectionMatrix*viewPosition;
vUv=uv;
gl_Position=projectedPosition;
}
</script>
<script type="x-shader/x-fragment" id="fragmentShader">
precision mediump float;
uniform float u_time;
varying vec2 vUv;
#define PI 3.141592653589
#define TWO_PI 6.28318530718
float rand(float x) { return fract(sin(x * 1.14529) * 43758.5453123); }
vec3 light_point(vec2 xy, vec2 center, vec3 color, float strength, float threshold) {
vec3 clr = vec3(0.0);
float l = length(xy - center);
clr += (strength / l) * smoothstep(0.0, threshold, strength / l);
return clr * color;
}
vec3 hsl2rgb(vec3 c) {
vec3 rgb = clamp(abs(mod(c.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.........完整代码请登录后点击上方下载按钮下载查看
网友评论0