{"id":29021457,"url":"https://github.com/autodesk/hydra-viewport-toolbox","last_synced_at":"2026-01-21T23:03:00.403Z","repository":{"id":299497390,"uuid":"959345683","full_name":"Autodesk/hydra-viewport-toolbox","owner":"Autodesk","description":"Utilities to support graphics viewports using OpenUSD Hydra","archived":false,"fork":false,"pushed_at":"2025-06-23T23:46:37.000Z","size":1895,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-24T00:29:36.206Z","etag":null,"topics":["hydra","openusd","viewport"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Autodesk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-02T16:34:51.000Z","updated_at":"2025-06-24T00:04:15.000Z","dependencies_parsed_at":"2025-06-16T21:42:34.423Z","dependency_job_id":"fca13448-5511-4acf-9748-c756bbe497a8","html_url":"https://github.com/Autodesk/hydra-viewport-toolbox","commit_stats":null,"previous_names":["autodesk/hydra-viewport-toolbox"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Autodesk/hydra-viewport-toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fhydra-viewport-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fhydra-viewport-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fhydra-viewport-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fhydra-viewport-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Autodesk","download_url":"https://codeload.github.com/Autodesk/hydra-viewport-toolbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fhydra-viewport-toolbox/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261984648,"owners_count":23240303,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hydra","openusd","viewport"],"created_at":"2025-06-26T02:06:04.837Z","updated_at":"2026-01-21T23:03:00.398Z","avatar_url":"https://github.com/Autodesk.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI Full: (Mac-Linux-Windows Deb-Rel)](https://github.com/Autodesk/hydra-viewport-toolbox/actions/workflows/ci-full.yaml/badge.svg?branch=main)](https://github.com/Autodesk/hydra-viewport-toolbox/actions/workflows/ci-full.yaml?query=branch%3Amain+workflow%3A%22CI%20Full%22)\n[![CI Tests: (Linux Deb)](https://github.com/Autodesk/hydra-viewport-toolbox/actions/workflows/ci-test.yaml/badge.svg?branch=main)](https://github.com/Autodesk/hydra-viewport-toolbox/actions/workflows/ci-test.yaml?query=branch%3Amain+workflow%3A%22CI%20GPU%20Tests%22)\n[![Coverage](https://Autodesk.github.io/hydra-viewport-toolbox/coverage/coverage.svg)](https://Autodesk.github.io/hydra-viewport-toolbox/coverage/)\n\n# Hydra Viewport Toolbox\nThe **Hydra Viewport Toolbox** (HVT) is a library of utilities that can be used by an application to simplify the use of [OpenUSD](https://openusd.org) Hydra for the application's graphics viewports. The utilities can be used together or independently to add common viewport functionality and improve the performance and visual quality of viewports.\n\nHVT currently includes the following features but it is being expanded to include even more.\n\n- Layering of Hydra render delegate output, optionally from different render delegates (\"passes\").\n- Management of multiple viewports.\n- Hydra task management, supporting application-defined lists of tasks.\n- Management of data commonly needed for tasks, e.g. render buffers and lighting.\n- Tasks for features commonly needed for viewports, e.g. antialiasing and ambient occlusion.\n- User interaction for common operations, e.g. selection and camera manipulation.\n\nHVT is developed and maintained by Autodesk. The contents of this repository are fully open source under [the Apache license](LICENSE.md), with [feature requests and code contributions](CONTRIBUTING.md) welcome!\n\n## Quick Start\n\nTo build the project locally using the default configuration:\n\n```bash\ncmake --preset debug\ncmake --build --preset debug\n```\n\n### Windows:\n**Prerequisites:** You need Visual Studio's x64 development environment loaded. Use one of these methods:\n\n**Option 1 (Recommended):** Open **\"x64 Native Tools Command Prompt for VS 2022\"** from the Start Menu, then:\n```cmd\ncmake --preset debug\ncmake --build --preset debug\n```\n\n**Option 2:** Configure your current PowerShell session:\n\u003e ** Note:** Replace [Edition] with your installed Visual Studio edition (e.g., Community, Professional, or Enterprise). If you have a different version (e.g., 2019), adjust the 2022 part of the path as well.\n```powershell\n\u0026 \"C:\\Program Files\\Microsoft Visual Studio\\2022\\[Edition]\\Common7\\Tools\\Launch-VsDevShell.ps1\" -Arch amd64\ncmake --preset debug\ncmake --build --preset debug\n```\n\n\u003e ** Why?** Windows requires the Visual Studio x64 toolchain environment for proper compiler and SDK paths.\n\nThis uses the built-in vcpkg manifest and cmake presets to automatically configure dependencies and build paths. No additional setup is needed beyond the platform prerequisites above.\n\nFor more information or to customize the configuration, see [Using CMake Presets](#using-cmake-presets) and [vcpkg Integration](#vcpkg-integration).\n\n## Continuous Integration (CI)\n\nCI builds and tests are run via GitHub Actions using shared CMake presets.\n\n### CI GPU Tests\n\nA specialized workflow (`ci-test.yaml`) executes hardware-accelerated tests on a dedicated Linux VM equipped with an NVIDIA GPU. This workflow automatically allocates the cloud VM at the start of the job and deallocates it upon completion.\n\nIt runs exclusively on:\n- Every Pull Request (after approval for external contributors).\n- Every push to the `main` branch.\n\nIt will not be able to spawn GPU VM for other scenarios.\n\nThese tests ensure that HVT features work correctly on actual GPU hardware and modern NVIDIA drivers.\n\n### CI Full\n\nA full matrix workflow (`ci-full.yaml`) tests on Linux, macOS, and Windows with both Debug and Release configurations. This does not run by default on every PR.\nTo run it manually, use the “Run workflow” button under the “Actions” tab on GitHub after pushing your branch.\nIt also runs when a PR merges into `main`.\n\n### CI Minimal\n\nA lightweight CI workflow (`ci-minimal.yaml`) used for quick verification. \nThis workflow does not run automatically. It can be run manually with custom options to test a specific platform (`windows`, `linux`, or `macos`) and configuration (`debug` or `release`) by selecting from the “Run workflow” button in GitHub Actions.\n\n## vcpkg Integration\n\nThis project uses vcpkg in manifest mode to manage third-party dependencies cleanly and automatically.\n\n### Zero-Setup Build\n\nAll required vcpkg steps (initialization, bootstrapping, and toolchain setup) are fully automated. You do not need to install vcpkg manually or set any variables—just configure and build using one of the provided CMake presets (see below).\nIf the externals/vcpkg/ submodule is missing or uninitialized, the build system will fetch and bootstrap it for you.\n\n### How it Works\n\nThe logic is handled in [`cmake/VcpkgSetup.cmake`](./cmake/VcpkgSetup.cmake).\n\nUnit tests enabled or no USD installation path provided, enables vcpkg: \n-\tthe vcpkg submodule will be fetched, vcpkg will be bootstrapped, toolchain will be set.\n\nThis ensures seamless support for both standalone builds and builds as part of larger projects.\n\nLook [here](./docs/vcpkg.md) for some vcpkg details.\n\n### USD Integration\n\nIf `OPENUSD_INSTALL_PATH` is not set, the vcpkg `usd-minimal` feature is enabled by default.\n\nYou can override this to use a local OpenUSD install by setting `OPENUSD_INSTALL_PATH` from env or cmake.\n\n## Using CMake Presets\n\nThis project uses CMake Presets to define consistent and shareable build configurations across local development and CI.\n\n### Building with CMake Presets\n\nThis project provides CMakePresets.json-based builds for easy setup. Presets ensure consistent options and automatic toolchain configuration.\n\nTo configure and build:\n```bash\ncmake --preset debug       # Configure Debug build with vcpkg\ncmake --build --preset debug\n```\n\nOr to use a specific OpenUSD install:\n```bash\n# Requires setting OPENUSD_INSTALL_PATH env to be set before calling cmake\nexport OPENUSD_INSTALL_PATH=/path/to/local/usd\ncmake --preset debug\ncmake --build --preset debug\n```\n\n### Running Tests with CMake Presets\nUse the test preset to run the test suite:\n```bash\nctest --preset debug\n```\n\n### Running all with CMake Presets\nUse the preset to run all with one command:\n```bash\ncmake --workflow --preset debug\n```\n### Custom Builds with CMake User Presets\n\nIf the default presets do not fit your needs you can create your own build configurations by adding a `CMakeUserPresets.json` file in the project root. This file is excluded by `.gitignore`, so it won’t interfere with version control or shared presets.\n\nRefer to the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html) for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautodesk%2Fhydra-viewport-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautodesk%2Fhydra-viewport-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautodesk%2Fhydra-viewport-toolbox/lists"}