webgpu sponza
This commit is contained in:
parent
5553ded476
commit
b5d0f52da0
21 changed files with 1426 additions and 58 deletions
35
project.cpp
35
project.cpp
|
|
@ -31,23 +31,9 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
});
|
||||
};
|
||||
|
||||
// Sniff the requested target from args before any deps resolve — the
|
||||
// Crafter.Asset dependency is heavy and not wasm-ready (uses `throw`
|
||||
// under -fno-exceptions, references `_Float16`). The DOM build stubs
|
||||
// the renderer entirely so the dep doesn't apply anyway.
|
||||
bool isWasm = false;
|
||||
for (std::string_view a : args) {
|
||||
if (a.starts_with("--target=") && a.find("wasm") != std::string_view::npos) {
|
||||
isWasm = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Configuration* event = resolveDep("Crafter.Event", "https://forgejo.catcrafts.net/Catcrafts/Crafter.Event.git");
|
||||
Configuration* math = resolveDep("Crafter.Math", "https://forgejo.catcrafts.net/Catcrafts/Crafter.Math.git");
|
||||
Configuration* asset = isWasm
|
||||
? nullptr
|
||||
: resolveDep("Crafter.Asset", "https://forgejo.catcrafts.net/Catcrafts/Crafter.Asset.git");
|
||||
Configuration* asset = resolveDep("Crafter.Asset", "https://forgejo.catcrafts.net/Catcrafts/Crafter.Asset.git");
|
||||
|
||||
Configuration cfg;
|
||||
cfg.path = "./";
|
||||
|
|
@ -55,11 +41,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
cfg.outputName = "Crafter.Graphics";
|
||||
cfg.type = ConfigurationType::LibraryStatic;
|
||||
auto opts = ApplyStandardArgs(cfg, args);
|
||||
if (asset) {
|
||||
cfg.dependencies = { event, math, asset };
|
||||
} else {
|
||||
cfg.dependencies = { event, math };
|
||||
}
|
||||
cfg.dependencies = { event, math, asset };
|
||||
|
||||
// Window backend follows the target triple. V1 had separate lib-wayland /
|
||||
// lib-win32 configurations; V2 picks the right one automatically based on
|
||||
|
|
@ -78,6 +60,16 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
// strips -march/-mtune from the clang command line for any wasm32-*
|
||||
// triple, so cfg.march/mtune can stay at their defaults — keeping them
|
||||
// matches the VariantId of dependency PCMs.
|
||||
//
|
||||
// WasmAlloc / WasmFree live in Crafter.Graphics-Dom.cpp and back
|
||||
// dom-env.js's __writeUtf8 path (every keyboard / text-input event
|
||||
// routes through them). The TU defines no symbols main.cpp would
|
||||
// reference, so wasm-ld dead-strips it from libCrafter.Graphics.a
|
||||
// for examples that don't touch the `Dom::HtmlElement*` API (like
|
||||
// Sponza). `--export=` both forces the export AND pulls the
|
||||
// defining .o in — solving both halves of the dead-strip problem.
|
||||
cfg.linkFlags.push_back("-Wl,--export=WasmAlloc");
|
||||
cfg.linkFlags.push_back("-Wl,--export=WasmFree");
|
||||
} else if (windows) {
|
||||
cfg.defines.push_back({"CRAFTER_GRAPHICS_WINDOW_WIN32", ""});
|
||||
cfg.linkFlags.push_back("-lkernel32");
|
||||
|
|
@ -131,7 +123,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
// when its body is gated out. Vulkan-typed partitions stub to empty
|
||||
// modules under CRAFTER_GRAPHICS_WINDOW_DOM; the Dom/DomEvents/Router
|
||||
// partitions stub to empty modules in the opposite direction.
|
||||
std::array<fs::path, 40> ifaces = {
|
||||
std::array<fs::path, 41> ifaces = {
|
||||
"interfaces/Crafter.Graphics",
|
||||
"interfaces/Crafter.Graphics-Animation",
|
||||
"interfaces/Crafter.Graphics-Clipboard",
|
||||
|
|
@ -147,6 +139,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
"interfaces/Crafter.Graphics-ForwardDeclarations",
|
||||
"interfaces/Crafter.Graphics-Gamepad",
|
||||
"interfaces/Crafter.Graphics-GraphicsTypes",
|
||||
"interfaces/Crafter.Graphics-Image2D",
|
||||
"interfaces/Crafter.Graphics-ImageVulkan",
|
||||
"interfaces/Crafter.Graphics-Input",
|
||||
"interfaces/Crafter.Graphics-InputField",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue