{"id":15288600,"url":"https://github.com/crossgl/crossvl","last_synced_at":"2025-04-13T06:32:00.795Z","repository":{"id":252795333,"uuid":"831018455","full_name":"CrossGL/crossvl","owner":"CrossGL","description":"Tool for loading and testing native shaders translated from crosstl","archived":false,"fork":false,"pushed_at":"2024-12-15T20:40:32.000Z","size":3846,"stargazers_count":15,"open_issues_count":0,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-26T23:05:02.131Z","etag":null,"topics":["apple","directx","game-development","gamedev","linux","macos","metal","opengl","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrossGL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-07-19T13:23:45.000Z","updated_at":"2024-12-15T20:40:36.000Z","dependencies_parsed_at":"2024-09-30T15:50:18.401Z","dependency_job_id":"0059e788-1ad6-4e20-8d73-232e5e65b964","html_url":"https://github.com/CrossGL/crossvl","commit_stats":null,"previous_names":["crossgl/visualizer","crossgl/crossvl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossGL%2Fcrossvl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossGL%2Fcrossvl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossGL%2Fcrossvl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrossGL%2Fcrossvl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrossGL","download_url":"https://codeload.github.com/CrossGL/crossvl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248674658,"owners_count":21143760,"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":["apple","directx","game-development","gamedev","linux","macos","metal","opengl","windows"],"created_at":"2024-09-30T15:50:20.815Z","updated_at":"2025-04-13T06:32:00.728Z","avatar_url":"https://github.com/CrossGL.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv style=\"display: block;\" align=\"center\"\u003e\n    \u003cimg class=\"only-dark\" width=\"10%\" height=\"10%\" src=\"https://github.com/CrossGL/crossgl-docs/blob/main/docs/assets/logo.png#gh-dark-mode-only\"/\u003e\n\u003c/div\u003e\n\n\n------------------------------------------------------------------------\n\n\u003cdiv style=\"display: block;\" align=\"center\"\u003e\n    \u003cimg class=\"dark-light\" width=\"5%\" \u003e\n    \u003ca href=\"https://crossgl.net/\"\u003e\n        \u003cimg class=\"dark-light\" height=\"5%\" width=\"5%\" src=\"https://github.com/CrossGL/crossgl-docs/blob/main/docs/assets/web_icon.png\"\u003e\n    \u003c/a\u003e\n    \u003cimg class=\"dark-light\" width=\"5%\" \u003e\n    \u003ca href=\"https://crossgl.github.io/crossgl-docs/language.html\"\u003e\n        \u003cimg class=\"dark-light\" height=\"5%\" width=\"5%\" src=\"https://github.com/CrossGL/crossgl-docs/blob/main/docs/assets/docs.png\"\u003e\n    \u003c/a\u003e\n    \u003cimg class=\"dark-light\" width=\"5%\" \u003e\n    \u003ca href=\"https://github.com/CrossGL/demos\"\u003e\n        \u003cimg class=\"dark-light\" height=\"5%\" width=\"5%\" src=\"https://github.com/CrossGL/crossgl-docs/blob/main/docs/assets/written.png\"\u003e\n    \u003c/a\u003e\n    \u003cimg class=\"dark-light\" width=\"5%\" \u003e\n    \u003ca href=\"https://crossgl.github.io/crossgl-docs/design.html\"\u003e\n        \u003cimg class=\"dark-light\" height=\"5%\" width=\"5%\" src=\"https://github.com/CrossGL/crossgl-docs/blob/main/docs/assets/strategic-plan.png\"\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdiv style=\"margin-top: 10px; margin-bottom: 10px; display: block;\" align=\"center\"\u003e\n    \u003ca href=\"https://github.com/CrossGL/crossvl/issues\"\u003e\n        \u003cimg class=\"dark-light\" style=\"padding-right: 4px; padding-bottom: 4px;\" src=\"https://img.shields.io/github/issues/CrossGL/crossvl\" alt=\"GitHub issues\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/CrossGL/crossvl/network/members\"\u003e\n        \u003cimg class=\"dark-light\" style=\"padding-right: 4px; padding-bottom: 4px;\" src=\"https://img.shields.io/github/forks/CrossGL/crossvl\" alt=\"GitHub forks\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/CrossGL/crossvl/stargazers\"\u003e\n        \u003cimg class=\"dark-light\" style=\"padding-right: 4px; padding-bottom: 4px;\" src=\"https://img.shields.io/github/stars/CrossGL/crossvl\" alt=\"GitHub stars\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/CrossGL/crossvl/pulls\"\u003e\n        \u003cimg class=\"dark-light\" style=\"padding-right: 4px; padding-bottom: 4px;\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" alt=\"PRs Welcome\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://discord.com/invite/uyRQKXhcyW\"\u003e\n        \u003cimg class=\"dark-light\" style=\"padding-right: 4px; padding-bottom: 4px;\" src=\"https://img.shields.io/discord/1240998239206113330?color=blue\u0026label=%20\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\u003cbr clear=\"all\" /\u003e\n\n# 🛠 CrossVL\n\nCrossVL is an in-house tool for loading and testing transpiled shader files. The transpiled shader files are generated using [CrossTL](https://github.com/CrossGL/crosstl).\n- Metal Shaders\n- GLSL Shaders\n- HLSL Shaders\n\n\n| Platform |     DX11      |      DX12       |   OpenGL    |     Metal     |     Vulkan      |\n|----------|---------------|-----------------|-------------|---------------|-----------------|\n| **Windows**  | In Progress   | Not Implemented | In Progress | Not Supported | Not Implemented |\n| **Linux**    | Not Supported | Not Supported   | In Progress | Not Supported | Not Implemented |\n| **MacOSX**   | Not Supported | Not Supported   | Not Supported | In Progress   | Not Implemented |\n\n# 📊 Build Status\n[![Windows](https://github.com/CrossGL/crossvl/actions/workflows/windows.yml/badge.svg?branch=main)](https://github.com/CrossGL/crossvl/actions/workflows/windows.yml)\n\n[![MacOSX](https://github.com/CrossGL/crossvl/actions/workflows/macosx.yml/badge.svg)](https://github.com/CrossGL/crossvl/actions/workflows/macosx.yml)\n\n[![Linux](https://github.com/CrossGL/crossvl/actions/workflows/linux.yml/badge.svg)](https://github.com/CrossGL/crossvl/actions/workflows/linux.yml)\n\n# 📚 Project Structure\n\nThe project is divided into two sub projects\n\n- **VisualizerCore**: Static library that contains the core functionality\n- **VisualizerApp**: Contains the platform independent GUI application that depends on the Core\n\n# 📜 Getting started\n\nTo build the project ensure you have the following toolsets and external libraries installed.\n- [Xmake](https://xmake.io/)\n- C++23 compiler\n\n### External Dependencies\n\n- [SDL2](https://libsdl.org/)\n- NCurses (linux/mac only)\n\n## Clone the repository\n\n```\ngit clone https://github.com/CrossGL/crossvl.git\n```\n\n## Load Build Macros\n\nThe repo comes with a couple helper xmake macros. Load these macros by running the [LoadMacros.bat](./LoadMacros.bat) or [LoadMacros.sh](./LoadMacros.sh) file depending on the OS. **You only need to run this bat script only once, or if you delete the generated *`.xmake`* folder**.\n\nAfter running the script the following macros will be imported (case insensitive):\n\n- **BuildAllConfigs**: Builds the visualizer for both debug and release configurations\n- **Clean**: Cleans the xmake configs and targets\n- **DeepClean**: Similar to the *Clean* macro but also deletes the build folder\n- **WatchDir**: Compiles the project on every Edit and Save.\n- **GenVS**: Generates Visual Studio 2022 solution files\n- **GenXCode**: Generates XCode project files\n\nYou can run these above macros using the following command\n\n```bash\nxmake macro \u003cmacro name\u003e\n```\n\n## Choosing The Build Configuration\n\nBefore compiling the project you can also set the build config\n\nTo make use of the debug config\n\n```bash\nxmake f -m debug\n```\n\nTo make use of the release config\n\n```bash\nxmake f -m release\n```\n\n## Compiling The Project\n\n### Using The Macros\n\nBuild all the configs\n\n```bash\nxmake macro BuildAllConfigs\n```\n\n### Compiling Using Visual Studio\n\nGenerate VS 2022 files\n\n```bash\nxmake macro GenVS\n```\n\nThis will generate the solution files in the vsxmake2022 folder\n\n### Compiling Using CMake\n\nGenerate CMakeLists.txt\n\n```bash\nxmake project -k cmakelists\n```\n\nThis will generate the CMakeLists.txt in the root folder\n\n# 🌈 Example Usage\n\nTo test your own `.obj` models, place the model file in the `Samples/ModelLoading/Assets/` directory. Then, update the filename in `ModelLoading.cpp` to match your `.obj` file.\n\nHere `barrel.obj` model is used to show as an example, the output would look like :\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Output/Output.gif\" alt=\"animated\" /\u003e\n\u003c/p\u003e\n\n*Get the `barrel.obj` model from Output folder to test it out yourself.\n\n# 🙌 Contributing\n\nWhen contributing to the project. Ensure the project passes the compilation test locally on your PC.\n\n```bash\nxmake rhitest -p \u003cplatform\u003e\n```\nWhere the valid platforms are:\n- windows\n- linux\n- macosx\n\nThis will run a series of matrix test for each valid API for that platform (e.g. for macosx it will test compilation for metal and vulkan). Make sure to test in both debug and release build configs.\n\nThe complete testing process should look as follows (using windows as example):\n```bash\nxmake f -m debug\nxmake rhitest -p windows\n\nxmake f -m release\nxmake rhitest -p windows\n```\n\nThe expected output should be such that all projects compile and link successfully\n\n# 🤝 Community\n\n\u003cb\u003e Stay connected and follow our latest updates and announcements. \u003c/b\u003e\n\n- [Twitter](https://x.com/crossGL_)\n- [LinkedIn](https://www.linkedin.com/company/crossgl/?viewAsMember=true)\n- [Discord Channel](https://discord.com/invite/uyRQKXhcyW)\n- [YouTube](https://www.youtube.com/channel/UCxv7_flRCHp7p0fjMxVSuVQ)\n\n\u003cb\u003eIf you like our work, please help us by starring the repo 🌟\u003c/b\u003e\n\u003cbr\u003e\n\u003cb\u003eFeel free to leave us feedback on Discord if you have any suggestions.\u003c/b\u003e\n\u003cbr\u003e\n\u003cb\u003eSee you there!\u003c/b\u003e\n\u003cbr\u003e\n\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossgl%2Fcrossvl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrossgl%2Fcrossvl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossgl%2Fcrossvl/lists"}