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/208


WHAT 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/wgpu

gogpu/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/naga

gogpu/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/gg

gogpu/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/gogpu

gogpu/ui — GUI widget toolkit (planned)
The end goal — a complete widget toolkit for desktop applications. 
Currently in early planning stage.
https://github.com/gogpu/ui


THE 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-538h


INTERESTED?
-----------

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/gogpu

Thanks for reading!

--
Andrey Kolkov

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/e4c1d284-e095-4185-9b78-392d04d32cf4n%40googlegroups.com.

Reply via email to