Features

General

  • Developed by veteran with 18 years of GameMaker experience
  • Written in pure GML and GLSL ES for maximum portability
  • Wrapped in easy to use object-oriented interface
  • Every struct, function, macro and variable is documented
  • Split into modules so you can pick which parts you need in your project

Asset pipeline

  • Custom binary file formats designed for fast loading in GameMaker
  • BBMOD CLI - a command line tool for converting models and their animations to BBMOD format
  • Experimental conversion of materials to BBMOD format with BBMOD CLI
  • Experimental conversion of models from Y-up space to Z-up space with BBMOD CLI
  • Utilizes Assimp to support vide variety of file formats, including FBX, OBJ, glTF and COLLADA (see full list here)
  • Optional dynamic library (DLL and dylib) for importing third-party model formats from in-game
  • OBJ model importer written in GML(includes basic material support)
  • BBMOD GUI - a windowed application for easier content creation (for Patrons only)

Animations

  • Vertex skinning
  • Node-based animations
  • Fast precomputed animations (GPU-ready data)
  • Animation events triggered at specific frames
  • Animation transitions
  • Transform bones with code
  • Bone attachments

PBR materials

  • Support for both metallic-roughness and specular color-smoothness workflows
  • Tangent-space normal maps
  • Baked ambient occlusion
  • Emissive textures (RGBM encoded)
  • Cheap subsurface scattering
  • Support for different shaders per render pass
  • GGX specular reflection model

Lights and shadows

  • Ambient light (split into lower and upper hemisphere)
  • Dynamic point, spot and directional lights
  • Dynamic soft shadows for point, spot and directional lights (single cascade)
  • Image-based lighting with HDR support (RGBM encoded)
  • Reflection probes (pre-baked or captured in-game)
  • Support for HDR baked lightmaps (RGBM encoded)

Deferred renderer

  • Support for unlimited number of shadow-casting lights
  • Requires multiple render targets and 16-bit floating point surfaces!

Forward renderer

  • Limited to 1 directional light and up to 8 punctual lights
  • Only a single light can cast shadows
  • Supported on all platforms!

Fog

  • Configurable color, start, end and maximum intensity

Cameras

  • First and third person
  • Perspective and orthographic
  • Built-in mouselook - includes support for browsers through Pointer Lock API (HTML5 platform)
  • Camera exposure and HDR rendering
  • Convert 3D coordinates to screen coordinates
  • Convert screen coordinates to a 3D vector in world-space

Post-processing

  • High quality screen-space ambient occlusion (SSAO)
  • Kawase blur
  • Directional blur
  • Radial blur
  • Depth of field with configurable bokeh shape
  • Chromatic aberration
  • Exposure
  • Gamma correction
  • Reinhard tonemapping
  • Color grading LUT
  • Luma sharpen
  • Film grain
  • Barell and pincushion lens distortion
  • Screen distortion via normal map
  • Sun shafts
  • Light bloom
  • Lens flares
  • Lens dirt
  • Monochrome
  • Vignette
  • Fast approximate anti-aliasing (FXAA)

Render queues

  • Enqueue commands and execute later
  • Render queues sorted by priority (e.g. draw transparent models last)
  • Filter mesh draw calls by instance ID

Batching

  • Batch multiple models into a single vertex buffer to minimize draw calls
  • Each model in a batch can have its own position, uniform scale, color and ID

Particles

  • Optimized CPU particle system
  • Module based - define particle behavior by composing configurable modules
  • Gravity, attractors, repellers and collisions
  • Soft particles - particles smoothly disappear when intersecting with other geometry
  • Shadow casting and receiving
  • Depth sorting

Terrain

  • Heightmap based terrain
  • Split into chunks to support large scale terrains
  • Support for up to 5 material layers, controlled with a splat map
  • Color map (multiplies diffuse/albedo texture)
  • Precomputed tangent and bitangent vectors for full normal mapping support
  • Retrieve terrain height, normal and layer index at a specific position

Level editing

  • Mouse picking of instances
  • Highlight of selected instances
  • Gizmos for moving, rotating and scaling of selected instances
  • Global and local space editing
  • Save & load system for instances - de/serialize instances from/to buffers

Misc

  • Vectors (2D, 3D, 4D), matrices, quaternions and dual quaternions
  • Plane, Sphere, AABB and frustum intersection tests and raycasting
  • Compatibility layer for ColMesh - a popular library for 3D collisions
  • Check for multiple render targets (MRT) support
  • Check for vertex texture fetching (VTF) support
  • Support for VTF on Windows through DLL (OpenGL platforms supported natively)
  • Utility functions for strings, arrays, buffers, sprites, async loading and more...
  • State machines