Hi gophers!
I'd like to introduce GoGPU — an ecosystem of Pure Go libraries for GPU programming. No CGO, no Rust, no C++ — just Go.
The project started from a Reddit discussion about GUI/graphics support in Go:
https://www.reddit.com/r/golang/comments/1pdw9i7/go_deserves_more_support_in_gui_development/And from the realization that fogleman/gg (the beloved 2D graphics library) has been unmaintained for years:
https://github.com/fogleman/gg/issues/208WHAT WE'VE BUILT
----------------
gogpu/wgpu — Pure Go WebGPU implementation
Complete WebGPU types, validation layer, and hardware abstraction. Three backends: Vulkan (cross-platform), OpenGL ES (Windows/Linux), and Software (full CPU rasterizer for headless/CI). ~55K lines of pure Go.
https://github.com/gogpu/wgpugogpu/naga — Pure Go shader compiler
WGSL to SPIR-V compiler. Supports vertex, fragment, and compute shaders with atomics and barriers. ~17K lines.
https://github.com/gogpu/nagagogpu/gg — Enterprise-grade 2D graphics
Spiritual successor to fogleman/gg with GPU acceleration. Canvas API, text rendering, images, clipping, 29 blend modes, scene graph, parallel rendering. ~25K lines.
https://github.com/gogpu/gggogpu/gogpu — High-level graphics framework
Simple API for GPU applications. Dual backend: use wgpu-native FFI for production or Pure Go for zero-dependency builds.
https://github.com/gogpu/gogpugogpu/ui — GUI widget toolkit (planned)
The end goal — a complete widget toolkit for desktop applications. Currently in early planning stage.
https://github.com/gogpu/uiTHE VISION
----------
We want Go to have first-class graphics support — from low-level GPU access to high-level GUI widgets. The stack:
Your App / GUI
↓
gogpu/ui (widget toolkit, planned)
↓
gogpu/gg (2D graphics)
↓
gogpu/gogpu (GPU framework)
↓
gogpu/wgpu (WebGPU) + gogpu/naga (shaders)
↓
Vulkan / Metal / DX12 / OpenGL
USE CASES
---------
- Game development (2D games, game engines)
- Data visualization dashboards
- CAD/vector graphics applications
- Server-side image generation (PDF, charts, thumbnails)
- CI/CD testing without GPU hardware
- Desktop applications with custom UI
- Embedded systems with minimal dependencies
CURRENT STATUS
--------------
Total: ~154K lines of pure Go code across the ecosystem.
All libraries are functional and tested. The software rasterizer just got a major update with full triangle rendering, depth/stencil buffers, and parallel processing.
We're now working toward a GUI widget toolkit (gogpu/ui).
PUBLICATIONS
------------
Dev.to articles about the journey:
- GoGPU Announcement:
https://dev.to/kolkov/gogpu-a-pure-go-graphics-library-for-gpu-programming-2j5d- 100K Lines in Two Weeks:
https://dev.to/kolkov/gogpu-from-idea-to-100k-lines-in-two-weeks-building-gos-gpu-ecosystem-3b2- Naga Shader Compiler:
https://dev.to/kolkov/building-a-shader-compiler-in-pure-go-naga-reaches-v040-39ol- gg 2D Graphics:
https://dev.to/kolkov/pure-go-2d-graphics-library-with-gpu-acceleration-introducing-gogpugg-538hINTERESTED?
-----------
We'd love to hear your thoughts:
- Is this something you'd use?
- What features would be most valuable for your projects?
- Want to contribute?
GitHub:
https://github.com/gogpuThanks for reading!
--
Andrey Kolkov