From 22dd0d43a1fefb4d20f5c3265d2af52dda2c4f41 Mon Sep 17 00:00:00 2001 From: Michael Hitchens Date: Wed, 20 May 2026 11:11:22 -0400 Subject: [PATCH 1/4] Document running samples like gltf_basic_materials The building and running instructions didn't note: * The difference between multi-config and non-multi-config generators * The binary API prefix Additionally, gltf_basic_materials has some extra knobs that are useful for those wishing to effectively run the sample. These have been documented in a project-specific README --- docs/building_and_running.md | 13 +++++++++++-- projects/gltf_basic_materials/README.md | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 projects/gltf_basic_materials/README.md diff --git a/docs/building_and_running.md b/docs/building_and_running.md index 241998034..f2cb5ce1d 100644 --- a/docs/building_and_running.md +++ b/docs/building_and_running.md @@ -2,7 +2,14 @@ The recommended build system is CMake (version 3.20 and above). This repo supports both in-tree, and out-of-tree builds. The recommended generator is `Visual Studio 2022` for Windows and `Ninja` for Linux, but others are also supported. -Binaries are written to `/bin` and libraries to `/lib`. +Binaries and libraries are written to slightly different directories depending on whether you're using a multi-config generator or not: + +* For multi-config generators like Visual Studio: + * Binaries are written to `/bin/Debug` or `/bin/Release` depending on the chosen configuration + * Libraries are written to `/lib/Debug` or `/lib/Release` depending on the chosen configuration +* For non-multi-config generators like Ninja: + * Binaries are written to `/bin` + * Libraries are written to `/lib` Shaders are also written to ``, but prefixed with their path and the format. For example: @@ -17,6 +24,8 @@ Binaries have prefixes indicating the target graphics API and shader format: Build instructions vary slightly depending on the host and target platforms. +Binaries are prefixed with `vk_` when compiling with Vulkan support enabled and `dx12_` when compiling with DirectX12 support enabled. + ## Prerequisites ### DXC @@ -70,7 +79,7 @@ cmake -B build -G "Visual Studio 16 2019" -A x64 Open `build\BigWheels.sln` and build. -Built binaries are written to `build\bin`. +Built binaries are written to `build\bin\Debug` or `build\bin\Release` depending on your configuration. **Note: there is an outstanding [issue](https://github.com/google/bigwheels/issues/97) around duplicate targets in VS solutions which may cause build failures when building many shader targets in parallel. As a temporary workaround, you can re-trigger the build and it will eventually work.** diff --git a/projects/gltf_basic_materials/README.md b/projects/gltf_basic_materials/README.md new file mode 100644 index 000000000..ebc629c7f --- /dev/null +++ b/projects/gltf_basic_materials/README.md @@ -0,0 +1,21 @@ +# gltf_basic_materials + +This sample loads a scene with `ppx::scene::GltfLoader` and rendering it. + +After building, run `gltf_basic_materials` for the desired API in your build directory. E.g. for Vulkan: + +```sh +vk_gltf_basic_materials +``` + +By default, this will load `//assets/scene_renderer/scenes/tests/gltf_test_basic_materials.glb`. You can change which scene to load using the `--gltf-scene-asset` option: + +```sh +vk_gltf_basic_materials --gltf-scene-asset basic/models/altimeter/altimeter.gltf +``` + +This loads and renders `//assets/basic/models/altimeter/altimeter.gltf`. Notice that the provided path must be relative to one of the following directories: + +* `//assets/` +* `//third_party/assets/` +* Any path provided via `--extra-assets-path` From 70a6d5c74b2953695a7f02f68c66e2c516ae0d8a Mon Sep 17 00:00:00 2001 From: Michael Hitchens Date: Wed, 20 May 2026 11:26:16 -0400 Subject: [PATCH 2/4] Add glTF-Sample-Assets instructions --- projects/gltf_basic_materials/README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/projects/gltf_basic_materials/README.md b/projects/gltf_basic_materials/README.md index ebc629c7f..6e80d3314 100644 --- a/projects/gltf_basic_materials/README.md +++ b/projects/gltf_basic_materials/README.md @@ -19,3 +19,24 @@ This loads and renders `//assets/basic/models/altimeter/altimeter.gltf`. Notice * `//assets/` * `//third_party/assets/` * Any path provided via `--extra-assets-path` + +## glTF-Sample-Assets + +Since BigWheels does not provide many glTF scenes, it is recommended to test changes against [KhronosGroup/gltf-Sample-Assets](https://github.com/KhronosGroup/glTF-Sample-Assets). + +First, clone the repository. This does not have to be in the BigWheels checkout: + +```sh +git clone https://github.com/KhronosGroup/glTF-Sample-Assets +``` + +Second, run `gltf_basic_materials` with the desired scene. + +```sh +vk_gltf_basic_materials --gltf-scene-asset Box/glTF/Box.gltf --extra-assets-path some/path/to/glTF-Sample-Assets/Models +``` + +Notice that we provide: + +* `--extra-assets-path` which points to the `Models` directory in the location of the glTF-Sample-Assets clone +* `--gltf-scene-asset` to load the Box model. From bea98acb82c8303f1f72e1e6bc5d99c896969a98 Mon Sep 17 00:00:00 2001 From: Michael Hitchens Date: Wed, 20 May 2026 11:45:07 -0400 Subject: [PATCH 3/4] Add REAMDE to scene graph impl --- src/ppx/scene/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/ppx/scene/README.md diff --git a/src/ppx/scene/README.md b/src/ppx/scene/README.md new file mode 100644 index 000000000..82b2060ce --- /dev/null +++ b/src/ppx/scene/README.md @@ -0,0 +1,7 @@ +# Scene Graph + +This directory contains implementations for scene graph loading and rendering. + +Of note is the `GltfLoader` class in `scene_gltf_loader.cpp`. This class can parse a `.gltf` file and return a renderable `Scene`. + +To test changes to this implementation, run the `gltf_basic_materials` sample in `//projects/gltf_basic_materials`. From 157cf32037aed9e942f0a79414f37903d6b47d3f Mon Sep 17 00:00:00 2001 From: Michael Hitchens Date: Thu, 21 May 2026 13:43:49 -0400 Subject: [PATCH 4/4] Apply suggestion from @footballhead --- projects/gltf_basic_materials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/gltf_basic_materials/README.md b/projects/gltf_basic_materials/README.md index 6e80d3314..49725e5e3 100644 --- a/projects/gltf_basic_materials/README.md +++ b/projects/gltf_basic_materials/README.md @@ -1,6 +1,6 @@ # gltf_basic_materials -This sample loads a scene with `ppx::scene::GltfLoader` and rendering it. +This sample loads a scene with `ppx::scene::GltfLoader` and renders it. After building, run `gltf_basic_materials` for the desired API in your build directory. E.g. for Vulkan: