ROADMAP.md

This commit is contained in:
2026-01-09 22:23:00 +00:00
parent cafd1c76c1
commit a3b0121e47
3 changed files with 175 additions and 137 deletions

View File

@@ -47,6 +47,34 @@
"type": "luma_range",
"min_luma": 0.01,
"max_luma": 0.95
},
{
"type": "mean_color",
"color": [0.4, 0.45, 0.5],
"tolerance": 0.25
},
{
"type": "sample_points",
"points": [
{
"x": 0.25,
"y": 0.25,
"color": [0.2, 0.3, 0.4],
"tolerance": 0.35
},
{
"x": 0.5,
"y": 0.5,
"color": [0.1, 0.2, 0.6],
"tolerance": 0.4
},
{
"x": 0.75,
"y": 0.75,
"color": [0.8, 0.85, 0.9],
"tolerance": 0.3
}
]
}
]
}

View File

@@ -49,3 +49,7 @@ Avoid stagnation; improve structure, clarity, and expressiveness over time.
Roadmap discipline.
If you run out of ROADMAP.md tasks, stop and report.
We should reassess priorities before inventing work.
Prefer JSON workflows over LUA - Steps can be written in host language.
Vulkan can be a bit sketchy at first, very cryptic crashes. Try OpenGL.

View File

@@ -74,6 +74,19 @@ std::filesystem::path GetSeedConfigPath() {
return repoRoot / "config" / "seed_runtime.json";
}
std::string DeterminePreferredRenderer() {
if (const char* envRenderer = std::getenv("BGFX_RENDERER")) {
return envRenderer;
}
if (const char* videoDriver = std::getenv("SDL_VIDEODRIVER")) {
std::string driver(videoDriver);
if (driver == "offscreen" || driver == "dummy") {
return "opengl";
}
}
return "opengl";
}
std::optional<std::string> ReadFileContents(const std::filesystem::path& path) {
std::ifstream input(path);
if (!input) {
@@ -388,14 +401,7 @@ bool RunGpuRenderTest(int& failures,
// Load and render the actual cube scene to catch color, geometry, and animation issues
auto scriptPath = GetCubeScriptPath();
auto configPath = GetSeedConfigPath();
auto configJson = ReadFileContents(configPath);
if (!configJson) {
std::cerr << "GPU render test failed: could not load scene config\n";
++failures;
success = false;
} else {
auto sceneConfigService = std::make_shared<CubeDemoConfigService>(scriptPath, *configJson, "vulkan");
auto sceneConfigService = configService;
auto meshService = std::make_shared<sdl3cpp::services::impl::MeshService>(sceneConfigService, logger);
auto audioService = std::make_shared<StubAudioCommandService>();
auto physicsService = std::make_shared<sdl3cpp::services::impl::PhysicsBridgeService>(logger);
@@ -533,7 +539,6 @@ bool RunGpuRenderTest(int& failures,
std::cout << "GPU render test: Successfully rendered and validated scene pipeline\n";
}
}
backend.Shutdown();
windowService->DestroyWindow();
@@ -552,7 +557,8 @@ void RunCubeDemoSceneTests(int& failures) {
}
auto logger = std::make_shared<sdl3cpp::services::impl::LoggerService>();
auto configService = std::make_shared<CubeDemoConfigService>(scriptPath, *configJson, "vulkan");
const std::string preferredRenderer = DeterminePreferredRenderer();
auto configService = std::make_shared<CubeDemoConfigService>(scriptPath, *configJson, preferredRenderer);
auto meshService = std::make_shared<sdl3cpp::services::impl::MeshService>(configService, logger);
auto audioService = std::make_shared<StubAudioCommandService>();
auto physicsService = std::make_shared<sdl3cpp::services::impl::PhysicsBridgeService>(logger);