In experimenting with SF and IBL using a high dynamic range image as lighting, I ran a test to get a sense of how the various shaders interact with IBL. Here is a post of the result.
I ran 5 shaders (uber, mirror, shiny, phong and glass) and varied a parameter for each shader to see how the shader behaved.
It appears that SF converts an HDR used for IBL into a constellation of discreet light sources, based on the "Samples" parameter in the IBL light definition. Some of the shaders that have a diffuse and specular calculation "reflect" this constellation and it is apparent in a rendering - as you can see in the UBER and PHONG shaders. This method of converting the IBL to a constellation of discreet sources is similar to the "mksource" app in Radiance. While it helps with noise in a GI render, is it possible to use the constellation of discreet sources as the diffuse component but reflection map the original HDR for the reflection component so that the discreet light source constellation does not appear in the render?
Also, Chris - are there any plans for implementing a more efficient and clean IBL strategy such as importance sampling?
FYI - I rendered the above image on the command line to a *.hdr. I then used Photosphere to tone-map the image and save as a LDR.
The HDR used to light the scene was generated by photographing a 2.5" diam. chrome ball bearing and then doing the usual HDRShop stuff to get a light probe - I then converted that to Lat-Long within HDRShop.
Importance sampling is implemented already. In the ibl definition try setting "lock false". This will use unique samples per shading point instead of fixing them over the whole image.
What really should happen though is for the specular component to be rendered seperately via sampling its reflection. I will try this out for the next version. Could you send me this test scene? It will avoid me having to recreate it.
Here is the image with lock false.
By the way - nice work. SF is proving to be a very cool tool and I am enjoying exploring it!
thanks for the useful tests.so setting lock false removes those specular lights problem?
It makes them less obvious but they are still there in the shaders that had them with lock true (uber, phong). I will do a test with a single uber and phong sphere with lock true and false (using the same HDR image for the IBL) to give you a better sense of hte appearance.
Yes I'm seeing that here too. This is more or less what I expected. In theory leaving lock set to false should eventually converge to the right answer, but it will take a long time (many samples). The ideal is to sample the image based light and the glossy reflection _together_ so the samples can be placed very efficiently - but this will require some changes to the current architecture. I also haven't ruled out the possibility of a bug somewhere that might be aggravating the problem.
I will keep you posted.
I'm amzazed that Chris seems to anticipate what is needed before anyone asks for it. I never even started thinking SF had importance sampling.
This is great testing. I would love to see the scene file you used. Would you be up for posting it somewhere for the public to check out?
I will email it to you - do you have the facilities to post it available for sownload for others? If so, feel free to post it. The archive is zipped and it includes the .sc, .geo.sc, the "grid.jpg" for the floor texture and the .hdr (the largest file) for the actual IBL. It is about 3.5 MB - if this is okay for your email let me know and I will send it to you.
I will also run the same tests with the samples increased (eg, 1024, 2048).
I have a MacPro, DualCore 2.16Mhz (2 processors, 4 cores) that I can crunch with while I write reports. :-)
is 1024 samples of the IBL.
Seems to be getting there (slowly). For really high phong power, the reflection is almost completely specular, and the phong lobe very narrow, so its very rare for the ibl samples to actually fall inside. This is why the last remaining specks are going to be hard to get rid of with the current implementation.
Yeah - I would think there are better shader choices for a specular material than phong with a power of 50,000 too.
Would adding jitter help?
right now I am not specifying any, so i assume there is none, or some default value. my aa for these renders are 0 2. Default trace depths. I have not explicitly specified any type of GI, although I tried a render with path, 8 samples and found the same general issue with phong and uber.
Keep on rockin'.
Jitter shouldn't make a difference. However setting your aa to 2/2 (which will disable adaptive sampling) should help. Otherwise those bright specks can get caught in between samples which can be misleading. With 2/2 you'll have 16 samples per pixel, so you can turn down the samples on the ibl a little bit, otherwise you'd have 1024*16 shadow rays being shot per pixel (!)
Log in to post a comment.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.