diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-18 23:55:44 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-18 23:55:44 +0300 |
| commit | 4943153ae6dd38a4d26297a5be14e6c974b76207 (patch) | |
| tree | 21424e8d72738de7d1cfb5c5daeb528a6cd4f8c4 /internal/generator/templates | |
| parent | 65cdc570d79f1c600bd7a74d13a6227eb1aeb80d (diff) | |
v0.4.2: boost wild mode intensity across all 14 themes
DOS: camera FOV/Z/X lunge + per-char X jitter (corrupted RAM look)
Spaceage: station scale pulse, pods fly to expanded/oscillating radius,
full camera X/Y/Z/FOV chaos (was time-offset only)
Matrix: camera plunges into the rain with Z/X sway + FOV warp
Plasma: blobs pulse in scale + camera sucked into vortex (was no camera)
Synthwave: camera warp-drive rush X/Y/Z/FOV (was tiny X drift only)
Retro: main cube scale pulse, orbiters expand to larger radius,
camera frenetic X/Y/Z/FOV sway
Retrofuture: rings tumble in 3D (X/Y tilt), full camera spiral + FOV pulse
All themes now have multi-dimensional wild effects; weakest now ≥4/5.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/generator/templates')
| -rw-r--r-- | internal/generator/templates/themes/dos.tmpl | 14 | ||||
| -rw-r--r-- | internal/generator/templates/themes/matrix.tmpl | 12 | ||||
| -rw-r--r-- | internal/generator/templates/themes/plasma.tmpl | 14 | ||||
| -rw-r--r-- | internal/generator/templates/themes/retro.tmpl | 24 | ||||
| -rw-r--r-- | internal/generator/templates/themes/retrofuture.tmpl | 24 | ||||
| -rw-r--r-- | internal/generator/templates/themes/spaceage.tmpl | 28 | ||||
| -rw-r--r-- | internal/generator/templates/themes/synthwave.tmpl | 14 |
7 files changed, 114 insertions, 16 deletions
diff --git a/internal/generator/templates/themes/dos.tmpl b/internal/generator/templates/themes/dos.tmpl index 2b48b73..622978c 100644 --- a/internal/generator/templates/themes/dos.tmpl +++ b/internal/generator/templates/themes/dos.tmpl @@ -227,8 +227,22 @@ y = ((y % 60) + 60) % 60 - 30; for (var r = 0; r < col.chars.length; r++) { col.chars[r].mesh.position.y = y - col.chars[r].offset; + // Wild: each char jitters horizontally like corrupted RAM + if (_wild) { col.chars[r].mesh.position.x = col.x + (Math.random() - 0.5) * 2.5; } + else { col.chars[r].mesh.position.x = col.x; } } } + // Wild: camera lunges forward/back and sways like a CRT meltdown + if (_wild) { + camera.position.z = 40 + Math.sin(realT * 0.41) * 14; + camera.position.x = Math.sin(realT * 0.37) * 8; + camera.fov = 60 + Math.sin(realT * 0.53) * 16; + camera.updateProjectionMatrix(); + } else { + camera.position.z = 40; + camera.position.x = 0; + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/matrix.tmpl b/internal/generator/templates/themes/matrix.tmpl index 445545f..40d74c1 100644 --- a/internal/generator/templates/themes/matrix.tmpl +++ b/internal/generator/templates/themes/matrix.tmpl @@ -247,6 +247,18 @@ points.geometry.attributes.position.needsUpdate = true; points.geometry.attributes.color.needsUpdate = true; + // Wild: camera plunges into the rain like riding a digital waterfall + if (_wild) { + var wt = Date.now() * 0.001; + camera.position.z = 50 + Math.sin(wt * 0.38) * 20; + camera.position.x = Math.sin(wt * 0.31) * 14; + camera.fov = 60 + Math.sin(wt * 0.51) * 18; + camera.updateProjectionMatrix(); + } else { + camera.position.z = 50; + camera.position.x = 0; + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/plasma.tmpl b/internal/generator/templates/themes/plasma.tmpl index 4f63fad..332d07f 100644 --- a/internal/generator/templates/themes/plasma.tmpl +++ b/internal/generator/templates/themes/plasma.tmpl @@ -229,7 +229,21 @@ blobs.forEach(function(b) { b.mesh.position.x = b.bx + b.ax * ampMult * Math.sin(t * b.fx + b.px); b.mesh.position.y = b.by + b.ay * ampMult * Math.cos(t * b.fy + b.py); + // Blobs pulse in size when wild + if (_wild) { b.mesh.scale.setScalar(1 + 0.3 * Math.sin(t * b.fy * 1.3)); } + else { b.mesh.scale.setScalar(1); } }); + // Wild: camera sucked into plasma vortex + if (_wild) { + camera.position.x = Math.sin(realT * 0.32) * 14; + camera.position.y = Math.sin(realT * 0.24) * 10; + camera.position.z = 40 + Math.sin(realT * 0.19) * 14; + camera.fov = 60 + Math.sin(realT * 0.41) * 16; + camera.updateProjectionMatrix(); + } else { + camera.position.set(0, 0, 40); + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/retro.tmpl b/internal/generator/templates/themes/retro.tmpl index 6ce2e61..d6487c2 100644 --- a/internal/generator/templates/themes/retro.tmpl +++ b/internal/generator/templates/themes/retro.tmpl @@ -218,19 +218,33 @@ _snoTOffset += (realT - _snoLastT) * (_wild ? 8 : 0); _snoLastT = realT; var t = realT + _snoTOffset; - // Main cube rotates; wild mode spins dramatically + // Main cube rotates; wild mode spins dramatically + pulses in scale mainCube.rotation.y = t * 0.35; mainCube.rotation.x = t * 0.18; - // Orbiters revolve around the central cube and spin individually + if (_wild) { mainCube.scale.setScalar(1 + 0.2 * Math.sin(realT * 5.1)); } + else { mainCube.scale.setScalar(1); } + // Orbiters fly outward to larger radius in wild mode + var orbR = _wild ? 18 + Math.sin(realT * 0.9) * 10 : 18; for (var i = 0; i < orbiters.length; i++) { var o = orbiters[i]; var angle = o.baseAngle + t * 0.4; - o.mesh.position.x = Math.cos(angle) * 18; - o.mesh.position.z = Math.sin(angle) * 18; - o.mesh.position.y = Math.sin(angle * 0.7) * 4; + o.mesh.position.x = Math.cos(angle) * orbR; + o.mesh.position.z = Math.sin(angle) * orbR; + o.mesh.position.y = Math.sin(angle * 0.7) * (_wild ? 10 : 4); o.mesh.rotation.x = t * 0.9; o.mesh.rotation.z = t * 0.6; } + // Camera: frenetic sway in wild, static otherwise + if (_wild) { + camera.position.x = Math.sin(realT * 0.39) * 14; + camera.position.y = Math.sin(realT * 0.31) * 8; + camera.position.z = 35 + Math.sin(realT * 0.23) * 14; + camera.fov = 60 + Math.sin(realT * 0.48) * 16; + camera.updateProjectionMatrix(); + } else { + camera.position.set(0, 0, 35); + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/retrofuture.tmpl b/internal/generator/templates/themes/retrofuture.tmpl index 57415bf..f1b1fb7 100644 --- a/internal/generator/templates/themes/retrofuture.tmpl +++ b/internal/generator/templates/themes/retrofuture.tmpl @@ -288,9 +288,27 @@ atomic.scale.setScalar(pulse); ringH.rotation.z = t * 0.4; ringV.rotation.z = -t * 0.3; - // Slow camera orbit for parallax - camera.position.x = Math.sin(t * 0.07) * 5; - camera.position.y = 10 + Math.sin(t * 0.05) * 2; + // Rings tilt chaotically in wild — full 3D tumble + if (_wild) { + ringH.rotation.x = Math.sin(realT * 2.3) * 0.8; + ringV.rotation.y = Math.cos(realT * 1.9) * 0.9; + } else { + ringH.rotation.x = 0; + ringV.rotation.y = 0; + } + // Camera: meltdown spiral in wild, slow orbit otherwise + if (_wild) { + camera.position.x = Math.sin(realT * 0.36) * 16; + camera.position.y = 10 + Math.sin(realT * 0.29) * 10; + camera.position.z = 45 + Math.sin(realT * 0.22) * 16; + camera.fov = 60 + Math.sin(realT * 0.47) * 18; + camera.updateProjectionMatrix(); + } else { + camera.position.x = Math.sin(t * 0.07) * 5; + camera.position.y = 10 + Math.sin(t * 0.05) * 2; + camera.position.z = 45; + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } camera.lookAt(0, -5, -10); renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/spaceage.tmpl b/internal/generator/templates/themes/spaceage.tmpl index 2776147..a71f057 100644 --- a/internal/generator/templates/themes/spaceage.tmpl +++ b/internal/generator/templates/themes/spaceage.tmpl @@ -255,14 +255,18 @@ // Station rotates; wild mode = warp-speed orbital mechanics station.rotation.y = t * 0.12; station.rotation.x = Math.sin(t * 0.07) * 0.3; + if (_wild) { station.scale.setScalar(1 + 0.15 * Math.sin(realT * 4.5)); } + else { station.scale.setScalar(1); } - // Satellite pods orbit on a wider radius than the station ring + // Satellite pods orbit at expanded + oscillating radius in wild mode + var podR = _wild ? 24 + Math.sin(realT * 0.7) * 10 : 24; + var podY = _wild ? 12 : 5; for (var i = 0; i < pods.length; i++) { var angle = pods[i]._baseAngle + t * 0.38; pods[i].position.set( - Math.cos(angle) * 24, - Math.sin(angle * 0.6) * 5, - Math.sin(angle) * 24 + Math.cos(angle) * podR, + Math.sin(angle * 0.6) * podY, + Math.sin(angle) * podR ); pods[i].rotation.x = t * 0.7 + i; pods[i].rotation.z = t * 0.5 + i; @@ -271,9 +275,19 @@ // Planet drifts very slowly planet.rotation.y = t * 0.04; - // Gentle camera drift for parallax - camera.position.x = Math.sin(t * 0.06) * 5; - camera.position.y = 14 + Math.sin(t * 0.09) * 2; + // Camera: chaotic fly-by in wild, gentle drift otherwise + if (_wild) { + camera.position.x = Math.sin(realT * 0.34) * 18; + camera.position.y = 14 + Math.sin(realT * 0.27) * 10; + camera.position.z = 42 + Math.sin(realT * 0.21) * 16; + camera.fov = 58 + Math.sin(realT * 0.44) * 18; + camera.updateProjectionMatrix(); + } else { + camera.position.x = Math.sin(t * 0.06) * 5; + camera.position.y = 14 + Math.sin(t * 0.09) * 2; + camera.position.z = 42; + if (camera.fov !== 58) { camera.fov = 58; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } diff --git a/internal/generator/templates/themes/synthwave.tmpl b/internal/generator/templates/themes/synthwave.tmpl index 1cc6b46..f07103e 100644 --- a/internal/generator/templates/themes/synthwave.tmpl +++ b/internal/generator/templates/themes/synthwave.tmpl @@ -250,7 +250,19 @@ var pulse = _wild ? 1 + 0.12 * Math.sin(t * 8) : 1 + 0.015 * Math.sin(t * 1.5); sun.scale.setScalar(pulse); sunRings.forEach(function(r) { r.scale.setScalar(pulse); }); - camera.position.x = Math.sin(t * 0.08) * 4; + // Camera: warp-drive rush in wild, gentle sway otherwise + if (_wild) { + camera.position.x = Math.sin(realT * 0.35) * 16; + camera.position.y = 10 + Math.sin(realT * 0.28) * 9; + camera.position.z = 45 + Math.sin(realT * 0.23) * 18; + camera.fov = 60 + Math.sin(realT * 0.46) * 16; + camera.updateProjectionMatrix(); + } else { + camera.position.x = Math.sin(t * 0.08) * 4; + camera.position.y = 10; + camera.position.z = 45; + if (camera.fov !== 60) { camera.fov = 60; camera.updateProjectionMatrix(); } + } renderer.render(scene, camera); } |
