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