]>
git.nega.tv - josh/narcissus/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Joshua Simmons [Sun, 16 Oct 2022 21:41:28 +0000 (23:41 +0200)]
Implement some more maths basics
Joshua Simmons [Sun, 16 Oct 2022 15:34:01 +0000 (17:34 +0200)]
Fix errors in `sin/cos/tan` exhaustive checking
Add fractional ulps error calculation.
Fix where the multiplication by pi happens in checking code.
Replace rug with small hand-rolled mpfr wrapper.
Joshua Simmons [Sat, 15 Oct 2022 21:35:14 +0000 (23:35 +0200)]
Improve `mod_inverse_u32` testing
Joshua Simmons [Sat, 15 Oct 2022 21:34:23 +0000 (23:34 +0200)]
Fix some edge case handling in `sin_cos_pi`
Update tests as well.
Joshua Simmons [Sat, 15 Oct 2022 13:32:22 +0000 (15:32 +0200)]
Add some new maths functions
Add `{sin,cos,tan}_pi_f32` functions.
Add `next_after_f32`.
Add `HalfTurns` unit type.
Switch `Mat4` to use turns and `sin_cos_pi_f32`.
Joshua Simmons [Sat, 8 Oct 2022 11:03:44 +0000 (13:03 +0200)]
Improve pool implementation
Move virtual memory failures into the `virtual_reserve` and
`virtual_commit` signatures so we can give better assert messages on
failure.
Handle growth more accurately, allowing us to use the entire table
capacity before asserting.
Reserve a bit in the generation counter to keep track of whether a slot
is full by incrementing the counter on both allocation and deallocation.
This means exported handles can only ever have an odd generation
counter.
Assert when given a handle that has an invalid generation counter
(where the counter implies it would be pointing to an empty slot).
Both above changes together means it's no longer possible to create a
reference to an uninitialized slot, even when manually messing with the
handle or mixing handles between different pools.
Joshua Simmons [Sat, 8 Oct 2022 11:00:54 +0000 (13:00 +0200)]
Always panic when failing to drop a `ManualArc`
Hopefully the optimiser can nuke the branch most of the time.
Joshua Simmons [Thu, 6 Oct 2022 21:52:46 +0000 (23:52 +0200)]
Fix log2 off-by-one error
Joshua Simmons [Thu, 6 Oct 2022 21:28:20 +0000 (23:28 +0200)]
Remove useless commented code
Joshua Simmons [Thu, 6 Oct 2022 20:59:29 +0000 (22:59 +0200)]
Replace magic value in pool with random mixer
Instead of using a 4 bit magic number, and consequently restricting the
size of the pool, instead mix handles with a per-pool random integer
based on the pool's base memory address.
The associated tests will perhaps be a bit flaky, so disable them by
default.
Joshua Simmons [Thu, 6 Oct 2022 19:45:24 +0000 (21:45 +0200)]
Add multiplicative inverse and log2 functions
Joshua Simmons [Sun, 2 Oct 2022 13:09:07 +0000 (15:09 +0200)]
Fix remaining clippy lints
Joshua Simmons [Sun, 2 Oct 2022 11:29:41 +0000 (13:29 +0200)]
Fix warning caused by ManualArc API change
Joshua Simmons [Sun, 2 Oct 2022 11:26:06 +0000 (13:26 +0200)]
Improve API of `ManualArc`
Consume the ManualArc when calling `release` to avoid needing to handle
double-free. Avoids unsafety in user code (was only protected by a debug
assert before)
Add some very basic documentation.
Joshua Simmons [Sun, 2 Oct 2022 11:24:46 +0000 (13:24 +0200)]
Remove some unused functions
Joshua Simmons [Sun, 25 Sep 2022 19:26:08 +0000 (21:26 +0200)]
Simplify main and add some 🦈 stuff
Joshua Simmons [Sun, 25 Sep 2022 19:25:35 +0000 (21:25 +0200)]
Switch back to O0 for debug mode
Joshua Simmons [Sun, 25 Sep 2022 19:24:52 +0000 (21:24 +0200)]
Add `Debug` implementation for `Window`
Josh Simmons [Sun, 25 Sep 2022 16:00:13 +0000 (18:00 +0200)]
Update apt cache before installing deps
apt-get install will randomly fail if you don't update the cache beforehand.
Joshua Simmons [Sun, 25 Sep 2022 15:10:09 +0000 (17:10 +0200)]
Improve perf of obj parser
Joshua Simmons [Sun, 25 Sep 2022 12:13:41 +0000 (14:13 +0200)]
Fix some clippy lints and doc errors
Joshua Simmons [Sun, 25 Sep 2022 12:13:10 +0000 (14:13 +0200)]
Fix some clippy lints
Joshua Simmons [Sun, 25 Sep 2022 12:05:42 +0000 (14:05 +0200)]
Fix doc-tests for `array_windows`
Joshua Simmons [Sun, 25 Sep 2022 11:54:06 +0000 (13:54 +0200)]
Add a basic obj file parser
Joshua Simmons [Sun, 25 Sep 2022 11:53:10 +0000 (13:53 +0200)]
Add `slice::array_windows` from std library
Joshua Simmons [Sat, 17 Sep 2022 10:07:39 +0000 (12:07 +0200)]
Add blåhaj
Created by [twitter.com/IsabelleDotJpeg](https://twitter.com/IsabelleDotJpeg)
Joshua Simmons [Sat, 17 Sep 2022 10:04:27 +0000 (12:04 +0200)]
Add basic safe wrapper for stb_image
Joshua Simmons [Sat, 17 Sep 2022 10:02:36 +0000 (12:02 +0200)]
Update `Cargo.lock` after removing libc dependency
Joshua Simmons [Mon, 12 Sep 2022 20:39:15 +0000 (22:39 +0200)]
Replace libc crate with a budget version
Try to improve compile times by copy-pasting the handful of libc
definitions that we actually need. This is going to be a bit broken for
non-x86_64 platforms for now.
Joshua Simmons [Mon, 12 Sep 2022 20:35:47 +0000 (22:35 +0200)]
Fix some clippy lints for pool
Joshua Simmons [Sun, 11 Sep 2022 21:04:50 +0000 (23:04 +0200)]
Add llvm to the github actions dependencies
Joshua Simmons [Sun, 11 Sep 2022 21:02:22 +0000 (23:02 +0200)]
Add clang to the github actions dependencies
Joshua Simmons [Sun, 11 Sep 2022 20:57:03 +0000 (22:57 +0200)]
Add stb_image binding
Joshua Simmons [Sun, 11 Sep 2022 18:19:04 +0000 (20:19 +0200)]
Move binding libraries to ffi directory
Joshua Simmons [Sun, 11 Sep 2022 14:04:19 +0000 (16:04 +0200)]
Add Mat4 `look_at`, `ortho` and `perspective` fn's
Joshua Simmons [Sun, 11 Sep 2022 14:02:52 +0000 (16:02 +0200)]
Add point -> vector conversion functions
Joshua Simmons [Sun, 11 Sep 2022 14:01:51 +0000 (16:01 +0200)]
Add `normalized` function to vectors
Joshua Simmons [Sat, 10 Sep 2022 10:16:48 +0000 (12:16 +0200)]
Improve `min`, `max` on ARM, and fix documentation
Use regular `f32::min` and `f32::max` for non-x86 platforms. Allows arm
to generate `fminnm`.
Improve documentation of platform specific behavior of `min` and `max`.
Add note about `sqrt` operation to `_sq` functions.
Joshua Simmons [Thu, 8 Sep 2022 20:46:38 +0000 (22:46 +0200)]
Fill out `Mat2` and `Mat3` some more
Joshua Simmons [Thu, 8 Sep 2022 19:13:44 +0000 (21:13 +0200)]
Improve documentation for maths library
Joshua Simmons [Thu, 8 Sep 2022 19:12:03 +0000 (21:12 +0200)]
Fix braces causing a rustdoc error
Joshua Simmons [Thu, 8 Sep 2022 16:55:24 +0000 (18:55 +0200)]
Switch thread token to `std::array::from_fn`
Joshua Simmons [Thu, 8 Sep 2022 06:51:34 +0000 (08:51 +0200)]
Add `min`, `max` and `clamp` functions
Joshua Simmons [Wed, 7 Sep 2022 21:54:57 +0000 (23:54 +0200)]
Fix some clippy lints
Joshua Simmons [Wed, 7 Sep 2022 20:58:21 +0000 (22:58 +0200)]
Implement `from_axis_angle` for `Mat4`
Joshua Simmons [Wed, 7 Sep 2022 20:57:17 +0000 (22:57 +0200)]
Add missing axis vectors for `Vec3`
Joshua Simmons [Wed, 7 Sep 2022 20:55:41 +0000 (22:55 +0200)]
Add extra vector operators
Add Add/Sub/Mul/Div by scalar
Add Neg
Joshua Simmons [Wed, 7 Sep 2022 20:53:40 +0000 (22:53 +0200)]
Add unit types for degrees and radians
Joshua Simmons [Tue, 6 Sep 2022 21:43:38 +0000 (23:43 +0200)]
Rework maths library
Split into multiple files.
Add `Affine2` and `Affine3` transformation types.
Add `Point2` and `Point3` types.
Use macro instead of repeating basic `Point` and `Vec` implementation.
Change `Mat4 * Point` to use homogeneous coordinates where `w=1`.
Change `Mat4 * Vec` to use homogeneous coordinates where `w=0`.
Joshua Simmons [Tue, 6 Sep 2022 07:18:41 +0000 (09:18 +0200)]
Add `from_translation` to `Mat4` and tidy tests
Joshua Simmons [Tue, 6 Sep 2022 07:17:41 +0000 (09:17 +0200)]
Add `ONE` associated consts to vector types
Joshua Simmons [Mon, 5 Sep 2022 21:39:59 +0000 (23:39 +0200)]
Add SDL2 dependency to github workflow
Joshua Simmons [Mon, 5 Sep 2022 21:35:59 +0000 (23:35 +0200)]
Avoid hardcoding the path to the mold linker
Josh Simmons [Mon, 5 Sep 2022 21:32:42 +0000 (23:32 +0200)]
Add mold to github workflow
Josh Simmons [Mon, 5 Sep 2022 21:28:07 +0000 (23:28 +0200)]
Create rust workflow
Joshua Simmons [Mon, 5 Sep 2022 21:24:49 +0000 (23:24 +0200)]
Split maths library into multiple modules
Joshua Simmons [Mon, 5 Sep 2022 06:40:33 +0000 (08:40 +0200)]
Rename `virtual_vec` inner types
Remove `virtual` from the inner module names to avoid repetition.
Rename `RawVirtualVec` to `VirtualRawVec` so it's more consistent.
Joshua Simmons [Sun, 4 Sep 2022 21:05:10 +0000 (23:05 +0200)]
Update build script profile defaults
Add optimizations to debug build.
Add LTO to release build.
Joshua Simmons [Sun, 4 Sep 2022 21:03:50 +0000 (23:03 +0200)]
Add maths dependency to narcissus
Joshua Simmons [Sun, 4 Sep 2022 21:01:33 +0000 (23:01 +0200)]
Start implementing basic maths functions
Joshua Simmons [Sun, 4 Sep 2022 11:06:33 +0000 (13:06 +0200)]
Replace `make_array` with `std::array::from_fn`
Joshua Simmons [Tue, 30 Aug 2022 05:25:30 +0000 (07:25 +0200)]
[narc-gpu] Remove unnecessary unsafe block
Joshua Simmons [Tue, 30 Aug 2022 05:23:39 +0000 (07:23 +0200)]
[vulkan-sys] Add implicit unsafe to vk_check macro
Unifies it with the narcissus-gpu version.
Joshua Simmons [Mon, 29 Aug 2022 06:38:07 +0000 (08:38 +0200)]
Use &CStr for `get_instance_proc_address`
Josh Simmons [Sun, 28 Aug 2022 10:05:16 +0000 (12:05 +0200)]
Create LICENCE
Joshua Simmons [Sat, 22 Jan 2022 20:36:05 +0000 (21:36 +0100)]
Initial Commit