|
| 1 | +# Release 0.3 |
| 2 | + |
| 3 | +## Enhancements |
| 4 | + |
| 5 | +Added `PowI` and `Sqrt` math noise functions. |
| 6 | + |
| 7 | +Upgraded to Bevy 0.17. |
| 8 | + |
| 9 | +## Bug Fixes |
| 10 | + |
| 11 | +Fixed some places where float operations did not use the proper backend. |
| 12 | +This is unlikely to have affected anyone but is fixed now. |
| 13 | + |
| 14 | +Fixed voronoi graphs not reporting correct values for worley noise. |
| 15 | +This was causing noise values to not be properly normalized for some values of voronoi randomness. |
| 16 | +Fixing this decreased the average brightness/value of some worley modes. |
| 17 | +If you would prefer to increase the value to match the behavior in 0.2, the noise can still be scaled afterwards. |
| 18 | + |
| 19 | +## Migration Guide |
| 20 | + |
| 21 | +In theory, if it compiled for 0.2, 0.3 should also compile (aside from any Bevy-related changes). |
| 22 | +If you run into any trouble migrating, please let me know. |
| 23 | + |
| 24 | +## What's next |
| 25 | + |
| 26 | +It's hard to predict the future here, as I have limited time, and lots of my ideas here depend on other projects. |
| 27 | +However, there are some things I'd like to explore for the future: |
| 28 | + |
| 29 | +- 64 bit support: Noiz is powered by bevy_math, which is growing to support 64 bit precision. |
| 30 | +When that work is complete, Noiz will upgrade to support `f64` based inputs and outputs. |
| 31 | +Currently, this is blocked by Bevy's `Curve` trait. |
| 32 | +- even faster: Rust 1.88 brought support for fast-math, offering some insane performance opportunities at the cost of precision. |
| 33 | +However, this feature is not completely stable and definitely has downsides. Plus, `glam` would need to add support for it first. |
| 34 | +- Other rng backends: Noiz is powered by a *very* specialized and optimized random number generator. |
| 35 | +Some power users may want to make their own generators to either sacrifice quality for speed or speed for quality. |
| 36 | +- GPU support: This is especially tricky to think about. |
| 37 | +Some forms of noise don't even make sense on the GPU (but lots do!). |
| 38 | +As projects like WESL and rust GPU make more progress, I'd like to explore getting Noiz on the GPU. |
| 39 | +I have spent some time looking at options for implementations, and I do not see this happening any time soon, unfortunately. |
| 40 | +- Reflection noise types: As bevy editor prototypes and progress continues, making the noise types more customizable and changeable at runtime is important. |
| 41 | +Adding more reflection support will help with this. |
| 42 | +I have looked at this a lot, even with the help of some users, and I also don't see this coming any time soon. But we'll see. |
| 43 | + |
| 44 | +If you have any other requests, please open an issue or PR! |
| 45 | +Feedback is always welcome as I work to make this the "go to" noise library for bevy and rust. |
| 46 | + |
| 47 | +# Limited development |
| 48 | + |
| 49 | +Please note that while all of these features are on my list, most of them are blocked externally. |
| 50 | +I am also working on a number of other very exciting projects, so Noiz is (for now) being more maintained than developed. |
| 51 | + |
| 52 | +Noiz is fast because everything is monomorphized and inlined at compile time. |
| 53 | +However, on some platforms, rust does not fully use SIMD. |
| 54 | +There is room for another noise library to support fully dynamic noise with manually implemented SIMD optimizations. |
| 55 | +Such a library would likely out perform Noiz for large blocks of samples but under perform for specific samples or samples that can not be placed on a grid. |
| 56 | +This is one of the projects I'd like to work on, and there are many more. |
0 commit comments