-
-
Notifications
You must be signed in to change notification settings - Fork 235
Piston overview
Here is an overview of the Piston architecture. Everything is developed under the MIT license, unless specified otherwise.
These are places to get started with Piston.
- piston-examples - Small examples
- piston-tutorials - Getting started
- piston wiki - Information for people working on the Piston project
These projects demonstrates the functionality of Piston.
- skeletal_animation_demo - Demonstrates 3D skeletal animation using Gfx
- piston-music - Simple music library using SDL2 and current library
These libraries models the input, window and event loop. The reason is to write generic libraries that work across projects.
- pistoncore-input
- pistoncore-window
- pistoncore-event_loop
- piston - reexports core libraries
These libraries supports the functionality and integration between other libraries. They are small and simple. The reason is to give the user free choice of higher level libraries that overlaps in functionality, but keep the integration internally in Piston.
- vecmath
- quaternion
- dual_quaternion
- piston3d-cam
- interpolation
- shader_version
- piston-viewport
- piston-float
- piston-texture
- current - "Globals" for prototyping, high level libraries, diagnostics
- table - Dynamical typed Lua-like table structure
- texture_packer - Pack small images together into larger ones
- select_color - Color selection
- read_color - Read hex colors
- read_token - Read tokens using look-ahead
- range - Range addressing
- fps_counter - FPS counter
- find_folder - Find a folder from current directory
- array - Convenience methods for working with arrays
- piston-shaders - Repository for GPU shaders
These are bindings to C libraries.
- freetype-rs - Safe wrappers for FreeType fonts
- freetype-sys - Low level wrappers for FreeType fonts
- physfs-rs - PhysFS bindings
These libraries can be used separately or together with the Piston ecosystem. The reason is to decouple dependencies such that the functionality in these libraries can be reused as much as possible.
- image - Image encoding and decoding
- piston_collada - Advanced standard format for 3D
- wavefront_obj - Simple 3D format
- hematite_nbt - Minecraft's Named Binary Tag (NBT) format
- piston_meta - Meta parsing for domain specific text formats
- asset_store - Unified method of loading asssets
- image - Collects encoders and decoders
- gif - GIF encoder and decoder
- png - PNG decoder
- color_quant - Color quantization
These integrates Piston with various external APIs. The window and graphics backends are decoupled. The reason is greater flexibility when shipping a product, easier to compare API design and performance, and works both for cross and native platforms.
Window (uses the piston core):
2D graphics (uses piston2d-graphics:
These libraries leverages the generic functionality of Piston into higher level features.
Under PistonDevelopers:
- conrod - Immediate UI
- camera_controllers - 3D camera navigation
- button_controller - Tracking mouse/button events
- piston-ai_behavior - AI behavior trees
- piston2d-sprite - Sprite animation
- piston2d-shapes - Convenience structs for 2D shapes
- piston2d-drag_controller - Drag & drop for 2D
External:
- carboxyl_window - Functional reactive programming for window events, GNU license
- elmesque - 2D graphics inspired by the Elm graphics modules
These libraries uses the Gfx backend agnostic graphics API.
- dev_menu - Uses pistoncore-input
- gfx_text - Uses FreeType
- gfx_debug_draw - Rendering lines and text in 3D space
- piston3d-gfx_voxel - Voxel rendering
- piston-gfx_texture - Integrates Gfx textures with Piston
- skeletal_animation
- redox - Game competition website, using Rust server stack
- hematite - A Minecraft client
- hematite_server - A Minecraft server
- inventory - Plugin management in Rust programs
- opengex - Rust library for OpenGEX format
- mush - GUI for graphs
- truetype - Rust library for the TrueType format
- gfx_window_shared - An alternative window backend using Gfx
- project_r - An ambitious multiplayer game
- VisualRust - A Rust plugin for Visual Studio
- Eco - Rust ecosystem breaking change analysis
- Piston docs - Documentation for Piston's projects
- Piston blog - The Piston project's blog
- Piston website - The Piston project's website
- Hematite website - The Hematite project's website