three实现三维空间ShaderMaterial走光光线动画效果代码
代码语言:html
所属分类:三维
代码描述:three实现三维空间ShaderMaterial走光光线动画效果代码
代码标签: three 三维 空间 ShaderMaterial 走光 光线 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body { margin: 0; overflow: hidden; }
canvas { display: block; }
</style>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script>
</head>
<body>
<script type="module">
import * as THREE from 'https://cdn.skypack.dev/three@0.136.0/build/three.module.js';
import { OrbitControls } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/controls/OrbitControls.js';
import { FontLoader } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/loaders/FontLoader.js';
import { TextGeometry } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/geometries/TextGeometry.js';
import { EffectComposer } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/EffectComposer.js';
import { RenderPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/RenderPass.js';
import { UnrealBloomPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/UnrealBloomPass.js';
import { ShaderPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/ShaderPass.js';
// Shader code
const vertexShader = `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`;
const fragmentShader = `
uniform float iTime;
uniform vec2 iResolution;
uniform float factorSpeed;
uniform float factorBold;
varying vec2 vUv;
vec3 palette(float t) {
vec3 a = vec3(0.577, 0.192, 0.922);
vec3 b = vec3(0.827, 0.944, 0.565);
vec3 c = vec3(0.472, 1.541, 1.174);
vec3 d = vec3(3.973, 5.658, 1.133);
return a + b * cos(6.28318 * (c * t + d));
}
void main() {
vec2 fragCoord = vUv * iResolution;
vec2 uv = (fragCoord * 0.15 - iResolution) / iResolution.y;
vec3 finalColor = vec3(0.0);
vec2 uv0 = uv;
for (float i = 0.0; i < 2.0; i++) {
uv = uv - sign(iTime) * 0.5;
float d = min(dot(uv.x, uv.x), 0.5) + exp(-length(uv0));
vec3 col = palette(length(uv + abs(uv0)) * 0.4 + iTime * 0.4);
d = sin(d * factorSpeed + iTime) / factorSpeed;
d = abs(d+d+d)+d;
d = 0.005 / d;
finalColor += col * d * factorBold;
}
gl_FragColor = vec4(finalColor, 1.0);
}
`;
const shaderMaterial = new THREE.ShaderMaterial({
vertexShader: vertexShader,
fragmentShader: fragmentShader,
uniforms: {
iTime: { value: 5.0 },
iResolution: { value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
factorSpeed: { value: 20.0 },
factorBold: { value: 3.0 } } });
const RadialVignetteShader = {
uniforms: {
"tDiffuse": { value: null },
"resolution": { value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
&quo.........完整代码请登录后点击上方下载按钮下载查看
网友评论0