c6f6266a38
Added timer output so you can see how long things take.
2016-07-31 12:05:28 -07:00
024437c657
Updated todo.
2016-07-31 11:49:53 -07:00
d12b76a933
Minor tweak to horizontal add and multiply for Float4.
...
In theory this should make it more pipeline-able.
2016-07-31 11:49:01 -07:00
b4939f88c8
Silence some warnings.
2016-07-31 11:19:30 -07:00
3e7b142cd8
Implemented light tree sampling, for better sampling of many lights.
2016-07-31 11:14:33 -07:00
1f94791b6b
Moved SAH splitting code into its own function.
...
This is in prep for the light tree, where we'll want to use that
code.
2016-07-30 21:20:01 -07:00
2b05f65024
Updated dependencies.
2016-07-30 20:23:20 -07:00
06b76ddb6c
Fixed bug in PsychoBlend.
...
On some systems Python would complain about the "progress"
variable being accessed without it existing yet. Weird. But
this fixes it.
2016-07-30 19:41:51 -07:00
7ef5846c89
Got rid of indexing into Float4 and 3d vector elements.
...
This assures correct semantics for SIMD usage.
2016-07-30 19:36:54 -07:00
378f69dd57
Render progress bar is now updated when rendering in Blender.
2016-07-21 23:45:42 -07:00
e4c94d0c58
Optional use of SIMD intrinsics, via feature in cargo.
...
This is disabled by default right now, because it only builds on
nightly.
2016-07-16 19:58:39 -07:00
4db96bc758
Use simple if-statement-based min/max functions in hot code.
...
Again, for whatever reason this is notably faster than the stdlib
min/max functions.
2016-07-16 17:55:18 -07:00
7401c6fb99
Use fast approximate exp functions for XYZ color curves.
...
This brings a significant performance improvement, and doesn't
appear to have any visual impact.
2016-07-16 17:53:50 -07:00
177bb95eff
Got rid of UnsafeCell in Tracer.
...
To do this, I moved the accel rays into an outer struct, which
then calls the main tracing code as an inner struct.
2016-07-16 16:26:34 -07:00
1571c1634e
Sped up min and max functions in Float4.
...
Turns out that the standard min/max functions were slow for
some reason, and simple if statements are much faster. This
simple change improves render times by over 30%. Crazy.
2016-07-16 15:56:14 -07:00
76f074f866
Added a TODO comment.
2016-07-16 15:10:07 -07:00
ec75f11206
Render buckets in hilbert curve order.
...
Provides a slight speed-up.
2016-07-16 14:53:03 -07:00
5bc97f69b8
Actually use the background color from the scene file.
2016-07-16 13:54:41 -07:00
8cd445813a
Removed some dead code.
2016-07-16 13:36:34 -07:00
9d47dfdeb2
Forgot one place where bounds need to be merged for motion blur.
2016-07-16 12:28:08 -07:00
2e3851837d
Implemented SAH splitting for the BVH. Also fixed crash bug.
...
The bug was in the previous commit, where I thought I was
preventing out-of-bounds access during traversal by limiting
the tree depth. While the idea was correct, I forgot that the
traversal stack needs _2_ extra slots on top of the tree depth,
not just 1. Fixed.
2016-07-16 03:21:57 -07:00
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