diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..57fcbcba5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,174 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## v0.6.0 + +This version is a complete rewrite. While some code was copied across, this +library now directly depends upon `wgpu` instead of using `easygpu`, and it has +an API inspired by `wgpu`'s [Encapsulating Graphics Work][encapsulating] +article. + +[encapsulating]: https://github.com/gfx-rs/wgpu/wiki/Encapsulating-Graphics-Work + +## v0.5.0 (2023-04-28) + +### Breaking Changes + +- `set_always_on_top`/`with_always_on_top`/`always_top` have been replaced with + `set_window_level`/`with_window_level`/`window_level` respectively. This + change was due to upgrading to the latest `winit`. +- The MSRV has been updated to 1.64.0 due to nested dependency requirements. +- These feature flags have been renamed: + - `serialization` has become `serde` + - `tokio-rt` has become `tokio` + - `smol-rt` has become `smol` + +### Changes + +- Updated `easygpu` to v0.5.0. + - `wgpu` has been updated to v0.16.0 +- `winit` has been updated to v0.28.3 +- `palette` has been updated to v0.7.1 + +### Fixes + +- Returning a scale from `Window::additional_scale` now works. +- `CloseResponse` is now exported. + +### Added + +- `Scene::set_additional_scale` has been added to set the scaling factor between + Points and Scaled. This allows application-level scaling in addition to the + DPI scaling Kludgine already does. + +## v0.4.0 (2023-01-27) + +### Changes + +- Updated `easygpu` to 0.4.0: + - `wgpu` has been updated to 0.15.0. + +## v0.3.1 (2022-11-06) + +### Changes + +- Updated `rusttype` to 0.9.3: + - `ttf-parser` has been updated to 0.15.2. + - Versions of rusttype are now pinned to prevent transient dependency upgrades + breaking compilation. + +## v0.3.0 (2022-11-06) + +### Changes + +- Updated `easygpu` to 0.3.0: + - `wgpu` has been updated to 0.14.0. + - `winit` has been updated to 0.27.4. + +## v0.2.0 (2022-07-31) + +### Changes + +- Updated `easygpu` to 0.2.0: + - Updated `wgpu` to 0.13.1 + - Updated `lyon_tessellation` to 1.0.1 + +## v0.1.0 (2022-02-02) + +### Changes + +- Switching off of pre-release version numbering. They just add more pain than + they're worth. +- Updated dependencies to `wgpu` 0.12 + +### Fixes + +- Fixed incompatibility with image crate update. +- Changed dependency versions to be less lenient. + +## v0.1.0-dev.6 (2021-12-07) + +### Fixes + +- Fixed issue where render_one_frame would freeze in headless environments (#53). + +## v0.1.0-dev.5 (2021-12-06) + +### Changed + +- Updated dependencies for compatability with wgpu 0.11.1. +- Implemented Sprite alpha rendering. The APIs already existed, but the alpha value was being ignored. + +## v0.1.0-dev.4 (2021-10-31) + +### Added + +- `Sprite::current_frame` immutably retrieves the current frame. This + is equivalent to calling `Sprite::get_frame(None)` but can be used + in non-mutable settings. + +## v0.1.0-dev.3 (2021-10-11) + +### Changes + +- Updated `easygpu` and `easygpu-lyon`, which moves Kludgine onto `wgpu` 0.11. + +## v0.1.0-dev.2 (2021-10-11) + +### Added + +- `WindowCreator` and `WindowBuilder` now support initial_position. + +### Breaking Changes + +- `WindowCreator` and `WindowBuilder` now use `Points` as the unit for + `initial_size`. When creating the window, we now request the logical size + rather than pixels, correspondingly. + +### Fixes + +- Redrawing while resizing is done with more expediency. Previously, we were + waiting for the OS to ask for us to redraw after resizing, rather than forcing + a resize. + +## v0.1.0-dev.1 (2021-09-01) + +### Breaking Changes + +- Added `WindowHandle`, which allows interacting with the window after it has + been built. This parameter is passed into nearly all `Window` trait functions + now. +- `WindowCreator` now takes `&self` parameter for all methods. There was no + reason for these methods to be static, and it prevented a window from being + able to control how it was built based on its initial configuration. + +### Fixes + +- Rendering a SpriteSource using a Point without specifying a Size now renders + it at `Scaled` resolution. This restores the behavior before the parameters + were switched to `Displayable`. + +## v0.1.0-dev.0 (2021-08-22) + +### Breaking Changes + +- Removed all user interface code, and spun off a new user interface project, + [Gooey](https://github.com/khonsulabs/gooey). +- Split Kludgine into three crates: + - `kludgine-core`: The rendering aspects of Kludgine. Can now be used for headless rendering as well. + - `kludgine-app`: The windowing/event handling layer of Kludgine. + - `kludgine`: An omnibus crate that marries the two with one crate include. +- Now uses `figures` for its math types. If you're using functionality that was + in `euclid` but is no longer available in `figures`, please submit [an + issue](https://github.com/khonsulabs/figures/issues). We may not add all + requested functionality, but as long as it extends one of the types `figures` + already has, it likely will be added upon request. +- Introduced `unstable-apis` feature flag. The plan for this flag is to offer a + way to provide APIs that are still under heavy development to be used without + forcing semver updates when the APIs change. After 1.0, breaking changes to + `unstable-apis` will be one of the factors that causes minor version + increments. diff --git a/Cargo.lock b/Cargo.lock index e394a7ec2..059df1052 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ [[package]] name = "appit" version = "0.1.0" -source = "git+https://github.com/khonsulabs/appit#125e9f7c463d59e500089155d5433583302bb72a" +source = "git+https://github.com/khonsulabs/appit#c036093beec71780f957709df1cd932de779e06e" dependencies = [ "winit", ] @@ -94,9 +94,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "as-raw-xcb-connection" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5f312b0a56c5cdf967c0aeb67f6289603354951683bc97ddc595ab974ba9aa" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" [[package]] name = "ash" @@ -539,8 +539,8 @@ dependencies = [ [[package]] name = "figures" -version = "0.1.0" -source = "git+https://github.com/khonsulabs/figures#aaee0e99cf5c3ad5a7e907819eceeef9b897fe13" +version = "0.2.0" +source = "git+https://github.com/khonsulabs/figures#1d645c9b5eafa20339b5bc8d74afc2d001a7b4b1" dependencies = [ "bytemuck", "euclid", @@ -923,7 +923,7 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kludgine" -version = "0.1.0" +version = "0.6.0" dependencies = [ "ahash", "alot", @@ -1036,13 +1036,13 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f5bcf02928361d18e6edb8ad3bc5b93cba8aa57e2508deb072c2d2ade8bbd0d" +checksum = "8c7c67b5bc8123b352b2e7e742b47d1f236a13fe77619433be9568fbd888e9c0" dependencies = [ "float_next_after", "lyon_path", - "thiserror", + "num-traits", ] [[package]] @@ -1071,9 +1071,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" +checksum = "39a69c7c189ae418f83003da62820aca28d15a07725ce51fb924999335d622ff" dependencies = [ "libc", ] @@ -1656,7 +1656,7 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.0", + "memmap2 0.9.2", "rustix", "thiserror", "wayland-backend", @@ -1750,18 +1750,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", @@ -2507,7 +2507,7 @@ dependencies = [ "js-sys", "libc", "log", - "memmap2 0.9.0", + "memmap2 0.9.2", "ndk", "ndk-sys", "objc2", @@ -2631,18 +2631,18 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.7.30" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.30" +version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 29d0d279a..13a6ba058 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kludgine" -version = "0.1.0" +version = "0.6.0" edition = "2021" [features] diff --git a/README.md b/README.md index e9412f57d..e9e64494b 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,41 @@ -# Kludgine (Redux) +# Kludgine -This branch is a rewrite of Kludgine. See the [v0.5.0 tag][v0.5] for the -currently released source. +![Kludgine is considered alpha and unsupported](https://img.shields.io/badge/status-alpha-orange) +[![crate version](https://img.shields.io/crates/v/kludgine.svg)](https://crates.io/crates/kludgine) +[![Documentation for `main` branch](https://img.shields.io/badge/docs-main-informational)](https://khonsulabs.github.io/kludgine/main/kludgine) Kludgine aims to be a lightweight, efficient 2d rendering framework powered by [wgpu][wgpu]. Its name Kludgine is named in a way to hopefully be ironic in -nature, but it's being designed and written by a developer that is fairly new to -modern graphics programming and rust. Thus, it is probably a [kludge][kludge]. +nature, but it's being designed and written by a developer that was fairly new +to modern graphics programming and Rust. Thus, it is probably a +[kludge][kludge]. Without the `app` feature enabled, Kludgine provides an API inspired by wgpu's [Encapsulating Graphics Work][encapsulating] article. -TODO create an embedded wgpu example - With the `app` feature enabled, Kludgine provides an easy-to-use API for running multi-window applications. -The API is still a work in progress. The [`examples`][examples] folder contains many -examples that highlight a specific feature. +The API is still a work in progress. The [`examples`][examples] folder contains +many examples that highlight a specific feature. + +## Project Status + +This project is early in development as part of [Gooey][gooey]. It is considered +alpha and unsupported at this time, and the primary focus for [@ecton][ecton] is +to use this for his own projects. Feature requests and bug fixes will be +prioritized based on @ecton's own needs. + +If you would like to contribute, bug fixes are always appreciated. Before +working on a new feature, please [open an issue][issues] proposing the feature +and problem it aims to solve. Doing so will help prevent friction in merging +pull requests, as it ensures changes fit the vision the maintainers have for +Gooey. + +[gooey]: https://github.com/khonsulabs/gooey +[ecton]: https://github.com/khonsulabs/ecton +[issues]: https://github.com/khonsulabs/gooey/issues -[v0.5]: https://github.com/khonsulabs/kludgine/tree/v0.5.0 [wgpu]: https://github.com/gfx-rs/wgpu [kludge]: https://en.wikipedia.org/wiki/Kludge [encapsulating]: https://github.com/gfx-rs/wgpu/wiki/Encapsulating-Graphics-Work