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.
