About this project

G3N (pronounced "gen") is an open-source OpenGL 3D game engine written in the Go programming language, designed to build cross-platform Go applications with rich and dynamic 3D representations. ### Core Features - **Cross-Platform Support:** Works on Windows, Linux, and macOS, with WebAssembly support listed as 90% complete. - **Integrated GUI:** Includes a basic GUI framework with various widgets. - **Hierarchical Scene Graph:** Nodes can contain other nodes to organize 3D scenes. - **Spatial Audio:** Supports 3D spatial audio via OpenAL, including .wav and .ogg formats. - **Lighting and Rendering:** Offers real-time ambient, directional, point, and spot lighting, alongside physically-based rendering (Fresnel reflectance, geometric occlusion, microfacet distribution). - **Model and Geometry Support:** Includes loaders for glTF (.gltf, .glb), Wavefront OBJ (.obj), and COLLADA (.dae). It also features geometry generators for boxes, spheres, cylinders, and toruses, supporting morph targets and multimaterials. - **Animation and Shaders:** Features an animation framework for position, rotation, and scale, and supports user-created GLSL vertex, fragment, and geometry shaders. - **Other Features:** Supports HiDPI displays, perspective and orthographic cameras, TrueType fonts, image textures (GIF, PNG, JPEG), and includes an experimental basic physics engine. ### Dependencies and Installation The engine requires Go 1.8+, an OpenGL driver, and a GCC-compatible C compiler. Unix-based systems require specific C libraries (such as xorg-dev, libgl1-mesa-dev, libopenal-dev, and libvorbis-dev). Windows builds use the mingw-w64 toolchain, while macOS requires Homebrew packages for OpenAL and Vorbis. The engine can be installed via standard Go commands by cloning the repository and running `go install ./...`. ### Examples and Community The repository includes a basic "Hello G3N" example showing a blue torus and a button that changes its color, demonstrating cameras, lights, and GUI integration. The project provides API documentation via GoDoc, wiki guides, and a Discord community channel for support and discussion.