35ef58b09c
Special case BVH building when we get too close to max depth.
...
This avoids exceeding max BVH depth even in pathological cases.
Still need improve non-worst case building, but this at least
prevents crashes in worst case.
2016-07-16 00:05:23 -07:00
c372d485e2
Fix bug in PsychoBlend where render hangs.
...
This was because it was taking the standard input from Psychopath,
but was buffering it and not reading it. The percentage complete
printouts would fill the buffer in some cases, and cause the
process to not exit since not all stdout had been handled.
2016-07-10 19:31:26 -07:00
e2ef44f666
Finished implementing motion blur.
2016-07-10 19:20:37 -07:00
c2eb421fd8
Actually use seed in renders.
...
This is important for animations, where you don't want the same
noise pattern every frame.
2016-07-10 17:56:42 -07:00
e4f9a54e48
Leave console output on a newline.
2016-07-10 17:47:28 -07:00
c466e46138
Make BVH traversal stack bigger.
...
This is a stop-gap for a less-than ideal BVH construction. It
should be reduced again once the BVH building is made less stupid.
2016-07-10 17:45:10 -07:00
5b461220a5
PsychoBlend now exports meshes as meshes, and Psychopath renders to PNGs.
2016-07-10 17:42:28 -07:00
43f2a77264
Added PsychoBlend exporter to repo.
2016-07-10 17:03:50 -07:00
e8ee371423
Silence some warnings.
2016-07-10 16:46:14 -07:00
da46878243
Print render progress and auto-determine bucket size.
...
The bucket size is automatically determined based on a target
number of samples per bucket.
2016-07-10 16:40:30 -07:00
5df583c2d0
Multiple light sources are now handled.
2016-07-10 00:10:49 -07:00
9c8797ffd8
Forgot to do top-level ray splitting.
2016-07-07 23:47:44 -07:00
00f8056bdb
Updated todo.txt
2016-07-07 23:40:00 -07:00
aff8d24f55
Fixed some bugs where instances without transforms would crash.
2016-07-07 23:32:19 -07:00
3ef84f9f5f
Split rays by direction so they can follow their ideal traversal order.
2016-07-07 21:50:03 -07:00
0880a0f19d
Make renderer actually use the material system properly.
...
The intersection code still isn't using any kind of shading,
and materials aren't parsed by the parser, but the renderer
class itself is using them.
2016-07-07 19:51:19 -07:00
543f2719e4
Fixed bugs in global illumination.
...
It was a stupid thing in the Lambert closure. It was returning
the wrong direction vector.
2016-07-04 11:54:46 -07:00
a8324669cc
Fixed possible out-of-bounds panic in XYZ -> Spectrum code.
2016-07-04 01:26:28 -07:00
e56ac418da
Beginnings of global illumination.
...
There are still some obvious bugs in it that I haven't tracked down,
so the renders aren't correct yet.
2016-07-03 01:18:50 -07:00
6e8f0894fd
Image struct can now dole out buckets in a thread-safe way.
...
This avoids the whole-image locking that was being done before,
which was causing a lot of thread contention.
2016-07-02 16:27:19 -07:00
02a0740cac
More proper use of light sources.
2016-07-01 00:00:38 -07:00
24cbdb5ab9
Fixed bug in ray/triangle intersection code.
...
It was counting intersections behind the ray.
2016-06-30 19:33:44 -07:00
f927dd0d46
Silencing a bunch of compiler warnings.
2016-06-29 15:23:07 -07:00
f1df7a3b1a
Slight tweak to how ray offsets are done.
2016-06-29 15:00:44 -07:00
52acee33af
Implemented rectangular area lights.
...
Also added Cornell Box test scene.
2016-06-29 14:30:42 -07:00
fd195576d1
First renders with lighting. Yay!
...
The lighting is super crappy, and pretty much hacked in. Will
need to redo this properly soon. However, this verifies that
certain other parts of the code are (mostly) working properly.
2016-06-27 23:16:39 -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
6f6807009b
Prepping for adding lighting.
...
The part of the renderer responsible for light transport has been
split out into a LightPath struct. Also moving over to spectral
rendering, although it's a bit silly at the moment.
2016-06-26 23:08:24 -07:00
f7e57f2aee
Scenes with lights now get parsed correctly.
2016-06-25 22:49:40 -07:00
c2d36e0d14
Beginnings of parsing sphere lights.
2016-06-23 20:46:57 -07:00
1cbf20e67f
Beginnings of light sources. Yay!
2016-06-19 14:32:13 -07:00
d14e2c93b7
Converted Image over to store renders in XYZ colorspace.
2016-06-18 18:08:35 -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
e2954ba5b0
Added more code for handling XYZ color and spectral samples.
2016-06-08 23:00:09 -07:00
61e3d47f56
Changed BBox/Ray intersection code to use more simd ops.
...
This, of course, depends on the simd ops being there, which
currently they are not. But in the future, hopefully this will
make things speedy. Will need to test, of course.
2016-06-08 22:57:22 -07:00
890c04c44a
Added XYZ color spectrum sampling code.
...
This will be critical for spectral rendering, whenever I get
around to it.
2016-06-07 08:14:19 -07:00
0b5a3de2dd
Added command line flag to set number of render threads.
2016-06-05 10:08:27 -07:00
5ec1f534cf
Implemented bucketed rendering.
2016-06-05 01:27:55 -07:00
4493afd85b
Updated todo.txt
2016-06-03 21:05:52 -07:00
a681ba461e
Implemented basic multi-threaded rendering.
...
It's a bit inefficient because a thread is spawned for each pixel.
Need to implement bucketing.
2016-06-03 21:03:04 -07:00
fac46d6db3
Added gitignore for test_renders directory.
2016-06-03 18:15:48 -07:00
06c377ca10
Updated todo.
2016-06-02 23:06:48 -07:00
43c5a94ebb
Cleaned up command line options. Removed old procedural scene code.
2016-06-02 23:00:31 -07:00
039943e0cb
Auto-formatting code with new version of rustfmt.
2016-06-02 22:43:35 -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
a467a2a959
Updated Cargo.lock dependencies.
2016-06-02 22:30:10 -07:00
848d0afd40
Some minor code formatting cleanup and debug printing.
2016-05-28 14:35:37 -07:00
ef31093dcb
Split xform stack out into its own type.
...
This is mainly just to make the tracer code read more cleanly.
All of the pushing and popping logic obscured the big picture
and made things a bit confusing.
2016-05-28 14:15:05 -07:00
56b5267b7a
Fixed incorrect rendering angle.
...
The problem was in how the camera rays were generated.
2016-05-28 13:05:16 -07:00
1e93e53822
Mixed matrix parsing, and strip quotes from file path in parsing.
2016-05-28 01:24:58 -07:00