Fizzle is an OpenGL rendering engine written in the Go programming language that currently has a forward rendering pipeline with basic animation and shader support.
In some regards, it is the spiritual successor to my first 3d engine, PortableGLUE.
The engine is currently in an alpha state, but you are welcome to see how it's progressing. Any API break should increment the minor version number and any patch release tags should remain compatible even in development 0.x versions.
- GLFW (v3.1) - native library and go binding for window creation
- Mathgl - for 3d math
- Freetype - for dynamic font texture generation
- Groggy - for flexible logging
- Gombz - provides a serializable data structure for 3d models and animations
- EweyGewey (v0.3.2) some examples and editors use this GUI library
Additionally, a backend graphics provider needs to be used. At present, fizzle supports the following:
- Go GL - pre-generated OpenGL bindings using their glow project
- Opengles2 - Go bindings to the OpenGL ES 2.0 library
These are included when the graphicsprovider
subpackage is used and direct
importing is not required.
The dependency Go libraries can be installed with the following commands.
go get github.com/go-gl/glfw/v3.1/glfw
go get github.com/go-gl/mathgl/mgl32
go get github.com/golang/freetype
go get github.com/tbogdala/groggy
go get github.com/tbogdala/gombz
go get github.com/tbogdala/eweygewey
An OpenGL library will also be required for desktop applications; install the OpenGL 3.3 library with the following command:
go get github.com/go-gl/gl/v3.3-core/gl
If you're compiling for Android/iOS, then you will need an OpenGL ES library, and that can be installed with the following command instead:
go get github.com/remogatto/opengles2
This does assume that you have the native GLFW 3.1 library installed already accessible to Go tools.
- forward rendering engine with limited dynamic lighting
- limited dynamic shadow support
- components system using JSON files
- skeletal animations
- basic camera support
- basic particle editor (cmd/particles)
- basic shader explorer (examples/shaders)
- basic entity system (examples/testscene)
The following need to be addressed in order to start releases:
- documentation
- api comments
- samples
- code cleanups
- possibly remove use of Groggy
Fizzle is released under the BSD license. See the LICENSE file for more details.