Jump to content

irradiance caching


Recommended Posts

Hi,

(I got no response to a previous post (on a related topic), so I thought of breaking it down to simpler questions... :))

I wonder where I could get my hands on _any_ documentation related to the (partially implemented?) irradiance caching functionality in mantra. So far I found close to nothing in the manuals (but this might be my mistake -- sometimes it seems as if the search function doesn't work on the entire docs(?)).

Basically what I'd like to read about is that 1) what does this "partially implemented" mean 2) is it of any use in it's current form and 3) perhaps some technical details about it's workings.

From what I read on these forums so far, currently some GI-related aspects of mantra are unclear to many people, is that a correct statement? I wouldn't mind to "roll my own" pointcloud based shaders if the renderer doesn't support it out of the box, but it's a bit hard without the tech details. (I'd like to have an end result that is comparable in performance and behaviour to mental ray's final gathering.)

imre

Link to comment
Share on other sites

Irradiance caching is geared to cache VEX gather() loops - and those functions that use gather() internally (eg. reflectlight(), refractlight() with cones). This means that it works fully with secondary bounces in the regular MP or RT engines that use GI and Ambient Occlusion, like those found in the VEX Global Illumination SHOP.

I think any statement of "partially implemented" is referring to that it does not cache the PBR solution at all, nor does it cache third bounce+. It only will cache the second bounce, AFAIK.

Hi,

(I got no response to a previous post (on a related topic), so I thought of breaking it down to simpler questions... :))

I wonder where I could get my hands on _any_ documentation related to the (partially implemented?) irradiance caching functionality in mantra. So far I found close to nothing in the manuals (but this might be my mistake -- sometimes it seems as if the search function doesn't work on the entire docs(?)).

Basically what I'd like to read about is that 1) what does this "partially implemented" mean 2) is it of any use in it's current form and 3) perhaps some technical details about it's workings.

From what I read on these forums so far, currently some GI-related aspects of mantra are unclear to many people, is that a correct statement? I wouldn't mind to "roll my own" pointcloud based shaders if the renderer doesn't support it out of the box, but it's a bit hard without the tech details. (I'd like to have an end result that is comparable in performance and behaviour to mental ray's final gathering.)

imre

Link to comment
Share on other sites

Hey I would like also to know more about the irradiance caching ...

in fact what i know so far is that, mainly it's used to reduce render times and to reduce high frequency noise.

the three most important parameters of it are the error, max spacing and min spacing

please correct if i'm wrong :

so as Jason said whenever gather function is called it needs samples, so instead of taking all the samples every time, when irradiance cache is on it uses already calculated samples for nearby pixels, so the min and max spacing define the min radius and maxmium radius for the area to take those already calculated samples from. that's why when we increase max radius we reduce the high frequency noise but instead we introduce low frequency noise.

then for the error attribute what i know about it is that it acts like a threshold so whenever the result is erronous by more than that amount more samples are calculated, thoug i don't know how does he know the error :blink: because if we know the error it means we know the correct value i suppose so ...

nor does it cache third bounce+. It only will cache the second bounce, AFAIK.

What is the GI bounces parameter there for ?

Cheers

Link to comment
Share on other sites

Irradiance caching is geared to cache VEX gather() loops - and those functions that use gather() internally (eg. reflectlight(), refractlight() with cones). This means that it works fully with secondary bounces in the regular MP or RT engines that use GI and Ambient Occlusion, like those found in the VEX Global Illumination SHOP.

I think any statement of "partially implemented" is referring to that it does not cache the PBR solution at all, nor does it cache third bounce+. It only will cache the second bounce, AFAIK.

Thanks for the info, this is nice to know :) I was (and still am) worried about the "partially implemented" part when I started experimenting with it (trying to cache simple irradiance() calls), and the cached version had black spots appeared (I'll try to upload pictures+scene later). And I couldn't get rid of those artifacts, only partially -- where I had to overshoot the various parameters that it became magnitudes slower than a 'regular' (un-cached!) render.

(I used an 'own' shader for that test, which was basically a lambert and an irradiance vop, summed, the simplest it can be :))

The above mentioned problem only happened with irradiance, occlusion gave much better (ie. proper) results.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...