{"id":22998044,"url":"https://github.com/liam-malone/gfx-project","last_synced_at":"2025-04-02T13:23:32.815Z","repository":{"id":267160611,"uuid":"875299716","full_name":"Liam-Malone/gfx-project","owner":"Liam-Malone","description":"Learning Graphics Programming With Vulkan and From-Scratch Wayland Gfx","archived":false,"fork":false,"pushed_at":"2025-01-29T02:11:09.000Z","size":5094,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T04:28:41.918Z","etag":null,"topics":["graphics","graphics-programming","handmade","vulkan","wayland","wayland-client","zig"],"latest_commit_sha":null,"homepage":"","language":"Zig","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/Liam-Malone.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-10-19T16:03:50.000Z","updated_at":"2025-01-29T02:11:13.000Z","dependencies_parsed_at":"2025-01-17T01:36:33.856Z","dependency_job_id":null,"html_url":"https://github.com/Liam-Malone/gfx-project","commit_stats":null,"previous_names":["liam-malone/gfx-project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Liam-Malone%2Fgfx-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Liam-Malone%2Fgfx-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Liam-Malone%2Fgfx-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Liam-Malone%2Fgfx-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Liam-Malone","download_url":"https://codeload.github.com/Liam-Malone/gfx-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246820486,"owners_count":20839248,"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":["graphics","graphics-programming","handmade","vulkan","wayland","wayland-client","zig"],"created_at":"2024-12-15T06:10:36.295Z","updated_at":"2025-04-02T13:23:32.791Z","avatar_url":"https://github.com/Liam-Malone.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Graphics Project\n\nThis is a hobby project in which I am exploring everything related to creating, interactive, graphical (3D) programs to run on modern linux desktop systems.\n\nThis involves:\n\n- Connecting to the host Wayland compositor\n- Request creation of a window\n- Processing \u0026 responding to system events\n- Processing \u0026 responding to user inputs\n- Rendering \u0026 presenting frames to the screen\n\n\nTo accomplish all this (without relying on external libraries), I needed to:\n\n- Write my own tool to generate code based from a given list of wayland protocol specifications ([found here](./src/wl-bindgen.zig)).\n- Write my own framework for communicating with the wayland compositor through the wayland wire protocol ([found here](./src/wl-msg.zig)).\n- Write a tool for parsing xkb_v1 keyboard keymap formats ([found here](./src/xkb.zig)).\n- Use Vulkan to create and write to the on-GPU buffers to render to the screen.\n\n\n## Goals\n\n- [x] Basic Window\n- [x] Vulkan-Based Rendering\n- [x] Input Event Handling\n- [ ] Hello Triangle\n- [ ] Texture/Image Rendering\n- [ ] Text/Font Rendering\n- [ ] Rendering 3D Objects \u0026 Scenes\n- [ ] Lighting Simulation\n\n\n#### Next Steps\n\n- [-] System event queue\n- [-] Hello Triangle\n- [ ] (?) Switch from VkImage -\u003e Vulkan Surface\n- [ ] Vulkan Synchronization\n- [ ] Vulkan Swapchain Creation Pipeline\n- [ ] Image loading/rendering\n\n\n### Potential Future Goals\n\n- [ ] Cross Platform Support (Mac/Windows)\n- [ ] Game (/Engine) Based on This Project\n\n\n### Milestones Hit:\n\n- 01:00am - 04/12/2024: First Vulkan Rendered Window\n![First screenshot of the GPU-rendered blank window](./assets/screenshots/first_vk-window.jpeg)\n\n- 01:00am - 08/12/2024: Fixed Coloring For a Proper Background Clearing\n![GIF of screen-clearing working as intended](./assets/videos/clear-demo.gif)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliam-malone%2Fgfx-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliam-malone%2Fgfx-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliam-malone%2Fgfx-project/lists"}