Search - User list
Full Version: SOP Raytrace
Root » Work in Progress » SOP Raytrace
animatrix_


Inspired from Psyop Softimage ICE Workshop by Jonah Friedman.
neil_math_comp
Cool!

Maybe it's my paranoia from doing it wrong so many times, but is there correlation between those random values on subsequent bounces? It kind of looks like there might be, but it's hard to tell for sure without checking it over myself. If there is, you have to make sure that each ray's BSDF sampling seeds are unique (or alternatively, independent) from all other seeds, else you can end up with nasty biases, Moiré patterns, or poor convergence.
KMcNamara
Very neat to visualize 8)
animatrix_
Thanks guys.

ndickson
Maybe it's my paranoia from doing it wrong so many times, but is there correlation between those random values on subsequent bounces? It kind of looks like there might be, but it's hard to tell for sure without checking it over myself. If there is, you have to make sure that each ray's BSDF sampling seeds are unique (or alternatively, independent) from all other seeds, else you can end up with nasty biases, Moiré patterns, or poor convergence.

Good eye I wasn't using very unique seeds for each subsequent ray where the seeds were also using the same values.

Basically at each depth, I go through the array of rays and then create a new array of N randomized rays based on the original, where N is the number of splits for each ray.

int count = 0;
int count = 1;
while loop
{
for every ray …
{
for ( int f = 0; f < chi(“rays”); ++f )
{
vector nn = randomizeVectorByCone ( p, n, 0, ch(“angle”), f + ch(“seed”) * 10, 0, 2 );
}
}
}

Now I changed it to this:

while loop
{
for every ray …
{
for ( int f = 0; f < chi(“rays”); ++f )
{
vector nn = randomizeVectorByCone ( p, n, 0, ch(“angle”), f * count + f + ch(“seed”) * 10 + count * depth, 0, 2 );
}
}
}

Is this random enough?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.