|
![](/i/fill.gif) |
Ray Bellis wrote:
> Yes - yours was the inspiration for my work.
We both have to thank Fidos for path tracing inspiration! I immediately
got interested when he posted the images on this news server.
> So far mine only does spheres and planes, though.
I also have only a few objects. So much to do even with those only.
> However I've abstracted out a lot of stuff so that new shading algorithms
> can be implemented as a standalone Java class.
Sounds a good approach. I started this project cause I wanted to learn
some C++ (and OO programming). So you can imagine I have re-structured
my code quite a bit.
> It's also fully multithreaded :). Bizarrely the JRE on MacOSX seems
> *really* fast compared to other O/S. On my MacBook Pro with a Core2Duo I
> get better performance than on my 3.0 GHz Core2Quad XP machine, and only
> slightly worse performance than on the 16 core Opteron server at work.
That kinda sucks if the differences are big. I don't know Java but it
sounds off if multithread performance on XP is significantly slower.
> For anti-aliasing I do multiple passes, just throwing rays in at completely
> random coordinates.
Yeah. That works well. You can improve it (and many other random things)
by not choosing totally random samples but using some pseudo-random
sampling that gives more evenly spread samples.
I'm now implementing direct lighting calculations. The results are
impressive. So instead of just letting rays bounce randomly and hoping
that they hit a light source, I now evaluate direct lighting component
at each bounce. The result is that the noise reduces A LOT faster. If
the light sources are small, the difference gets bigger. If I used point
light sources, my original program would never hit them.
Still some nasty bugs I have to figure out but this one is a keeper. The
downside is that I have no idea if I can implement this feature for any
kind (shape) of light source. Now it works for spheres as it is easy to
calculate the solid angle. We'll see...
Severi
Post a reply to this message
|
![](/i/fill.gif) |