From 3108fb0065a51dfc3548836ea16b287e92cd8881 Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 3 Feb 2026 19:06:41 +0100 Subject: feat: side-quest - Perlin noise sky and ProcGenFunc error handling - Updated ProcGenFunc signature to return bool for error reporting. - Implemented gen_perlin (Fractional Brownian Motion) in procedural/generator.cc. - Added support for sky texture in Renderer3D and its shader. - Integrated Perlin noise sky texture in test_3d_render.cc. - Caught and handled memory/generation errors in AssetManager and TextureManager. - Assigned reference numbers to all remaining tasks in documentation. handoff(Gemini): Side-quest complete. ProcGenFunc now returns bool. Perlin noise added and used for sky in 3D test. Windows build remains stable. All tasks numbered. --- src/gpu/texture_manager.cc | 14 +++++++++----- src/gpu/texture_manager.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src/gpu') diff --git a/src/gpu/texture_manager.cc b/src/gpu/texture_manager.cc index 5da82c0..0c30c94 100644 --- a/src/gpu/texture_manager.cc +++ b/src/gpu/texture_manager.cc @@ -2,7 +2,7 @@ // It implements the TextureManager. #include "gpu/texture_manager.h" -#include +#include #include #if defined(DEMO_CROSS_COMPILE_WIN32) @@ -33,14 +33,18 @@ void TextureManager::create_procedural_texture( // 1. Generate Data on CPU std::vector pixel_data; pixel_data.resize(def.width * def.height * 4); - def.gen_func(pixel_data.data(), def.width, def.height, def.params.data(), - (int)def.params.size()); + if (!def.gen_func(pixel_data.data(), def.width, def.height, def.params.data(), + (int)def.params.size())) { + fprintf(stderr, "Error: Procedural texture generation failed for: %s\n", + name.c_str()); + return; + } create_texture(name, def.width, def.height, pixel_data.data()); #if !defined(STRIP_ALL) - std::cout << "Generated procedural texture: " << name << " (" << def.width - << "x" << def.height << ")" << std::endl; + printf("Generated procedural texture: %s (%dx%d)\n", name.c_str(), def.width, + def.height); #endif } diff --git a/src/gpu/texture_manager.h b/src/gpu/texture_manager.h index f49e827..23fdbe8 100644 --- a/src/gpu/texture_manager.h +++ b/src/gpu/texture_manager.h @@ -12,7 +12,7 @@ struct ProceduralTextureDef { int width; int height; - void (*gen_func)(uint8_t*, int, int, const float*, int); + bool (*gen_func)(uint8_t*, int, int, const float*, int); std::vector params; }; -- cgit v1.2.3