add debug code for rendering issues

This commit is contained in:
asrael 2025-11-10 01:42:19 -06:00
parent db0e47b6ad
commit 588176a645
12 changed files with 291 additions and 203 deletions

View file

@ -2,9 +2,9 @@
(local debug-ui (require :mod.debug_ui))
(var world nil)
(var cam-x 1000)
(var cam-x 512)
(var cam-y 64)
(var cam-z 1000)
(var cam-z 512)
(var cam-yaw 0)
(var cam-pitch 0)
(var bob-time 0)
@ -23,8 +23,8 @@
(set world (pxl8.world_new))
(let [result (pxl8.world_generate world {
:type pxl8.PROCGEN_CAVE
:width 32
:height 32
:width 16
:height 16
:seed 42
:density 0.45
:iterations 4})]
@ -33,118 +33,123 @@
(pxl8.info "Generated procedural cave"))))
(fn update [dt]
(set fps-accumulator (+ fps-accumulator dt))
(set fps-frame-count (+ fps-frame-count 1))
(let [clamped-dt (math.min dt 0.1)]
(when (> dt 0.05)
(pxl8.debug (.. "Large dt: " (string.format "%.3f" dt) "s")))
(when (>= fps-accumulator 0.25)
(set fps (/ fps-frame-count fps-accumulator))
(set fps-accumulator 0)
(set fps-frame-count 0))
(set fps-accumulator (+ fps-accumulator clamped-dt))
(set fps-frame-count (+ fps-frame-count 1))
(when (pxl8.key_pressed "F8")
(set show-debug-ui (not show-debug-ui))
(pxl8.ui_window_set_open "Debug Menu (F8)" show-debug-ui))
(when (>= fps-accumulator 0.25)
(set fps (/ fps-frame-count fps-accumulator))
(set fps-accumulator 0)
(set fps-frame-count 0))
(when (pxl8.world_is_loaded world)
(let [forward-x (- (math.sin cam-yaw))
forward-z (- (math.cos cam-yaw))
right-x (math.cos cam-yaw)
right-z (- (math.sin cam-yaw))
cell-size 64
grid-min 0
grid-max (* 32 cell-size)]
(when (pxl8.key_pressed "F8")
(set show-debug-ui (not show-debug-ui))
(pxl8.ui_window_set_open "Debug Menu (F8)" show-debug-ui))
(var moving false)
(var new-x cam-x)
(var new-z cam-z)
(when (pxl8.world_is_loaded world)
(let [forward-x (- (math.sin cam-yaw))
forward-z (- (math.cos cam-yaw))
right-x (math.cos cam-yaw)
right-z (- (math.sin cam-yaw))
cell-size 64
grid-min 0
grid-max (* 16 cell-size)]
(when (pxl8.key_down "w")
(set new-x (+ new-x (* forward-x move-speed dt)))
(set new-z (+ new-z (* forward-z move-speed dt)))
(set moving true))
(var moving false)
(var new-x cam-x)
(var new-z cam-z)
(when (pxl8.key_down "s")
(set new-x (- new-x (* forward-x move-speed dt)))
(set new-z (- new-z (* forward-z move-speed dt)))
(set moving true))
(when (pxl8.key_down "w")
(set new-x (+ new-x (* forward-x move-speed clamped-dt)))
(set new-z (+ new-z (* forward-z move-speed clamped-dt)))
(set moving true))
(when (pxl8.key_down "q")
(set new-x (- new-x (* right-x move-speed dt)))
(set new-z (- new-z (* right-z move-speed dt)))
(set moving true))
(when (pxl8.key_down "s")
(set new-x (- new-x (* forward-x move-speed clamped-dt)))
(set new-z (- new-z (* forward-z move-speed clamped-dt)))
(set moving true))
(when (pxl8.key_down "e")
(set new-x (+ new-x (* right-x move-speed dt)))
(set new-z (+ new-z (* right-z move-speed dt)))
(set moving true))
(when (pxl8.key_down "q")
(set new-x (- new-x (* right-x move-speed clamped-dt)))
(set new-z (- new-z (* right-z move-speed clamped-dt)))
(set moving true))
(when (and (>= new-x grid-min) (<= new-x grid-max)
(>= new-z grid-min) (<= new-z grid-max))
(set cam-x new-x)
(set cam-z new-z))
(when (pxl8.key_down "e")
(set new-x (+ new-x (* right-x move-speed clamped-dt)))
(set new-z (+ new-z (* right-z move-speed clamped-dt)))
(set moving true))
(when (or (pxl8.key_down "left") (pxl8.key_down "a"))
(set cam-yaw (+ cam-yaw (* turn-speed dt))))
(when (and (>= new-x grid-min) (<= new-x grid-max)
(>= new-z grid-min) (<= new-z grid-max))
(set cam-x new-x)
(set cam-z new-z))
(when (or (pxl8.key_down "right") (pxl8.key_down "d"))
(set cam-yaw (- cam-yaw (* turn-speed dt))))
(when (or (pxl8.key_down "left") (pxl8.key_down "a"))
(set cam-yaw (+ cam-yaw (* turn-speed clamped-dt))))
(when (pxl8.key_down "up")
(set cam-pitch (+ cam-pitch (* turn-speed dt)))
(when (> cam-pitch 1.5) (set cam-pitch 1.5)))
(when (or (pxl8.key_down "right") (pxl8.key_down "d"))
(set cam-yaw (- cam-yaw (* turn-speed clamped-dt))))
(when (pxl8.key_down "down")
(set cam-pitch (- cam-pitch (* turn-speed dt)))
(when (< cam-pitch -1.5) (set cam-pitch -1.5)))
(when (pxl8.key_down "up")
(set cam-pitch (+ cam-pitch (* turn-speed clamped-dt)))
(when (> cam-pitch 1.5) (set cam-pitch 1.5)))
(if moving
(set bob-time (+ bob-time (* dt bob-speed)))
(let [target-phase (* (math.floor (/ bob-time math.pi)) math.pi)]
(set bob-time (+ (* bob-time 0.8) (* target-phase 0.2))))))))
(when (pxl8.key_down "down")
(set cam-pitch (- cam-pitch (* turn-speed clamped-dt)))
(when (< cam-pitch -1.5) (set cam-pitch -1.5)))
(if moving
(set bob-time (+ bob-time (* clamped-dt bob-speed)))
(let [target-phase (* (math.floor (/ bob-time math.pi)) math.pi)]
(set bob-time (+ (* bob-time 0.8) (* target-phase 0.2)))))))))
(fn frame []
(pxl8.clr 0)
(when (pxl8.world_is_loaded world)
(let [bob-offset (* (math.sin bob-time) bob-amount)
eye-y (+ cam-y bob-offset)
forward-x (- (math.sin cam-yaw))
forward-z (- (math.cos cam-yaw))
target-x (+ cam-x forward-x)
target-y (+ eye-y (math.sin cam-pitch))
target-z (+ cam-z forward-z)]
(when (pxl8.world_is_loaded world)
(let [bob-offset (* (math.sin bob-time) bob-amount)
eye-y (+ cam-y bob-offset)
forward-x (- (math.sin cam-yaw))
forward-z (- (math.cos cam-yaw))
target-x (+ cam-x forward-x)
target-y (+ eye-y (math.sin cam-pitch))
target-z (+ cam-z forward-z)]
(pxl8.text (.. "Pos: " (string.format "%.0f" cam-x) ","
(string.format "%.0f" cam-y) ","
(string.format "%.0f" cam-z)) 10 25 12)
(pxl8.text (.. "Pos: " (string.format "%.0f" cam-x) ","
(string.format "%.0f" cam-y) ","
(string.format "%.0f" cam-z)) 10 25 12)
(pxl8.clear_zbuffer)
(pxl8.set_backface_culling true)
(pxl8.set_wireframe false)
(pxl8.clear_zbuffer)
(let [aspect (/ (pxl8.get_width) (pxl8.get_height))
fov 1.047]
(pxl8.set_projection (pxl8.mat4_perspective fov aspect 1.0 4096.0)))
(pxl8.set_backface_culling true)
(pxl8.set_wireframe false)
(pxl8.set_view (pxl8.mat4_lookat
[cam-x eye-y cam-z]
[target-x target-y target-z]
[0 1 0]))
(let [aspect (/ (pxl8.get_width) (pxl8.get_height))
fov 1.047]
(pxl8.set_projection (pxl8.mat4_perspective fov aspect 1.0 4096.0)))
(pxl8.set_model (pxl8.mat4_identity))
(pxl8.set_view (pxl8.mat4_lookat
[cam-x eye-y cam-z]
[target-x target-y target-z]
[0 1 0]))
(pxl8.set_affine_textures affine)
(pxl8.world_render world [cam-x eye-y cam-z]))
(pxl8.set_model (pxl8.mat4_identity))
(let [new-state (debug-ui.render {:show-debug-ui show-debug-ui
:fps fps
:wireframe false
:auto-rotate false
:orthographic false
:use-texture true
:affine affine})]
(when (not= new-state.show-debug-ui nil) (set show-debug-ui new-state.show-debug-ui))
(when (not= new-state.affine nil) (set affine new-state.affine)))))
(pxl8.set_affine_textures affine)
(pxl8.world_render world [cam-x eye-y cam-z])))
(let [new-state (debug-ui.render {:show-debug-ui show-debug-ui
:fps fps
:wireframe false
:auto-rotate false
:orthographic false
:use-texture true
:affine affine})]
(when (not= new-state.show-debug-ui nil) (set show-debug-ui new-state.show-debug-ui))
(when (not= new-state.affine nil) (set affine new-state.affine))))
{:init init
:update update