All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
SystemExtra::enabled_on
for better support when enabling systems (#1146).amethyst_test
test framework for ergonomic testing of Amethyst applications (#1000)- combinations of buttons triggering actions (#1043)
UiPrefab
fieldhidden: bool
to hide entities (#1051)PrefabData
can now be derived for many situations, see the book for more information (#1035)- Support for DirectionalLight and SpotLight in PBM pass. (#1074, #1081)
UiWidget
variantCustom
for custom composited widgets (#1112)AssetLoaderSystemData
abstracts resources needed fromWorld
to do asset loading (#1090)amethyst_ui::get_default_font
supports loading system font from Path. (#1108)- Added
Callback
andCallbackQueue
for use in asynchronous contexts. (#1125) - Added Trans event queue. Used to trigger state transitions from systems. Also used to trigger multiple state transitions at once. (For example, to
Trans::Pop
two states.) (#1069) sprite_camera_follow
example showing how to use a Camera that has a sprite Parent (#1099)
Material
animations now directly useHandle<Texture>
instead of using indirection. (#1089)SpriteRenderPrimitive::SpriteSheet
now takesHandle<SpriteSheet>
instead of au64
ID. (#1089)nalgebra
is now the math library used by the engine. (#1066)- The
amethyst::renderer::Projection::orthographic
function has had its parameter order changed to match that ofnalgebra
(#1066) SpriteSheet
now useTextureHandle
directly instead of au64
ID coupled withMaterialTextureSet
. (#1117)- Updated
specs
to0.14
andspecs-hierarchy
to0.3
. (#1122)
SpriteSheetSet
is removed as it is no longer needed. (#1089)MaterialTextureSet
is removed as it is no longer needed. (#1117)amethyst::core::Orientation
has been removed because of limited use. (#1066)TimedDestroySystem
has been split intoDestroyAtTimeSystem
andDestroyInTimeSystem
. (#1129)
0.9.0 - 2018-10
- Added base networking implementation and the
amethyst_network
crate. (#969) - Support for debug lines using
DebugLines
pass, andDebugLines
component or resource. (#917, #957) - Added JsonFormat (#950).
SpriteRender
pass to draw sprites without usingMaterial
andMesh
. (#829, #830)- Sprite animation uses the
SpriteRenderChannel
. (#829, #830) - State::handle_event can now handle multiple types of events. (#887)
- Added Named Component. (#879)(#896)
- Support for progressive jpeg loading. (#877)
- New
application_root_dir()
function inamethyst_utils
. (#831) - Load node names for glTF prefabs. (#905)
- Added automatic camera matrix resizing to allow clean screen resizes. (#920)
- Added the Removal component to facilitate manual entity removal and scene cleaning. (#920)
- Added DestroyAtTime and DestroyInTime components to easily destroy entities. (#920)
- Support for loading TGA images. (#934)
- GltfPrefab adds MeshData as a component on loaded entities. This is not configurable until the Prefab rework. (#946)
- Added implementation of From<Vector3> for Transform which creates a Transform using Vector3 as the translation vector. (#946)
- New vertices() method on MeshCreator trait. (#946)
- Support for text alignment (align left, center, right). (#965)
- Support for multiline text. (#965)
- Added custom aspect ratio to OrthoCamera. (#983)
- Added AntiStorage documentation to the book. (#997)
- You can now stop the rotation of the FreeRotationSystem by setting HideCursor.hide value to false. (#997)
- Support for logging to file, toggle for logging to stdout. (#976, #994)
- Added a
Hidden
Component, that hides a single entity, and a HideHierarchySystem that togglesHidden
on all children when used. (#1001) - Documentation for drawing sprites. (#971)
- Added
shadow_update()
andshadow_fixed_update()
to theState
trait. (#1006) - Added configurable width for debug lines. (#1016)
- Added
TextureMetadata::srgb_scale()
for default texture metadata with nearest filter. (#1023) - Added motivation to use Amethyst over gluing the building blocks yourself in the book. (#1057)
- Added
Config::load_bytes
for reading configuration from raw bytes. (#1067)
- Sprites contain their dimensions and offsets to render them with the right size and desired position. (#829, #830)
- Texture coordinates for sprites are 1.0 at the top of the texture and 0.0 at the bottom. (#829, #830)
- Made get_camera public. ([#878)]
- Simplified creating states with SimpleState and EmptyState. (#887)
- Updated ProgressCounter to show loading errors. (#892)
- Replaced the
imagefmt
crate withimage
. (#877) - Optimize Sprite rendering via batching. (#902)
- Derive
Debug
andPartialEq
foramethyst_input::Axis
. (#903, #904) - Updated
winit
to0.17
(see Winit's changelog). (#906) - Updated
glutin
to0.18
(see Glutin's changelog). (#906) - Updated
gfx_window_glutin
to0.26
. (#906) - Updated
hetseq
to0.2
. (#906) - Removed unwraps from StateMachine (#940)
- Renamed ArcBallMovementSystem to ArcBallRotationSystem. (#946)
- Moved the ArcBallMovementSystem::get_axis method to amethyst_input/src/utils: get_input_axis_simple (#946)
- Ui Y axis is now from bottom to top. (#946)
- Fixed issue with global anchors not actually aligning ui elements and containers properly. (#946)
- Fixed issue with ui events not triggering at times. (#946)
- Reduced the complexity of the UiPass and associated shaders. (#946)
- Added comments to UiPass and shaders explaining what is going on. (#946)
- The z in UiTransformBuilder now defaults to 1 instead of 0, allowing to skip defining the z in the ui prefabs. (#946)
- Added comments to ui prefab. (#946)
- Summarized all
use amethyst::
statements to allow collapsing in IDE's. (#974) Application
now usesEventReader
s to determine what events to send to theState
s, more information in theState
book chapter (#996)- Breaking: Refactor
TextureMetadata
so filter method and clamping can be configured more easily (#981) - Renamed
PrefabData
functions to be easier to understand (#1008)
LMenu
andRMenu
key codes, following thewinit
update. (#906)
- Material ids in GLTF loader caused multiple GLTF files to get incorrect materials applied. (#915)
- Fix render gamma for most textures. (#868)
- Joint entities can only be part of a single skin: Materials are not swapped anymore. (#933)
- Fixed regression in sprite positioning after batching. (#929)
- Now loading default fonts from the system for UiButton (#964)
- Fixed single frame animation (#1015)
- Improved compatibility with older drivers (#1012)
- Forgotten
channel
field onexamples/ui
prefab (#1024) AssetPrefab
loaded files at an incorrect time (#1020)- Removed unreachable code in
TexturePrefab
(#1020) - Fix OpenGL not rendering on window creation due to
glutin
bug (#972) - Fix debug lines panic when no lines are rendered (#1049)
0.8.0 - 2018-08
- UI
ScaleMode
is now functional, permitting percentage basedUiTransform
s. (#774) - Add serde trait derives to many core components (#760)
- Add a generic asset
Format
forron
files (#760) - Improve error handling for asset loading (#773)
- Add bundle for the arc ball camera (#770)
- Add utility functions for dealing with common input (#759)
- Add alpha cutoff support to the PBR shader (#756)
- Basic renderer setup helper function (#771)
- Shape mesh generators (#777)
- Derive
PartialEq
forSpriteSheet
(#789) - Add core support for Prefabs (#716)
- Add shape prefab support (#785)
- Specialised UI prefab format (#786)
- Add generation of normals/tangents in GLTF (#784)
- Localisation using FTL files and the fluent-rs library (#663)
- Add basic scene prefab (#791)
- Improve ergonomics of examples (#793)
- Beginner-friendly utilities for sprite rendering (#804)
- Derive
PartialEq
forMaterialPrimitive
(#809) - Make
with_bindings_from_file
return a Result (#811) - Logger initialization is now optional and can be enabled with a call to
amethyst::start_logger()
(#815) - Gamepad support with optional builtin SDL controller event source (#818)
- Promote
UiButton
to a fundamental Ui component (#798)
- UI systems will now never overwrite your local
UiTransform
values (#774) - Global
UiTransform
values are no longer writable (#774) UiResize
refactored to be more user friendly and more helpful (#774)Anchored
andStretched
components have been folded intoUiTransform
(#774)- Refactored asset loading so
Processor
s can defer storage insertion (#760) - Moved
MaterialTextureSet
to the renderer crate (#760) - Use
fresnel
function in PBR shader (#772) - Remove boilerplate for
run
+main
in examples (#764) - Update dependencies (#752, #751, #817)
- Formalized and documented support for overriding the global logger (#776)
- Refactor GLTF loader to use prefabs (#784)
- Point lights use
GlobalTransform
for positioning rather than a separatecenter
(#794) - Point lights now require a
GlobalTransform
component to be included in rendering (#794) amethyst_input::input_handler::{keys_that_are_down, mouse_buttons_that_are_down, scan_codes_that_are_down, buttons_that_are_down}
now all returnimpl Iterator
instead of concrete wrapper types (#816)- Renamed is_key to is_key_down and fixed example to react when the key is pressed instead of released. (#822)
- SpriteRenderData now allows to retrieve the MeshHandle and Material before inserting them into an entity. (#825)
- Update the pong tutorial + changelog for SpriteRenderData. (#805)
- Loosen up generic type bounds for InputBundle. (#808)
- Remove
amethyst_input::{KeyCodes, ScanCodes, MouseButtons, Buttons}
in favor ofimpl trait
(#816)
- Resizing fixed on OSX (#767)
- Fix color format (#766)
- Remove individual example READMEs (#758)
- Log an error if a pass tries to render a mesh with incompatible vertex buffers (#749)
- Standardize vsync across examples (#746)
- Minor Pong tutorial fixes. (#807)
- Fix wrong resource paths in examples. (#812)
0.7.0 - 2018-05
- Documentation for Animation crate (#631).
- Support for rendering sprites (#638).
- Fly Camera (#578).
- UI Layouts (#591).
- UI Events (#580).
- Introduce a generic animation system, with support for both transform and texture animation (#558), (#566), (#567), (#569), (#570), (#611), (#641), (#644)
- Add transparency support to core passes (#543), (#574), (#584)
- Add vertex skinning (#545), (#619)
- Expose a basic visibility ordering system, with the ability to swap in better replacement systems (#595)
- Audio
Output
is now added directly rather than as anOption
, should now be fetched withOption<Read<'a, Output>>
(#679) - New nightly feature that enables
shred
s nightly feature (#689) Transform
refactored, and added lots of utility functions (#660)- Add new raw mouse events for use with camera rotation (#699)
- Add UiButtons and UiButtonBuilder (#613)
- Add arc ball camera (#700)
- Update dependencies to the newest versions: cgmath, winit, glutin, gfx, gfx_glyph (#527), (#572), (#648)
- Rodio updated to 0.7 (#676)
- Refactored bundles to only contain
System
s (#675) - Refactor to use new specs, major breakage! (#674), (#679), (#683), (#662).
- Upgrade to winit 1.13.1 (#698)
- Refactor game data, permit greater extensibility (#691)
- Disable multisampling on all examples, and add a single example with multisampling on (#671)
- Asset loading tolerates paths constructed using back slashes (#623).
- Pong text alignment (#621).
- Updated book introduction (#588).
- Renderable runtime crash (#586).
0.5.1 - 2017-08-30
- Fix syntax highlighting in documentation.
0.5.0 - 2017-08-29
- Add audio support (#265)
- Asset management rewrite (pull request #244).
- Use RON as config format (#269)
- Overhaul input system (#247), (#261), and (#274)
- Total overhaul of the game renderer (#285)
0.4.3 - 2017-06-03
- Add mouse button events to
InputHandler
(pull request #181). - Built-in application profiler using
thread_profiler
(pull request #212). - Screenshots for all in-repo examples (pull request #213).
- Pre-commit hook to automate local testing for commits (pull request #228).
- Fix deferred rendering in renderable example (pull request #211).
- Fix AppVeyor curl command (pull request #217).
- Ignore IntelliJ IDEA project files (pull request #218).
- Fix
InputHandler
key press bug (pull request #227). - Fix CRLF normalization on extensionless files (pull request #207).
- Update code to latest template (pull request #215).
0.4.2 - 2017-03-07
- Allow loading configuration files directly from strings.
- Add
#[derive(Default)]
for some types in ECS module. - Add Ilya Bogdanov, Konstantin Zverev, and Scott Corbeil to
AUTHORS.md
.
- Implement some clippy suggestions.
- Use
FnvHasher
instead of Rust's default SipHash implementation for better performance.
- Correct the quick example given in
README.md
. - Replace constant paddle width with actual value in Pong example.
- Minor fix of line numbers in link in
CONTRIBUTING.md
. - Add backticks around word in doc comment within
input.rs
. - Match
Stopwatch
behavior to API documentation. - Fix AppVeyor build failures due to
timing.rs
test failure.
0.4.1 - 2017-02-10
- Make
CONTRIBUTING.md
have teeth by enabling#[deny(missing_docs)]
. - Add lots of shiny new API documentation.
- Convert
amethyst
crate into a workspace. - Add Travis and Appveyor badges to Cargo manifests.
- Bump
amethyst
to version 0.4.1,amethyst_renderer
to 0.4.1, andamethyst_config
to 0.2.1. - Temporarily disable
cargo fmt
checking in Travis due to panics. - Update to
dds
0.4. - Update to
gfx
0.14, fix breaking changes relating to shaders, PSO, and module layout changes. - Update to
gfx_device_gl
0.13. - Update to
gfx_window_glutin
0.14. - Update to
glutin
0.7. - Improve quality of existing doc comments.
- Implement
Deref
andDerefMut
intoglutin::Event
forWindowEvent
. - Re-export contents of
engine
to top-level and make module private. - Shorten certain variable names to help combat rightward drift.
- Update
.travis.yml
andappveyor.yml
to usecargo test --all
instead of specifying explicit crates. - Rename
06_assets
to05_assets
. - Make Git line endings consistent for source and config files throughout the repo.
- Process entire codebase through
cargo fmt
. - Improve wording and formatting in
CONTRIBUTING.md
and inREADME.md
.
- Delete
rustfmt.toml
fromamethyst_renderer
. - Delete outdated example from
amethyst_renderer
. - Delete redundant
extern crate
directives outside oflib.rs
.
0.4.0 - 2017-02-07
- Add transform system, transform components, light components,
specs
resources (camera, input handler, game time counter, screen dimensions, event handling). - Make mesh primitives with genmesh.
- Add basic asset management.
- Add support for Wavefront OBJ assets with wavefront_obj, and texture loading with imagefmt.
- Add support for DirectDraw surfaces (.dds files).
- Moar examples! Oh, and we have a basic pong game too.
- Fix several
unused_variables
andunused_mut
warnings. - Add gitattributes to prevent line-ending conversion for binary files.
- Add lots of API documentation.
- Relicense under the terms of both MIT/Apache-2.0.
- Revamp
amethyst_renderer
- Graphics backend chosen at compile time using features.
- Add specular lighting, switching propagation -> attenuation.
- Update instructions for generating a new project using Cargo templates.
- Scale number of
specs
threads according to system core count. - Improve Travis CI build speeds.
- Rewrite
Stopwatch
to be an enum. - Update contribution guidelines and change log.
- Update book to reflect new API changes.
- Update dependency versions.
- Remove
amethyst_ecs
crate in favor of usingspecs
directly. - Remove
amethyst_context
and refactor to greatly improve performance. - Remove unused lights from included forward and deferred renderer pipelines.
- Remove dependency on
time
crate.
0.3.1 - 2016-09-07
- Fixed broken API reference link in
README.md
. - amethyst.rs book: link to API reference broken (issue #86).
- Master branch no longer builds on beta/nightly Rust (issue #94).
- Initial version of
amethyst_ecs
crate (issue #37). - Add Gitter webhooks support to Travis (issue #27).
- Update
amethyst_renderer
crate slightly (issue #37). - Remove
publish.sh
script since website repo handles docs now (issue #27). - Updated contribution guidelines on submitting code (issue #37).
- Update broken links for website, wiki, chat, and blog (issue #27).
- Add keywords to sub-crates.
- Remove reference to missing README file from
amethyst_engine
- Pass slice references to functions instead of
&Vec<T>
. - Add state machine unit tests (issue #9, pull request #15)
- Mention nightly Rust in "Hello World" tutorial (issue #11, pull request #12)
- Split amethyst` into separate sub-crates (issue #13, pull request #14)
- Update example to reflect API changes
- Depend on gfx-rs to reduce workload and foster cooperation, removed old renderer backend code
- Stabilize state machine API (pull request #6).
- Implement pushdown automaton state machine.
- Implement state transitions.
- Remove standardized
State
constructor (pull request #6). - Update book and doc comments.
- Fix unreachable shutdown statement bug (issue #5).
- Clean up use statements.
- Renderer design progress (issue #7).
- Split
ir.rs
andfrontend.rs
into separate files. - Frontend
- Objects and Lights (enums) are now structs impl'ing
Renderable
trait. Frame
is a container ofRenderable
trait objects.- Start compiling library of common objects and light types.
- Objects and Lights (enums) are now structs impl'ing
- Intermediate Representation
- Move GPU state modeling out of Backend and into IR.
- CommandBuffers are now directly sortable.
- CommandQueue now takes in CommandBuffers directly
- Backend
- Consolidate traits into one short file.
- Split
- Add
Frame::with_data
constructor to renderer.
- Hide engine submodule, reexport desired contents as public.
- Updated hello_world.rs to new API.
- Significantly expanded Amethyst book and doc comments.
- Initial release