https://github.com/liam-malone/gfx-project
Learning Graphics Programming With Vulkan and From-Scratch Wayland Gfx
https://github.com/liam-malone/gfx-project
graphics graphics-programming handmade vulkan wayland wayland-client zig
Last synced: about 1 year ago
JSON representation
Learning Graphics Programming With Vulkan and From-Scratch Wayland Gfx
- Host: GitHub
- URL: https://github.com/liam-malone/gfx-project
- Owner: Liam-Malone
- Created: 2024-10-19T16:03:50.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-29T02:11:09.000Z (over 1 year ago)
- Last Synced: 2025-02-08T04:28:41.918Z (over 1 year ago)
- Topics: graphics, graphics-programming, handmade, vulkan, wayland, wayland-client, zig
- Language: Zig
- Homepage:
- Size: 4.86 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Graphics Project
This is a hobby project in which I am exploring everything related to creating, interactive, graphical (3D) programs to run on modern linux desktop systems.
This involves:
- Connecting to the host Wayland compositor
- Request creation of a window
- Processing & responding to system events
- Processing & responding to user inputs
- Rendering & presenting frames to the screen
To accomplish all this (without relying on external libraries), I needed to:
- Write my own tool to generate code based from a given list of wayland protocol specifications ([found here](./src/wl-bindgen.zig)).
- Write my own framework for communicating with the wayland compositor through the wayland wire protocol ([found here](./src/wl-msg.zig)).
- Write a tool for parsing xkb_v1 keyboard keymap formats ([found here](./src/xkb.zig)).
- Use Vulkan to create and write to the on-GPU buffers to render to the screen.
## Goals
- [x] Basic Window
- [x] Vulkan-Based Rendering
- [x] Input Event Handling
- [ ] Hello Triangle
- [ ] Texture/Image Rendering
- [ ] Text/Font Rendering
- [ ] Rendering 3D Objects & Scenes
- [ ] Lighting Simulation
#### Next Steps
- [-] System event queue
- [-] Hello Triangle
- [ ] (?) Switch from VkImage -> Vulkan Surface
- [ ] Vulkan Synchronization
- [ ] Vulkan Swapchain Creation Pipeline
- [ ] Image loading/rendering
### Potential Future Goals
- [ ] Cross Platform Support (Mac/Windows)
- [ ] Game (/Engine) Based on This Project
### Milestones Hit:
- 01:00am - 04/12/2024: First Vulkan Rendered Window

- 01:00am - 08/12/2024: Fixed Coloring For a Proper Background Clearing
