Commit Graph

33 Commits

Author SHA1 Message Date
e0ee0d6dff Change to using a dedicated affine transform type.
This lets certain operations, especially matrix inversion, be
quite a bit faster.  And we don't need anything beyond affine
transformations anyway.
2021-05-14 13:30:28 -07:00
e6f9af9336 Update to latest glam. 2021-05-14 12:22:46 -07:00
f42eedfd08 Make better use of the types in the glam crate.
Appears to give a tiny performance boost.
2019-07-25 11:36:52 +09:00
88e7365bc4 Switched from in-tree float4 lib to glam. 2019-07-22 22:30:37 +09:00
4f7335db8c Misc optimizations that add up to a nice speed boost. 2019-06-29 14:20:32 +09:00
2a0ca001e2 Optimized ray stack task duplication with memcopy. 2019-06-29 12:39:28 +09:00
4ef376dc89 Move multiple-object logic out of BVH4.
This allows each part of Psychopath tp handle the logic in the
best way, instead of a one-size-fits-all approach.
2019-06-29 08:28:41 +09:00
b09f9684d1 Remove non-SIMD BVH4, and keep more bool calculations in SIMD format. 2019-06-29 07:22:22 +09:00
2fddcae0fd Reduced the size of a hot return value.
Gives a small performance boost.
2019-06-28 22:22:41 +09:00
aed0f2ede1 Implemented a SIMD version of the BVH4.
It does indeed appear to be faster with this style of traversal!
2019-06-28 21:57:29 +09:00
50f9fd851b Improved ray batch data layout.
Gives a small performance boost.
2019-06-25 18:49:10 +09:00
5dd8eb919b Changed ray batch data access to be through methods.
This is (potentially) just temporary.  It's to make it a bit easier
to play with data layout to see how that affects performance.
2019-06-25 17:31:51 +09:00
eef29c2b2f Type alias for the ray index type.
Makes things easier to play with.
2019-06-23 19:26:30 +09:00
630a79aca5 Initial implementation of ORST traversal.
This is a "just get it working" implementation.  Performance
optimizations still need to be done.
2019-06-23 18:40:52 +09:00
1a29b16aa2 Sketching out the structures for ray traversal tracking. 2019-06-22 04:19:55 +09:00
3d4ac7f57b Created a RayBatch type, which stores multiple rays is SoA layout. 2019-06-21 23:02:44 +09:00
28a07de456 Improve module path usage and remove extern crate declarations where possible. 2018-12-16 13:02:49 -08:00
8deb1e87bb First step transitioning to Rust 2018. 2018-12-16 12:02:20 -08:00
989914b878 Use Float4::splat() in AccelRay methods. 2018-06-29 17:28:39 -07:00
97d3304149 Run new rustfmt on codebase. 2018-03-04 13:00:55 -08:00
f4d4152543 Some refactoring in preparation for a material system.
The main change is that SurfaceClosures now have the hero
wavelength baked into them.  Since surface closures come from
surface intersections, and intersections are always specific to
a ray or path, and rays/paths have a fixed wavelength, it doesn't
make sense for the surface closure to constantly be converting
from a more general color representation to spectral samples
whenever its used.

This is also nice because it keeps surface closures removed from
any particular representation of color.  All color space handling
etc. can be kept inside the shaders.
2017-08-03 16:16:36 -07:00
172e2f19ef Removed BVH4 and the related bitstack from AccelRay.
I couldn't make the BVH4 faster than the BVH, and the bitstack
was bloating the AccelRay struct.  Removing the bitstack gives
a small but noticable speedup in rendering.
2017-05-12 21:07:40 -07:00
53a14996c9 Completed first attempt at implementing BVH4.
Completely untested, so almost certainly non-functional.  But it
compiles!
2017-04-12 23:33:34 -07:00
c05bae2636 Created a BitStack128 type and added it to Ray.
This will be used for BVH4 traversal.
2017-04-11 11:13:23 -07:00
97b5ef77f8 Code cosmetics: organize and alphabetize crate/mod/use statements. 2016-08-20 18:10:55 -07:00
3b85b60a62 Implemented occlusion rays.
This is prep for lighting support: occlusion rays are useful for
speedier shadow tests.
2016-06-27 21:01:18 -07:00
18245b725c All final intersections are now done in world space.
BVH traversal still happens in local space, but final actual
surface intersection calculations are done in world space by
transforming the triangle into world space.  This is to improve
numerical consistency between intersections.
2016-06-09 01:04:12 -07:00
c3d3145817 Fixed bug in ray intersection code.
The max_t was getting overwritten during transforms.
2016-06-02 22:36:02 -07:00
7c5c2e4308 Implemented a Camera type. 2016-01-02 20:27:53 -08:00
eaeec4c207 BVH now works on slices of Rays, taking a breadth-first approach. 2015-12-31 13:12:15 -08:00
7f7870534c Implemented a very basic BVH for lists of triangles.
This isn't a good implementation by any means.  It's just to get
things started.
2015-12-29 16:56:33 -08:00
81dc3d14a8 Fleshed out Ray a bit more. 2015-12-27 00:50:18 -08:00
3f614f3728 Added command line parsing and PPM image writing.
Also the beginnings of a Ray struct.
2015-12-27 00:13:35 -08:00