Goal
Itemize list of low-hanging fruits, tasks and operations to lower the cost of maintaining the USD WebAssembly prototype, and to eventually merge back components into the main USD branch.
Intent:
- Prevent WebAssembly prototype from lagging too far behind most recent USD version
- Automate builds, publishing to NPM, Wasmer or other repositories to facilitate integrations and adoption by other parties.
- Facilitate contributions and collaboration with other parties not necessarily intricately familiar with USD (web community, ThreeJS, etc.)
Itemized list
Items in this list are ordered by ascending order of priority for the WebAssembly project (i.e. from "mandatory" to "optional").
Prerequisite work
Target a recent, stable version of the USD main branch. At the time of writing, USD 23.08
is the branched version.
High-level prioritized item list
Item | Notes | Status | Volunteer |
---|---|---|---|
0. Legal requirements | |||
Clarify ASWF vs. USD contribution guidelines regarding attributions. | |||
1. Build system changes | |||
Add
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/Dockerfile | Done? | |
Update | Done? | ||
Adding an | https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/build_scripts/build_usd.py#L2198 | Done? | |
Using | https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/build_scripts/build_usd.py#L442 | Done? | |
Replacing TBB with WasmTBB | https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/build_scripts/build_usd.py#L956C1-L956C19 | Done? | |
Listing USD components incompatible with WebAssembly build to warn Users that | https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/build_scripts/build_usd.py#L2588 | Done? | |
Add
| |||
Include tests to validate WebAssembly build, using a NodeJS dependency in order to enable tests from headless environments. Test examples include (but are not limited to):
| https://github.com/autodesk-forks/USD/tree/adsk/feature/webgpu/js/__tests__ | Done? | |
2. Core USD changes | |||
| |||
pxr/base/arch/debugger.cpp
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/debugger.cpp#L597 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/debugger.cpp#L646 Note sure what to do with | Done? | |
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/fileSystem.cpp#L162 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/fileSystem.cpp#L199 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/fileSystem.cpp#L456 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/fileSystem.cpp#L469 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/fileSystem.cpp#L501 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/debugger.cpp#L660 | Done? | |
pxr/base/arch/library.cpp
| Necessary? | ||
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/timing.h#L76 https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/base/arch/timing.h#L133 | Done? | |
| |||
| |||
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/usd/sdf/wrapPathJs.h | Done? | |
| https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/usd/usd/wrapStageJs.cpp#L105 | Done? | |
3. ThreeJS Hydra renderer | |||
TBD: Separate project/branch? Engage with ThreeJS/web community for collaboration opportunity on this aspect? | https://github.com/autodesk-forks/USD/blob/adsk/feature/webgpu/pxr/usdImaging/hdEmscripten/js/ThreeJsRenderDelegate.js | Done? |