Comments (5)
There is one largish change I have in mind for glam before calling it 1.0 but I need to find the time to experiment with it, write it up and discuss with the community. One that happens (or the idea is rejected by the community) then I think I could call it 1.0.
from glam-rs.
In short I'm looking at moving away to defaulting some types to using SIMD registers and requiring 16 byte alignment and instead making separate explicit types for that. There are a bunch of reasons why. I'll talk about it more once I've had time to collect my thoughts and written about it, I doubt it will break much existing code.
from glam-rs.
It's hard to think of any change that would justify the massive efforts required in other crates for a breaking change.
from glam-rs.
I spent some time working on this idea of splitting types into explicit float and SIMD versions, much like Vec3 and Vec3A but for all of the other types that use SIMD, e.g. splitting Vec4 into Vec4 and Vec4A and so on. For anyone who is interested the changes are here main...experimental. I was attempting to modify a fork of bevy to use this branch which made it pretty clear that this would be quite a disruptive change, so I have backed away from this idea. It also introduces way more types to glam.
The reason I was considering it in the first place is there is a cost to many types being 16 byte aligned and it is not always clear that the benefits outweigh this cost. In microbenchmarks they do but microbenchmarks are not representative of real game code.
In any case, people seem largely happy with glam as it is and as you say many projects depend on it, so I think it's best to not make any large changes at this point. Now that I've finished with the aarch64 neon work I'll focus on getting to 1.0, which will mostly involve making sure any outstanding issues that would be breaking changes are done before then.
from glam-rs.
Thanks. That's probably a good decision at this point. Churn in low-level crates forces churn in other crates.
from glam-rs.
Related Issues (20)
- Vec2::fract() with negative numbers is inconsistent with f32::fract() HOT 5
- Quat::to_euler outputs bigger than PI * 2 at certain angles HOT 13
- Possible Incompleteness HOT 1
- Quat::from_euler truncates rotations to a single rotation HOT 2
- Multiply BVecN and VecN? Implement Into/From for BVecN to VecN with 1.0:s and 0.0:s HOT 1
- Quat / Euler tests fail on Apple Silicon HOT 11
- IVec2 and similar types should be Ord. HOT 1
- Extend `.normalize()` etc. to work for more values HOT 2
- Vec2/3's `angle_between` function is unclear/misleading HOT 16
- Vec2 clamp_length alters vector when length is within specified range HOT 5
- Mutable Swizzles HOT 3
- Inconsistent/missing scalar implementation of le/ge functions for Vec3A compared to sse2 HOT 2
- Any ambitions to implement static comma vectors? HOT 1
- impl From<Vec4> for Vec3A violates conversion is lossless contract
- Batched transforms
- Add methods for swing-twist decomposition to `Quat` HOT 2
- Add helper function to project one vector to a plane HOT 5
- Add `fast_normalize` to `Quat` (and maybe other types) HOT 5
- Feature flag for repr(C) Quat HOT 8
- Make `Vec3A::from_vec4` const HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from glam-rs.