Fabrique is currently in BETA, offered at a discounted price for the time being. Expect minor issues but rest assured this is a work-in-progress.
Fabrique is a 3D, gpu-accelerated particle physics library for GameMaker 2.3 written in standard GML and GLSL-ES. Its solver is packed with features, simple to use and standalone production-ready. Intermediate users will find it easy to integrate, while more advanced users can have a blast extending it to fit their use.
IMPORTANT: Vertex texture fetching (VTF) is required to render models that rely on fabrique mesh lookups. Currently this is not natively supported in GM:Studio across all platforms, particularly HLSL 11 ANGLE translation. Other platforms might be affected as well. For these cases it is required to utilize an external library that allows VTF on the target platform. Fabrique solver is fully cross-platform and doesn't rely on VTF for simulation, only the rendering step requires it.
Particles and Bonds
Particles are non-parametric nodes that can be edited in real-time and baked into a mesh. Fabrique does this in parallel by encoding and editing mesh data in vram. Particles are defined by their properties and bonds to other particles, Their parameters include position, speed, direction, mass, restitution, drag, pressure, tension, group, state and more. Fabrique allows a safe maximum of 65536 nodes and 524288 bonds per body.
Meshes generate buffers from particles and bonds added to it. Meshes and their output are modular, they can be saved, loaded, cached and reused at user's discretion. This allows the user to give their mesh any form they desire, either by embedding it to a model or generating procedurally.
Fabrique bodies are baked out of generated mesh data. Multiple meshes can be baked into a single body which the user can then reference and draw multiple models. This means a whole level's worth of physics data can be baked into a single solver,
Solver takes a stack of wanted transformations (deltas, collisions, force maps, etc.) and computes the next state. Each transformation can be limited to only affect a group of nodes, or even affect nodes depending on their current state.
Fabrique bodies can save/load their whole states blazingly-fast via snapshots. User can visually edit them in their game or editor, then take snapshots for reuse of desired results.
Fabrique simulates particles in parallel. Forces and other affecting behaviors are defined inside force maps that can be applied to fabrique bodies individually or collectively. Hundreds of these can be stacked together and applied on local/global scale, making some very complex simulations possible at great performance.
Batch buffers allow the user to quickly read or write to individual nodes. It's primary use is being an interface between ram and vram, allowing the user to pin bodies to other objects dynamically, check if specific parts are still alive or at desired location, etc.
Batches can be declared, written and read from dynamically on demand. Keep in mind encoding/decoding thousands of particles in real-time on the cpu will not provide great results no matter how it's approached.
2D Pixel Colliders
2D pixel colliders are built directly from surfaces. They can be normalized in real-time relying on distance fields to push colliding nodes in parallel. Fabrique allows the user to downscale the resulting texture, so bigger maps can be baked without losing any meaningful detail.
Initial beta release.