Pure Go 3D rendering library
Scene graph, PBR materials, GLTF loading. Zero CGO.
Built on gogpu/wgpu (Vulkan/Metal/DX12/GLES/Software).
What is g3d?
g3d is a 3D rendering library — not a game engine. It provides the building blocks (scene graph, cameras, lights, materials, mesh loading) that game engines, CAD viewers, data visualizers, and AR/VR applications build upon.
Think of it like Three.js for Go: simple API, powerful rendering, zero opinion about your application architecture.
All backends are Pure Go — zero CGO, single binary deployment.
Standalone Usage
g3d works without the gogpu application framework. Bring your own window and GPU device:
// Use g3d with any wgpu.Device — no gogpu dependency required
device, queue := myCustomGPUSetup()
renderer := g3d.NewRendererFromDevice(device, queue)
scene := g3d.NewScene()
// ... build your scene
renderer.Render(scene, camera)
Architecture
Your Application (game engine, CAD viewer, data viz, AR/VR)
|
gogpu/g3d — Scene Graph + PBR + GLTF + Render Pipeline
|
gogpu/wgpu — Pure Go WebGPU (Vulkan/Metal/DX12/GLES)
|
gogpu/naga — Shader Compiler (WGSL → SPIR-V/MSL/GLSL/HLSL)
g3d depends down (wgpu, naga), never up (gogpu, gg, ui). This ensures it can be used in any context.
Installation
go get github.com/gogpu/g3d
Requirements: Go 1.25+
Roadmap
Phase
Features
Status
Phase 1
Scene graph, cameras, basic materials, box/sphere/plane, renderer
Planned
Phase 2
PBR lighting, shadows, StandardMaterial, normal maps
Package g3d is a Pure Go 3D rendering library built on gogpu/wgpu.
g3d provides a scene graph, PBR materials, cameras, lights, GLTF loading,
and a forward rendering pipeline with zero CGO dependencies. It is designed
as a reusable foundation — not a game engine — so that game engines, CAD viewers,
data visualizers, and AR/VR applications can build on top of it.
g3d depends on gogpu/wgpu for GPU abstraction (Vulkan, Metal, DX12, GLES, Software)
and gogpu/naga for shader compilation (WGSL to SPIR-V/MSL/GLSL/HLSL).