diff options
| author | Natasha Moongrave <natasha@256phi.eu> | 2026-03-22 22:50:26 +0100 |
|---|---|---|
| committer | Natasha Moongrave <natasha@256phi.eu> | 2026-03-22 22:50:26 +0100 |
| commit | 5040da28e3561168ecd5c355091d707cf4115dee (patch) | |
| tree | f475a2e570702e981fa67f6d7d96a2335df7a197 /main.js | |
| parent | e84b5703544f8e0642f24e058b7b848c92b746dd (diff) | |
Moved the background JavaScript code from . to src/Background
Diffstat (limited to 'main.js')
| -rw-r--r-- | main.js | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/main.js b/main.js deleted file mode 100644 index 2fc398b..0000000 --- a/main.js +++ /dev/null @@ -1,82 +0,0 @@ -import * as THREE from 'https://unpkg.com/three@0.160.0/build/three.module.js'; -import { createSun } from './sun.js'; -import { createMountains } from './mountains.js'; - -// Scene setup -const scene = new THREE.Scene(); -scene.background = new THREE.Color(0x090012); -scene.fog = new THREE.Fog(0x090012, 20, 120); - -const camera = new THREE.PerspectiveCamera( - 60, - window.innerWidth / window.innerHeight, - 0.1, - 500 -); -camera.position.set(0, 2, 15); -camera.rotation.x = -0.1; - -const renderer = new THREE.WebGLRenderer({ - canvas: document.getElementById('bg'), - antialias: true -}); -renderer.setSize(window.innerWidth, window.innerHeight); -renderer.setPixelRatio(Math.min(window.devicePixelRatio, 1.5)); - -// Grid -const size = 200; -const divisions = 200; -const grid = new THREE.GridHelper(size, divisions, 0xff00ff, 0xff00ff); -grid.material.transparent = true; -grid.material.opacity = 0.4; -scene.add(grid); - -// --- Occlusion floor (invisible) --- -const floorGeometry = new THREE.PlaneGeometry(size, size); -const floorMaterial = new THREE.MeshBasicMaterial({ - color: 0x090012, // matches background - opacity: 0.5, // invisible - transparent: true -}); -const floor = new THREE.Mesh(floorGeometry, floorMaterial); -floor.rotation.x = -Math.PI / 2; // horizontal -floor.position.y = 0; // same height as grid -scene.add(floor); - -// Sun -const { sun, glow } = createSun(); -scene.add(sun); -scene.add(glow); - -let scroll = 0; -let sunAngle = 0; - -// Mountains -const mountains = createMountains(); -scene.add(mountains); - -// Animation function -function animate() { - scroll += 0.05; - grid.position.z = scroll % 10; - - renderer.render(scene, camera); -} - -// Start loop with pause/resume on tab visibility -renderer.setAnimationLoop(animate); - -document.addEventListener('visibilitychange', () => { - if (document.hidden) { - renderer.setAnimationLoop(null); - } else { - renderer.setAnimationLoop(animate); - } -}); - -// Handle window resize -window.addEventListener('resize', () => { - camera.aspect = window.innerWidth / window.innerHeight; - camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); -}); |
