Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Hector Yee, posted on June 15, 2001

Image Description, by Hector Yee

It's output from a montecarlo path tracer I wrote. It demonstrates motion blur (flamingo), caustics (the reflection of the gold ashtray on the wall), color bleeding (green of the leaves on the petals), soft shadows and area light sources.

The lighting is physically accurate global illumination. It uses irradiance caching for indirect illumination computation, augmented by a model of the human visual system that takes into account visual importance as well as the sensitivity of the human visual system to spatial frequencies and movement.

More on:

Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

June 17, 2001, 02:28 PM

What resolution is this rendered at? (I assume that because it is montecarlo, that it has to be rendered at a high resolution and sampled done to eliminate noise, or have you found some way around that?) Is it very similar to say, distributive tracing? I've done some light research on bi-directional tracing, can this tracer trace reflected light? (ie, shine a spotlight at a mirror and have the light bounce and hit some other surface?) what about caustics?


June 17, 2001, 02:39 PM

i'm currently doing exactly the same rendering (monte carlo path tracing with markov chains), and on my school's computer network for my final (12th year, matric) project.

all they're used for really is using msword, and are on 24/7. that's 28 700mhz duron computers at my disposal for literally months at a time.

i'm doing to be rendering 3dsmax ase scenes.


June 17, 2001, 02:52 PM

it handles EVERYTHING in solving the rendering equation. he doesn't mention explicitly whether or not his path tracer is bidir or not, but judging from the time taken to render the images, i'd assume it isn't (bidir gives you a better estimate using fewer samples).

and antialiasing is jittered. "normal" aa (as done on 3d cards) is done by rendering a much bigger image, then scaling down. in so doing you lose a lot of colour precision (integer vs floating point), and if regular patterns exist in the image then you'll still get rendering artifacts.

the solution is to use stratified sampling inside the pixel's area (yes, i know the pixel isn't a square, but a sample... whatever), by sampling from random positions inside the pixel's area and weighting the results.

check "monte carlo path tracing for photorealism" by david hutchinson.


June 17, 2001, 02:59 PM

ah, finally my own comment after reading the many other responses :)

really nice work!! much respect... i know what's involved in making something like this work :)

i've been working intensively on my ray tracer for quite a while now to finally be in a position to implement the path tracer (have to add and change many things that were hardcoded before). i also had to do networking code, system service code (will run on nt4 / 2000 workstations, 28 duron 700mhz ones) and avi outputting code.

i would kill to be at cornell and have access to info on the subject in book form since i only have the internet, still being a high school lamer :( plus you have the original path tracing guy (Philip Dutre) in-house. i'm currently corresponding with him trying to get my head straight :)


June 17, 2001, 04:44 PM

Damn you, damn you to hell, have you even looked at the picture or read the accompanying text?

*hint* reflective ashtray *hint* caustics in text *hint*

Hector Yee

June 17, 2001, 05:55 PM

Yeah Phil's a really nice guy (and for a time Eric Lafortune was there too), really helpful in getting the math part of it right. His global illumination compendium is invaluable.

You're right, I'm not doing bidirectional, I'm shooting from the camera with shadow rays & importance sampling. Sampling was done using Quasi-Montecarlo (Halton-Hammersly inverse radical sequence). Stratified sampling works well for lower dimensions but in higher dimensions takes a looooooong time to fill up. I think Pixar has patented stochastic sampling so if you want to use it in anything other than research it has to be QMC.

Also, I'm not simulating everything there is... things like diffraction, florescence, subsurface scattering, participating media etc aren't modeled. Besides, the input BRDF from max is hardly physically realistic. Most of the surfaces in the flamingo picture are either Lambertian or Lambertian with a delta function (mirror reflection). Other images do have gloss, but even then the BRDF is just plain olde modified Phong.

As a side note I would recommend using the Mersenne Twister for doing Montecarlo integration (again Pixar patents on stochastic sampling apply). The standard crand() breaks down in about 24 dimensions.


June 17, 2001, 06:07 PM

Well, great work. A few questions:
Why the raytraced sphere's reflections seems more darkness? something like the first steps of radiosity calc.
A bit art work is also needed for your work. You need more better UV fitting on some scene elements.
You will get more better test results if you use more quality meshes.
I see gaps and some unwanted triangulations on some objects.

Hector Yee

June 17, 2001, 06:21 PM

It's called programmer art. Not art for art's sake but thrown together to test algorithms =P.


June 17, 2001, 08:16 PM

Actually, on the Voodoo5 in some AA modes (16bit colour) you actually gain colour precision from antialiasing, because the colours are averaged on the DAC read and given an extra bit.


June 18, 2001, 04:17 AM

That indeed is the first Baxton post that is empty. The post is completely empty...

He was so amazed by the picture that... the post is empty! Nothing in it...

heheh... nice work over there, that picture/movie is really nice!

Arne Rosenfeldt

June 18, 2001, 05:19 AM

I think polarisation is far more important than the
other mentioned effects. (But fluorescence is very obvious
in discos).

Is there an easy connection between these ray-shooting solving methods,
and standard methods for inverting matrices? (UL decompositon, gauß)
The connection with LOD in rasterizers?
Why does radiosity need so good rands? I think it should be less sensitve than MonteCarlo in other places?

What is eigenvector radiosity?
Is this the connection to usual matrices?


June 18, 2001, 10:22 AM

very nice... and I don't see any errors in this IOTD but then I didn't go get the animation either.

someone said hat the blur takes away from the image and I agree to an extent. but I think it should be a little blur so that the details are stronger but you still get that feeling of motion. however that is for a still image

it is important to note that this is an image from an animation and is supposed to represent the effects in the animation/program and is not here to please the Art Critics

makes you wonder though what kind of professionals may be peeking at the IOTD's for up and comings perhaps Lucas Films or Dizzney or Pixar this seems like the kind of thing they might be interested in


June 19, 2001, 02:26 AM

I wonder how long it will take for demoscene ppl to fake all that in 60fps ;)
(hasn't anyone really done that before?)

Arne Rosenfeldt

June 23, 2001, 10:32 AM

The fakes all exist.
When you could a as general solution wich is faster,
I would not call it a fake

This thread contains 44 messages.
First Previous ( To view more messages, select a page: 0 1 ... out of 1) Next Last
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.