major gfx refactor from fixed function to shader based

This commit is contained in:
asrael 2026-02-02 17:48:25 -06:00
parent 0c0aa792c1
commit 40b385607d
58 changed files with 3681 additions and 2982 deletions

View file

@ -4,7 +4,6 @@
(local net-mod (require :pxl8.net))
(var paused false)
(var wireframe false)
(var gui nil)
(var render-distance 3)
(var sim-distance 4)
@ -13,6 +12,11 @@
(var current-items [])
(var pending-action nil)
(var baked-lighting true)
(var dynamic-lighting true)
(var textures true)
(var wireframe false)
(fn init []
(set gui (pxl8.create_gui))
(let [w (world-mod.World.get)]
@ -100,24 +104,20 @@
(or clicked (and is-selected (= pending-action label))))))
(fn draw-main-menu []
(pxl8.gui_window 200 80 240 235 "pxl8 demo")
(pxl8.gui_window 200 80 240 200 "pxl8 demo")
(when (menu-button 1 215 127 210 30 "Resume")
(hide))
(let [wire-label (if wireframe "Wireframe: On" "Wireframe: Off")]
(when (menu-button 4 215 162 210 30 wire-label)
(set wireframe (not wireframe))))
(when (menu-button 5 215 197 210 30 "GFX")
(when (menu-button 5 215 162 210 30 "GFX")
(set current-panel :gfx)
(set selected-item nil))
(when (menu-button 6 215 232 210 30 "SFX")
(when (menu-button 6 215 197 210 30 "SFX")
(set current-panel :sfx)
(set selected-item nil))
(when (menu-button 2 215 267 210 30 "Quit")
(when (menu-button 2 215 232 210 30 "Quit")
(pxl8.quit)))
(fn draw-sfx-panel []
@ -136,10 +136,18 @@
(set selected-item nil)))
(fn draw-gfx-panel []
(pxl8.gui_window 200 100 240 180 "GFX")
(pxl8.gui_window 200 60 240 220 "GFX")
(pxl8.gui_label 215 150 (.. "Render: " render-distance) 15)
(let [(changed new-val) (gui:slider_int 30 215 165 210 16 render-distance 1 8)]
(let [baked-label (if baked-lighting "Baked Lighting: On" "Baked Lighting: Off")]
(when (menu-button 40 215 107 210 24 baked-label)
(set baked-lighting (not baked-lighting))))
(let [dynamic-label (if dynamic-lighting "Dynamic Lighting: On" "Dynamic Lighting: Off")]
(when (menu-button 41 215 134 210 24 dynamic-label)
(set dynamic-lighting (not dynamic-lighting))))
(pxl8.gui_label 215 162 (.. "Render: " render-distance) 15)
(let [(changed new-val) (gui:slider_int 30 215 175 210 14 render-distance 1 8)]
(when changed
(set render-distance new-val)
(let [w (world-mod.World.get)
@ -147,16 +155,15 @@
(when w (w:set_render_distance new-val))
(when n (n:set_chunk_settings new-val sim-distance)))))
(pxl8.gui_label 215 190 (.. "Sim: " sim-distance) 15)
(let [(changed new-val) (gui:slider_int 31 215 205 210 16 sim-distance 1 8)]
(when changed
(set sim-distance new-val)
(let [w (world-mod.World.get)
n (net-mod.get)]
(when w (w:set_sim_distance new-val))
(when n (n:set_chunk_settings render-distance new-val)))))
(let [tex-label (if textures "Textures: On" "Textures: Off")]
(when (menu-button 42 215 194 210 24 tex-label)
(set textures (not textures))))
(when (menu-button 32 215 240 210 30 "Back")
(let [wire-label (if wireframe "Wireframe: On" "Wireframe: Off")]
(when (menu-button 43 215 221 210 24 wire-label)
(set wireframe (not wireframe))))
(when (menu-button 32 215 248 210 24 "Back")
(set current-panel :main)
(set selected-item nil)))
@ -178,6 +185,9 @@
{:init init
:is-paused (fn [] paused)
:is-baked-lighting (fn [] baked-lighting)
:is-dynamic-lighting (fn [] dynamic-lighting)
:is-textures (fn [] textures)
:is-wireframe (fn [] wireframe)
:toggle toggle
:show show