Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { margin: 0; padding: 0; } html, body { overflow: hidden; } .webgl { position: fixed; top: 0; left: 0; outline: none; }
JavaScript
/** * Debug */ const gui = new dat.GUI({ closed: false, width: 340 }); const bigWavesFolder = gui.addFolder("Large Waves"); const smallWavesFolder = gui.addFolder("Small Waves"); const colorFolder = gui.addFolder("Colors"); const debugObject = { waveDepthColor: "#1e4d40", waveSurfaceColor: "#4d9aaa", fogNear: 1, fogFar: 3, fogColor: "#8e99a2" }; /** * Base */ // Canvas const canvas = document.querySelector("canvas.webgl"); // Scene const scene = new THREE.Scene(); scene.fog = new THREE.Fog( debugObject.fogColor, debugObject.fogNear, debugObject.fogFar ); scene.background = new THREE.Color(debugObject.fogColor); /** * Object */ const waterGeometry = new THREE.PlaneGeometry(12, 12, 512, 512); // Material const waterMaterial = new THREE.ShaderMaterial({ vertexShader: document.getElementById("vertexShader").textContent, fragmentShader: document.getElementById("fragmentShader").textContent, transparent: true, fog: true, uniforms: { uTime: { value: 0 }, uMouse: { value: new THREE.Vector2() }, uBigWavesElevation: { value: 0.2 }, uBigWavesFrequency: { value: new THREE.Vector2(4, 2) }, uBigWaveSpeed: { value: 0.75 }, // Small Waves uSmallWavesElevation: { value: 0.15 }, uSmallWavesFrequency: { value: 3 }, uSmallWavesSpeed: { value: 0.2 }, uSmallWavesIterations: { value: 4 }, // Color uDepthColor: { value: new THREE.Color(debugObject.waveDepthColor) }, uSurfaceColor: { value: new THREE.Color(debugObject.waveSurfaceColor) }, uColorOffset: { value: 0.08 }, uColorMultiplier: { value: 5 }, // Fog, contains fogColor, fogDensity, fogFar and fogNear ...THREE.UniformsLib["fog"] } }); const water = new THREE.Mesh(waterGeometry, waterMaterial); water.rotation.x = -Math.PI * 0.5; scene.add(water); /** * Sizes */ const sizes = { width: window.innerWidth, height: window.innerHeight }; window.addEventListener("resize", () => { // Update sizes sizes.width = window.innerWidth; sizes.height = window.innerHeight; // Update camera camera.aspect = sizes.width / sizes.height; camera.updateProjectionMatrix(); // Update renderer renderer.setSize(sizes.width, sizes.height); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); }); /** * Camera */ // Base camera const camera = new THREE.PerspectiveCamera( 75, sizes.width / sizes.height, 0.1, 100 ); camera.position.set(1, 1, 1); scene.add(camera); // Controls const controls = new THREE.OrbitControls(camera, canvas); controls.enableDamping = true; /** * Renderer */ const renderer = new THREE.WebGLRenderer({ canvas: canvas }); renderer.setSize(sizes.width, sizes.height); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); /** * Add GUI */ // Big Waves bigWavesFolder .add(waterMaterial.uniforms.uBigWavesElevation, "value") .min(0) .max(1) .step(0.001) .name("Elevation"); bigWavesFolder .add(waterMaterial.uniforms.uBigWavesFrequency.value, "x") .min(0) .max(10) .step(0.001) .name("Frequency X"); bigWavesFolder .add(waterMaterial.uniforms.uBigWavesFrequency.value, "y") .min(0) .max(10) .step(0.001) .name("Frequency Y"); bigWavesFolder .add(waterMaterial.uniforms.uBigWaveSpeed, "value") .min(0.25) .max(5) .step(0.001) .name("Speed"); // Small Waves smallWavesFolder .add(waterMaterial.uniforms.uSmallWavesElevation, "value") .min(0.0) .max(0.3) .step(0.001) .name("Elevation"); smallWavesFolder .add(waterMaterial.uniforms.uSmallWavesFrequency, "value") .min(0) .max(30) .step(0.001) .name("Frequency"); smallWavesFolder .add(waterMaterial.uniforms.uSmallWavesSpeed, "value") .min(0.0) .max(1) .step(0.001) .name("Speed"); smallWavesFolder .add(waterMaterial.uniforms.uSmallWavesIterations, "value") .min(0) .max(10) .step(1) .name("Iterations"); // Colors colorFolder .add(waterMaterial.uniforms.uColorOffset, "value") .min(0) .max(0.15) .step(0.0001) .name("Color Offset"); colorFolder .add(waterMaterial.uniforms.uColorMultiplier, "value") .min(0.0) .max(10.0) .step(0.001) .name("Color multiplier"); colorFolder .addColor(debugObject, "waveDepthColor") .name("Wave depth color") .onChange(() => { waterMaterial.uniforms.uDepthColor.value.set(debugObject.waveDepthColor); }); colorFolder .addColor(debugObject, "waveSurfaceColor") .name("Wave surface color") .onChange(() => { waterMaterial.uniforms.uSurfaceColor.value.set( debugObject.waveSurfaceColor ); }); colorFolder .addColor(debugObject, "fogColor") .name("Fog Color") .onChange(() => { waterMaterial.uniforms.fogColor.value.set(debugObject.fogColor); scene.background.set(debugObject.fogColor); scene.fog = new THREE.Fog( debugObject.fogColor, debugObject.fogNear, debugObject.fogFar ); }); /** * Animate */ const clock = new THREE.Clock(); const tick = () => { const elapsedTime = clock.getElapsedTime(); // Update controls controls.update(); // Update time waterMaterial.uniforms.uTime.value = elapsedTime; // Render renderer.render(scene, camera); // Call tick again on the next frame window.requestAnimationFrame(tick); }; tick();
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>汹涌的大海-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号