mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 22:04:56 +00:00
Build system: - Fix generate_cmake.py backslash paths and UTF-8 encoding for Windows - Auto C++20 in conan deps, auto-detect VS install location - dev_commands.py: add generate, all --run commands, platform-aware bootstrap - Add assimp to cmake_config.json link libraries - Fix CMakeUserPresets.json duplicate preset issue Cross-platform C++: - UUID generation: Windows rpc.h/UuidCreate with #ifdef _WIN32 - HOME env var fallback to USERPROFILE on Windows - Shader format detection for D3D12/DXIL Vulkan driver Shader pipeline (12 new SPIRV shaders): - Port all Metal shaders to Vulkan GLSL (PBR, shadows, post-FX, compute) - SDL3 GPU descriptor set convention (set 0-3) - Combined image samplers for Vulkan compatibility - Bootstrap-driven shader path rewriting (msl↔spirv automatic per platform) Rendering features: - spotlight.setup: generic atomic workflow step, attach to camera or static - PBR spotlight with cone attenuation, distance falloff, wrap lighting - Volumetric light beam (16-step ray march through dust/fog in spotlight cone) - geometry.create_flashlight: procedural flashlight mesh (cylinder + head + lens) - draw.viewmodel: FPS weapon-style rendering locked to camera view - model.load: Assimp-based 3D model loader (OBJ/GLB/FBX/BLEND) - Indoor ambient lighting fix, SSAO bypass for Vulkan clip-space Performance: - Frame loop logging suppressed via _in_frame_loop context flag Assets: - Real PBR textures from ambientCG (CC0): wood floor, concrete ceiling - Seed demo: dark room + flashlight beam + Quake-style viewmodel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
137 lines
3.6 KiB
JSON
137 lines
3.6 KiB
JSON
{
|
|
"name": "seed",
|
|
"version": "1.0.0",
|
|
"description": "FPS demo: room with spinning cube, WASD movement, mouse look, jump. Bullet3 physics.",
|
|
"type": "game",
|
|
"category": "demo",
|
|
"config": {
|
|
"gpu": {
|
|
"renderer": "auto"
|
|
},
|
|
"window": {
|
|
"width": 1024,
|
|
"height": 768,
|
|
"title": "Seed Demo",
|
|
"resizable": true
|
|
},
|
|
"camera": {
|
|
"fov": 60.0,
|
|
"near": 0.1,
|
|
"far": 100.0,
|
|
"position": [0.0, 1.6, 8.0],
|
|
"lookAt": [0.0, 2.5, 0.0]
|
|
},
|
|
"render": {
|
|
"clearColor": [0.05, 0.05, 0.08, 1.0],
|
|
"maxFrames": 0,
|
|
"targetFps": 60
|
|
},
|
|
"input": {
|
|
"mouseGrab": false,
|
|
"mouseSensitivity": 0.3
|
|
}
|
|
},
|
|
"defaultWorkflow": "workflows/seed_game.json",
|
|
"workflows": [
|
|
"workflows/seed_game.json",
|
|
"workflows/frame_tick.json"
|
|
],
|
|
"scene": [
|
|
"scene/default_camera.json"
|
|
],
|
|
"shaders": [
|
|
{
|
|
"id": "constant_color",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": {
|
|
"vertex": "shaders/spirv/constant_color.vert.spv",
|
|
"fragment": "shaders/spirv/constant_color.frag.spv"
|
|
},
|
|
"msl": {
|
|
"vertex": "shaders/msl/constant_color.vert.metal",
|
|
"fragment": "shaders/msl/constant_color.frag.metal"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "textured",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": {
|
|
"vertex": "shaders/spirv/textured.vert.spv",
|
|
"fragment": "shaders/spirv/textured.frag.spv"
|
|
},
|
|
"msl": {
|
|
"vertex": "shaders/msl/textured.vert.metal",
|
|
"fragment": "shaders/msl/textured.frag.metal"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "shadow_depth",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": {
|
|
"vertex": "shaders/spirv/shadow_depth.vert.spv",
|
|
"fragment": "shaders/spirv/shadow_depth.frag.spv"
|
|
},
|
|
"msl": {
|
|
"vertex": "shaders/msl/shadow_depth.vert.metal",
|
|
"fragment": "shaders/msl/shadow_depth.frag.metal"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "postfx_fullscreen",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "vertex": "shaders/spirv/postfx_fullscreen.vert.spv" },
|
|
"msl": { "vertex": "shaders/msl/postfx_fullscreen.vert.metal" }
|
|
}
|
|
},
|
|
{
|
|
"id": "postfx_bloom_blur",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "fragment": "shaders/spirv/postfx_bloom_blur.frag.spv" },
|
|
"msl": { "fragment": "shaders/msl/postfx_bloom_blur.frag.metal" }
|
|
}
|
|
},
|
|
{
|
|
"id": "postfx_bloom_extract",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "fragment": "shaders/spirv/postfx_bloom_extract.frag.spv" },
|
|
"msl": { "fragment": "shaders/msl/postfx_bloom_extract.frag.metal" }
|
|
}
|
|
},
|
|
{
|
|
"id": "postfx_composite",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "fragment": "shaders/spirv/postfx_composite.frag.spv" },
|
|
"msl": { "fragment": "shaders/msl/postfx_composite.frag.metal" }
|
|
}
|
|
},
|
|
{
|
|
"id": "postfx_ssao",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "fragment": "shaders/spirv/postfx_ssao.frag.spv" },
|
|
"msl": { "fragment": "shaders/msl/postfx_ssao.frag.metal" }
|
|
}
|
|
},
|
|
{
|
|
"id": "tessellate",
|
|
"backendOrder": ["spirv", "msl"],
|
|
"backends": {
|
|
"spirv": { "compute": "shaders/spirv/tessellate.comp.spv" },
|
|
"msl": { "compute": "shaders/msl/tessellate.comp.metal" }
|
|
}
|
|
}
|
|
],
|
|
"bundled": true,
|
|
"dependencies": []
|
|
}
|