{"id":13838679,"url":"https://github.com/pablode/gatling","last_synced_at":"2025-07-10T23:32:01.871Z","repository":{"id":37243232,"uuid":"220948809","full_name":"pablode/gatling","owner":"pablode","description":"Hydra-enabled GPU path tracer that supports MaterialX and MDL","archived":false,"fork":false,"pushed_at":"2024-11-15T11:45:50.000Z","size":2298,"stargazers_count":295,"open_issues_count":0,"forks_count":19,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-15T12:31:45.601Z","etag":null,"topics":["gpu","hydra","materialx","mdl","path-tracing","ray-tracing","rtx","usd","vulkan"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pablode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2019-11-11T09:47:01.000Z","updated_at":"2024-10-31T10:02:01.000Z","dependencies_parsed_at":"2024-03-10T09:31:51.779Z","dependency_job_id":"49e8a2f8-db87-448f-90b2-8732b9d035da","html_url":"https://github.com/pablode/gatling","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablode%2Fgatling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablode%2Fgatling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablode%2Fgatling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablode%2Fgatling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pablode","download_url":"https://codeload.github.com/pablode/gatling/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225663611,"owners_count":17504436,"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":["gpu","hydra","materialx","mdl","path-tracing","ray-tracing","rtx","usd","vulkan"],"created_at":"2024-08-04T16:00:28.789Z","updated_at":"2025-07-10T23:32:01.865Z","avatar_url":"https://github.com/pablode.png","language":"C++","funding_links":[],"categories":["Libraries \u0026 Tools"],"sub_categories":["Hydra"],"readme":"\n## gatling\n\n![Evermotion Kitchen](https://github.com/pablode/gatling/assets/3663466/3f4fa9d9-2c40-43a3-96cb-9c490c7a0e8d)\n\n\u003cp align=\"middle\"\u003e\n  Evermotion \u003ca href=\"https://evermotion.org/shop/show_product/scene-06-ai48-for-blender/14835\"\u003eScene 06 AI48\u003c/a\u003e, rendered in Gatling using Blender's Hydra/MaterialX support.\n\u003c/p\u003e\n\n![Porsche 911 GT3](https://github.com/pablode/gatling/assets/3663466/b6595991-de77-407e-a2e1-af427386382c)\n\n\u003cp align=\"middle\"\u003e\n  \u003ca href=\"https://www.artstation.com/marketplace/p/JpgoB/porsche-911-gt3-2022-manthey-racing\"\u003ePorsche 911 GT3\u003c/a\u003e, modified with materials from the \u003ca href=\"https://matlib.gpuopen.com/main/materials/all\"\u003eGPUOpen MaterialX library\u003c/a\u003e.\n\u003c/p\u003e\n\n### About\n\nThis is my toy path tracer I work on in my free time.\n\nIt is exposed as a Hydra render delegate and comes with a standalone that accepts [Universal Scene Description](https://graphics.pixar.com/usd/release/intro.html) (USD) files. It is cross-platform\\*, GPU-accelerated, and implements the [MaterialX](https://www.materialx.org/index.html), [NVIDIA MDL](https://www.nvidia.com/en-us/design-visualization/technologies/material-definition-language/) and [UsdPreviewSurface](https://graphics.pixar.com/usd/release/spec_usdpreviewsurface.html) material standards.\n\nComplex BSDFs like [OpenPBR](https://academysoftwarefoundation.github.io/OpenPBR/), Autodesk's Standard Surface, and the glTF shading model are supported using MaterialX and its MDL code generation backend.  The MDL SDK is used to generate evaluation and importance sampling functions as GLSL code, which is compiled to SPIR-V and executed with Vulkan.\n\n\\* Hardware ray tracing is required. MacOS will be supported [in the future](https://github.com/KhronosGroup/MoltenVK/issues/427).\n\n### Build\n\nThere are [prebuilt binaries](https://github.com/pablode/gatling/releases) which can be copied to the `\u003cUSD_INSTALL\u003e/plugin/usd` directory.\n\nAlternatively, for a full source build you need to\n\n- download the \u003ca href=\"https://developer.nvidia.com/nvidia-mdl-sdk-get-started\"\u003eMDL SDK\u003c/a\u003e 2024.0.4 binaries\n- download or build \u003ca href=\"https://github.com/PixarAnimationStudios/USD/tree/v24.11\"\u003eUSD 24.03+\u003c/a\u003e with MaterialX support\n\n\u003e Note: it is recommended to have NASM 2.13+ or YASM 1.2.0+ in your PATH to speed up image decoding.\n\nDo a recursive clone of the repository and set up a build folder:\n```\ngit clone https://github.com/pablode/gatling --recursive\nmkdir gatling/build \u0026\u0026 cd gatling/build\n```\n\nPass following parameters in the CMake generation phase:\n```\ncmake .. -Wno-dev \\\n         -DUSD_ROOT=\u003cUSD_INSTALL_DIR\u003e \\\n         -DMDL_ROOT=\u003cMDL_INSTALL_DIR\u003e \\\n         -DCMAKE_INSTALL_PREFIX=\u003cUSD_INSTALL_DIR\u003e/plugin/usd\n         -DCMAKE_BUILD_TYPE=Release\n```\n\nBuild the relevant targets and install the Hydra delegate to the USD plugin folder:\n```\ncmake --build . --target hdGatling --config Release\ncmake --install . --component hdGatling\n```\n\n### Usage\n\nGatling can be used by every application which supports Hydra, either natively or through a plugin.\n\n\u003cp align=\"middle\"\u003e\n  \u003cimg width=740 src=\"https://github.com/pablode/gatling/assets/3663466/22326db0-3c4d-4913-a68c-371c8b83463a\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"middle\"\u003e\n  Alex Treviño's \u003ca href=\"https://cloud.blender.org/p/gallery/5dd6d7044441651fa3decb56\"\u003eJunk Shop\u003c/a\u003e (\u003ca href=\"https://creativecommons.org/licenses/by/4.0/\"\u003eCC BY\u003c/a\u003e), distilled to UsdPreviewSurfaces, rendered within \u003ca href=\"https://openusd.org/release/toolset.html#usdview\"\u003eusdview\u003c/a\u003e.\n\u003c/p\u003e\n\nA headless standalone is provided that accepts a USD file (.usd, .usda, .usdc, .usdz) as input. It exposes the Hydra render settings as command line arguments:\n\n```\n./bin/gatling \u003cscene.usd\u003e render.png \\\n    --image-width 1200 \\\n    --image-height 1200 \\\n    --spp 1024 \\\n    --max-bounces 8\n```\n\n\u003e Note: high sample counts may require adjusting the system watchdog settings.\n\n### Issues\n\n* Features: certain USD prim types (curves, cylinder lights), APIs (UsdLuxShapingAPI, UsdLuxShadowAPI) and features (subdivision, UDIM, volumes, displacement) are not yet supported.\n\n* Real-time editing: changing material parameters and adjusting render settings currently result in long loading times.\n\n### License\n\nGatling is licensed under the GNU General Public License, as included in the [LICENSE](LICENSE) file.\n\n```\n\n    Copyright (C) 2019 Pablo Delgado Krämer\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n```\n\nLicenses of third-party code and libraries are listed in the same file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablode%2Fgatling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpablode%2Fgatling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablode%2Fgatling/lists"}