{"id":20743114,"url":"https://github.com/btipling/rosy","last_synced_at":"2025-04-14T12:02:40.735Z","repository":{"id":262766979,"uuid":"886983746","full_name":"btipling/Rosy","owner":"btipling","description":"A renderer","archived":false,"fork":false,"pushed_at":"2025-03-11T04:41:35.000Z","size":5701,"stargazers_count":6,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-11T05:27:21.066Z","etag":null,"topics":["3d","cplusplus","game-development","graphics","vulkan"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btipling.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":"2024-11-12T00:54:31.000Z","updated_at":"2025-03-10T03:07:33.000Z","dependencies_parsed_at":"2024-11-28T13:27:52.885Z","dependency_job_id":"652a89e7-e4d0-4ffb-b96e-75642e7165e1","html_url":"https://github.com/btipling/Rosy","commit_stats":null,"previous_names":["btipling/rosy"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2FRosy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2FRosy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2FRosy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btipling%2FRosy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btipling","download_url":"https://codeload.github.com/btipling/Rosy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243034826,"owners_count":20225412,"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":["3d","cplusplus","game-development","graphics","vulkan"],"created_at":"2024-11-17T07:09:11.571Z","updated_at":"2025-03-11T12:31:57.014Z","avatar_url":"https://github.com/btipling.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rosy\n\nThis is a hobby project to build a game engine and eventually a game in my spare time.\n\n![Rosy and friends](https://github.com/user-attachments/assets/0e09dc48-a8da-47cd-8413-076e53ad0923)\n\n![Sponza](https://github.com/user-attachments/assets/b324bc38-58ab-484e-bde1-7bbbd491a06f)\n\n![A beautiful game](https://github.com/user-attachments/assets/f2f699e2-9690-4b93-83fd-6401dab71bf1)\n\n\n## Modern Vulkan\n\nThis project uses modern Vulkan features including:\n\n* Buffer device address\n* Dynamic rendering\n* Bindless\n* Shader Objects\n* One global descriptor set for all images and samplers\n\n## Building\n\n### Git submodules\n\nGit submodules are used for some dependencies, they are not built automatically. They must be built with the same version of msbuild.\n\n```txt\ngit submodule init\ngit submodule update\n```\n\n### Premake\n\nThis project uses [Premake](https://premake.github.io/) to build. Premake is required to build the project.\n\n```txt\ncd ./src\npremake5 vs2022\n```\n\nOn Windows this will generate a .sln file that can be opened in Visual Studio 2022.\n\nThe premake5.lua script serves as the most up to date documentation for what is required to build this project. \n\n### Proprietary Dependencies\n\nThe project is open source, but it depends on non-free dependencies.\n\n#### Vulkan SDK\n\nThe most recent version of the Vulkan SDK should be on the system. The Vulkan SDK can be downloaded from the [LunarG's Vulkan SDK website](https://www.lunarg.com/vulkan-sdk/).\n\n#### FBX SDK\n\nThe most recent version of the FBX SDK should be on the system. The FBX SDK can be downloaded from the [Autodesk's FBX SDK website](https://aps.autodesk.com/developer/overview/fbx-sdk).\n\n#### NVTT\n\nUsing the Packager program to create assets requires the NVIDIA Texture Tool library which defaults to CPU on non-NVIDIA hardware. The game itself uses this library to read DDS files and builds and should eventually be able to run fine on NVIDIA hardware I hope.\nIn order to use the Packager tool the `NVTT_PATH` env variable must be set to where the header files are and the shipped DLL must be in the same directory as Packager.exe. The\npath is likely `C:\\Program Files\\NVIDIA Corporation\\NVIDIA Texture Tools` on Windows. NVTT can be downloaded at the [NVIDIA Texture Tools 3 website](https://developer.nvidia.com/gpu-accelerated-texture-compression).\n\nNVTT is used to compress and generate mipmaps for asset textures. It does so using a better API than libktx and uses available GPU hardware to compress images faster than libktx can. This makes a big difference when you are compressing many images as part of an asset pipeline. The compression speeds are multiple orders of magnitudes faster when using NVTT on an NVIDIA GPU. Every model ships with a slew of PBR textures, normal maps, albedo, metallic, etc and with libkts running on the CPU it can take tens of seconds to compress each large image. It adds up.\n\n#### FastGLTF\n\n```txt\ncd .\\libs\\fastgltf\\\ncmake . -B build\n```\n\nAdd fastgltf project to VS if it's not already there and build it\n\n#### SDL\n\n```txt\ncd .\\libs\\SDL\\\ncmake . -B build\ncmake --build build\n```\n\n#### flecs\n\n```txt\ncd .\\libs\\flecs\\\ncmake . -B out\ncmake --build out\n```\n\n## Running\n\nWindows requires the needed .dll files be in the same directory as the executable, this isn't done automatically.\n\nRosy has its own asset format. A glTF file can be converted to the .rsy format using Packager.exe, which is built when the solution is compiled.\n\nAssuming there's an sponza.gltf on the system in an assets directory the packager can be run as so and it will add a sponza.rsy and generate *.dds images in the same directory as the sponza.gltf.\n\n```txt\n .\\bin\\Debug\\Packager.exe .\\assets\\sponza\\sponza.gltf\n ```\n\nThere are currently some hard coded asset paths in the level JSON file and in Editor.cpp that I need to clean up. The project will halt immediately if those assets are not there. They must be removed and replaced with other rsy assets present on the system.\n\n### Hardware\n\nI have only tested this on Nvidia 3070 and 3060 gpus. I don't know if this application works on AMD or other GPUs at this time.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtipling%2Frosy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtipling%2Frosy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtipling%2Frosy/lists"}