stream world data from pxl8d to pxl8

This commit is contained in:
asrael 2026-01-25 09:26:30 -06:00
parent 39ee0fefb7
commit a71a9840b2
55 changed files with 5290 additions and 2131 deletions

View file

@ -8,8 +8,8 @@
(local NUM_RANDOM_STARS 300)
(local NUM_TINY_STARS 7000)
(local STAR_CYCLE_PERIOD 86400)
(local STAR_SEED 0xDEADBEEF)
(local STAR_CYCLE_PERIOD 7200)
;; Use existing bright palette colors
;; Silver/white: indices 14-15 (brightest grays)
@ -102,15 +102,21 @@
(generate-sky-gradient zenith-r zenith-g zenith-b horizon-r horizon-g horizon-b)
(set last-gradient-key key))))
(fn galactic-band-factor [dx dy dz]
(let [band-len (math.sqrt (+ (* 0.6 0.6) (* 0.3 0.3) (* 0.742 0.742)))
bx (/ 0.6 band-len)
by (/ 0.3 band-len)
bz (/ 0.742 band-len)
dist-from-band (math.abs (+ (* dx bx) (* dy by) (* dz bz)))
in-band (- 1 (math.min (* dist-from-band 3) 1))]
(fn band-factor [dx dy dz bx by bz width]
(let [dist (math.abs (+ (* dx bx) (* dy by) (* dz bz)))
in-band (- 1 (math.min (* dist width) 1))]
(* in-band in-band)))
(fn galactic-band-factor [dx dy dz]
(let [;; Main galactic band - crosses zenith
band-len (math.sqrt (+ (* 0.6 0.6) (* 0.3 0.3) (* 0.742 0.742)))
b1 (band-factor dx dy dz (/ 0.6 band-len) (/ 0.3 band-len) (/ 0.742 band-len) 3)
;; Secondary band - lower angle, different orientation
b2 (band-factor dx dy dz 0.8 0.15 0.58 3.5)
;; Tertiary band - opposite side
b3 (band-factor dx dy dz -0.7 0.2 0.69 4)]
(math.max b1 b2 b3)))
(fn generate-stars []
(set random-stars [])
(set tiny-stars [])
@ -205,8 +211,9 @@
(let [star (. tiny-stars (+ i 1))
int (math.floor (* star.brightness fade-in))]
(when (> int 8)
(star-glows:add (math.floor screen.x) (math.floor screen.y)
1 int star.color pxl8.GLOW_CIRCLE))))))
(let [px (math.floor (+ screen.x 0.5))
py (math.floor (+ screen.y 0.5))]
(star-glows:add px py 1 int star.color pxl8.GLOW_CIRCLE)))))))
(for [i 0 (- (length random-stars) 1)]
(let [screen (. star-projected (+ tiny-count i))]
@ -215,8 +222,8 @@
phase (+ (* (+ i 1) 2.137) (* time-factor 3.0))
twinkle (+ 0.75 (* 0.25 (math.sin (* phase 6.28))))
int (math.floor (* star.brightness fade-in twinkle))
sx (math.floor screen.x)
sy (math.floor screen.y)]
sx (math.floor (+ screen.x 0.5))
sy (math.floor (+ screen.y 0.5))]
(if (> star.brightness 220)
(do
(star-glows:add sx sy 3 (math.floor (* int 1.5)) star.color pxl8.GLOW_DIAMOND)