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