summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-08 10:13:01 +0100
committerskal <pascal.massimino@gmail.com>2026-03-08 10:13:01 +0100
commit1438cfe727adc7b6a5d84c76b0878ed77ef254a8 (patch)
treea0493499f5281413b57f677979365fc98e96bac0 /src
parentfa7d2d7f3aa40d581ca2ad97e39fe944769ee5a3 (diff)
feat: WGSL asset load-from-disk in dev mode
- asset_packer: include WGSL in --disk_load path storage (alongside SPEC/MP3) - asset_manager: disk-load WGSL assets at runtime when !DEMO_STRIP_ALL - DemoCodegen: pass ASSET_PACKER_FLAGS to pack_test_assets so test assets also use disk-load paths in dev mode (fixes pre-existing SPEC/WGSL test failures) - test_shader_composer: fix stale assertions (fn test_wgsl → fn snippet_a, correct ordering check) 35/35 tests passing. handoff(Claude): WGSL disk-loading implemented. Shaders now loaded from disk in dev mode, enabling hot-reload without rebuild. Tests fixed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'src')
-rw-r--r--src/tests/gpu/test_shader_composer.cc6
-rw-r--r--src/util/asset_manager.cc6
2 files changed, 7 insertions, 5 deletions
diff --git a/src/tests/gpu/test_shader_composer.cc b/src/tests/gpu/test_shader_composer.cc
index 6e0b707..2f87e57 100644
--- a/src/tests/gpu/test_shader_composer.cc
+++ b/src/tests/gpu/test_shader_composer.cc
@@ -56,11 +56,11 @@ void test_asset_composition() {
"fn main() -> f32 { return test_wgsl(); }";
std::string result = sc.Compose({"TEST_WGSL"}, main_code);
- assert(result.find("fn test_wgsl()") != std::string::npos);
+ assert(result.find("fn snippet_a()") != std::string::npos);
assert(result.find("fn main()") != std::string::npos);
- size_t pos_a = result.find("test_wgsl");
- size_t pos_main = result.find("main");
+ size_t pos_a = result.find("snippet_a");
+ size_t pos_main = result.find("fn main()");
assert(pos_a < pos_main);
diff --git a/src/util/asset_manager.cc b/src/util/asset_manager.cc
index 6cad083..1c02626 100644
--- a/src/util/asset_manager.cc
+++ b/src/util/asset_manager.cc
@@ -78,7 +78,8 @@ const uint8_t* GetAsset(AssetId asset_id, size_t* out_size) {
#if !defined(DEMO_STRIP_ALL)
if (source_record.type == AssetType::SPEC ||
- source_record.type == AssetType::MP3) {
+ source_record.type == AssetType::MP3 ||
+ source_record.type == AssetType::WGSL) {
const char* path = (const char*)source_record.data;
FILE* f = fopen(path, "rb");
if (!f) {
@@ -224,7 +225,8 @@ void DropAsset(AssetId asset_id, const uint8_t* asset) {
#if !defined(DEMO_STRIP_ALL)
if (g_asset_cache[index].data == asset &&
(g_asset_cache[index].type == AssetType::SPEC ||
- g_asset_cache[index].type == AssetType::MP3)) {
+ g_asset_cache[index].type == AssetType::MP3 ||
+ g_asset_cache[index].type == AssetType::WGSL)) {
delete[] g_asset_cache[index].data;
g_asset_cache[index] = {};
}