{"id":23750580,"url":"https://github.com/loxodromics/lillugsi","last_synced_at":"2026-04-26T20:32:13.789Z","repository":{"id":270378308,"uuid":"866392294","full_name":"Loxodromics/LillUgsi","owner":"Loxodromics","description":"This personal project serves as both a learning tool for Vulkan and an exploration of software architecture in graphics programming.","archived":false,"fork":false,"pushed_at":"2025-02-11T14:48:07.000Z","size":667,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T21:16:01.768Z","etag":null,"topics":["cmake","conan","cpp","cross-platform","graphics-programming","sdl3","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/Loxodromics.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-10-02T07:13:45.000Z","updated_at":"2025-02-19T08:51:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"6afdb975-084c-444e-bae3-1df334449c8f","html_url":"https://github.com/Loxodromics/LillUgsi","commit_stats":null,"previous_names":["loxodromics/lillugsi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Loxodromics%2FLillUgsi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Loxodromics%2FLillUgsi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Loxodromics%2FLillUgsi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Loxodromics%2FLillUgsi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Loxodromics","download_url":"https://codeload.github.com/Loxodromics/LillUgsi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239914937,"owners_count":19717760,"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":["cmake","conan","cpp","cross-platform","graphics-programming","sdl3","vulkan"],"created_at":"2024-12-31T16:22:48.229Z","updated_at":"2026-03-12T18:30:23.939Z","avatar_url":"https://github.com/Loxodromics.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lill Ugsi: Vulkan Learning Render\nRather than following yet another Vulkan beginner's tutorial, I asked [Claude](https://claude.ai) to take me by the hand as we build a Vulkan renderer together. This project focuses on improving my graphics programming skills rather than creating a finished product. While primarily meant for my personal learning, the code is well-commented, so others might find it useful as well.\n\n![ScreenShot Version 0.2](screenshots/LillUgsi0.2.jpeg)\n\n## Notes\nThis is a **personal learning project** that I'm sharing for educational purposes. While I welcome others to learn from, use, and adapt this code (under the MIT License), **I am not actively seeking contributions**. The repository is provided as-is, primarily as a reference for others interested in learning Vulkan and graphics programming.\n\nFurther, as mentioned right at the beginning, this project contains lots of **AI generated code**. Do whatever you like with this information.\n\n## Motivation\n1. Learning: Gain hands-on experience with Vulkan and understand the principles of modern graphics programming.\n2. Best Practices: Implement software engineering best practices in a complex, performance-critical application. This includes modular design, RAII (Resource Acquisition Is Initialization), and effective error handling.\n3. Graphics Techniques: Progressively implement and understand various graphics techniques, from basic rendering to advanced effects like physically-based rendering and global illumination.\n4. Performance Optimization: Learn to optimize graphics applications, understanding the intricacies of GPU utilization and memory management.\n5. Cross-Platform Development: Create a renderer that works on multiple platforms (focusing on macOS and Linux).\n\n## Key Features\n- Vulkan-based rendering pipeline\n- Modular, extensible architecture\n- Progressive implementation of graphics techniques\n- Focus on learning and best practices rather than rapid development\n\n## Development Approach\nFollow the principle: **\"make it work, make it right, make it fast\"** [See](https://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast)\n\nThe project will start with basic Vulkan initialization and simple rendering, gradually adding complexity. Each stage will build upon the previous, ensuring a working renderer that continuously improves. The development process will emphasize understanding each component thoroughly before moving to more advanced topics. This project serves as both a learning tool for Vulkan and an exploration of software architecture in graphics programming. It aims to balance theoretical understanding with practical implementation, providing a solid foundation for further graphics programming endeavors.\n\n## Tools and Libraries\n- Vulkan SDK\n- SDL3 for window management and input\n- GLM for mathematics\n- spdlog for logging\n- CMake and Conan for build management and dependency handling\n\n## Getting Started\n\n### Prerequisites\n- CMake 3.24 or higher\n- Vulkan SDK 1.3.216 or higher, I guess  🤷‍♀️ \n- Modern C++ compiler with C++17 support\n- SDL3\n- Conan package manager\n\n### Building\n\n1. Clone the repository\n\n2. Create a build directory:\n```bash\nmkdir build\ncd build\n```\n\n3. Install dependencies using Conan:\n```bash\nconan install .. --output-folder=. --build=missing\n```\n\n4. Configure and build with CMake:\n```bash\ncmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake\ncmake --build .\n```\n\n### Running\nAfter successful compilation, you can run the application:\n```bash\n./LillUgsi\n```\n\nThe application will open a window displaying a demo scene with multiple cubes and dynamic lighting.\n\n### Controls\n- Right Mouse Button + Mouse Move: Rotate camera\n- WASD: Move camera forward/left/backward/right\n- QE: Move camera down/up\n\n### Common Issues\n- Make sure to set `Vulkan_DIR` in CMakeLists.txt to your Vulkan SDK path\n- If building fails, check that all dependencies are properly installed and your compiler supports C++17\n\n## Coding Style Guidelines\n- Use CamelCase for methods and variables, use PascalCase for classes (classes start with a capital letter, variables and methods don't)\n- Use all lowercase letters for filenames without underscores or hyphens\n- Follow more or less the Qt's coding style guidelines, but access all members (variables and methods) via this-\u003e instead of prefixing them with m_\n- Use \"pointer-to-type\" style\n- Place implementation (.cpp) and header (.h) files next to each other in the src directory\n- Use three slashes (///) for comments to differentiate from commented code\n- Use tabs for indentation (4 spaces)\n- Prioritize documenting the 'why' rather than the 'what' in comments. Comments explain the rationale behind each step. Comments are written saying 'we' instead of 'I' or passive voice\n- Use descriptive names for classes, variables, and functions\n- Use const for variables and methods where possible\n- Write modern C++ code with [[nodiscard]] and such modern C++ features\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floxodromics%2Flillugsi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floxodromics%2Flillugsi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floxodromics%2Flillugsi/lists"}