General
- Developed by Patrik Kraif, one of the current GameMaker developers and a GM veteran with 20 years of 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
Asset Pipeline
- Custom binary file formats designed for fast loading in GameMaker
- BBMOD CLI for model and animation conversion
- Experimental material and Y-up to Z-up conversion in BBMOD CLI
- Uses Assimp to support many formats including FBX, OBJ, glTF and COLLADA (full list)
- Optional dynamic library for in-game third-party format imports
- OBJ importer written in GML with basic material support
- BBMOD GUI for easier content creation (Patrons)
Animations
- Vertex skinning
- Node-based animations
- Fast precomputed animations (GPU-ready data)
- Animation events at specific frames
- Smooth animation transitions
- Transform bones via code
- Bone attachments
PBR Materials
- Metallic-roughness and specular color-smoothness workflows
- Tangent-space normal maps
- Baked ambient occlusion
- Emissive textures (RGBM encoded)
- Cheap subsurface scattering
- 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
- Image-based lighting with HDR support (RGBM encoded)
- Reflection probes (pre-baked or captured in-game)
- HDR baked lightmaps support (RGBM encoded)
Renderers and Cameras
- Deferred: unlimited shadow-casting lights (requires MRT and FP16 surfaces)
- Forward: 1 directional + up to 8 punctual lights, only one shadow-casting light
- Supported on all platforms
- First/third-person, perspective and orthographic cameras
- Built-in mouselook including HTML5 Pointer Lock support
- Camera exposure and HDR rendering
- World to screen and screen to world-space conversion helpers
- Fog with configurable color/start/end/max intensity
Post-processing
- SSAO
- Kawase, directional and radial blur
- Depth of field with configurable bokeh shape
- Chromatic aberration
- Exposure and gamma correction
- Reinhard tonemapping
- Color grading LUT
- Luma sharpen and film grain
- Barrel/pincushion lens distortion
- Screen distortion via normal map
- Sun shafts, bloom, lens flares and lens dirt
- Monochrome and vignette
- FXAA
Performance and Workflow
- Render queues with deferred command execution
- Priority-based sorting (e.g. transparent models last)
- Filter mesh draw calls by instance ID
- Batch models into single buffers to reduce draw calls
- Per-model transform, scale, color and ID within a batch
- Optimized CPU particle system with module composition
- Particle gravity, attractors, repellers and collisions
- Soft particles, shadow casting/receiving and depth sorting
Terrain and Level Editing
- Heightmap terrain split into chunks for large worlds
- Up to 5 material layers via splat map
- Color map and full normal mapping support
- Query terrain height, normal and layer at position
- Instance picking and selection highlighting
- Move/rotate/scale gizmos for selected instances
- Global and local space editing
- Save/load instance serialization workflow
Math and Misc
- Vectors, matrices, quaternions and dual quaternions
- Plane, sphere, AABB, frustum tests and raycasting
- Compatibility layer for ColMesh
- MRT and VTF capability checks
- VTF on Windows through DLL (OpenGL supports natively)
- Utility helpers for strings, arrays, buffers, sprites and async loading
- State machines