|
![](/i/fill.gif) |
Jaime Vives Piqueres <jai### [at] ignorancia org> wrote:
> I use often the trick of "enhancing" the radiosity effect with some
> objects which are present on the first pass, to save radiosity, but that I
> take out on the second pass with an "if", because I don't want them to be
> visible. With medium quality rad settings, the second pass doesn't seems to
> suffer any artefacts. But if you crank up the settings, they appear more and
> more, even if you are using the exact same settings on both passes.
>
> Fortunately, the solution is easy and even elegant: *don't take out the
> objects on the second pass, just use "no_image" on them!* :)
>
> As I said, it seems related to smooth triangles, because the artefacts do
> not appear on flat-normal versions of the same meshes. I think the real
> problem behind it is described by clipka on his radiosity tutorial:
This makes sense; the mechanism is probably as follows:
- If you take out objects between passes, you get artifacts everywhere
additional samples are taken, because these new samples "see" a different scene
than those taken previously, and therefore show a different color or brightness.
- Lower-quality radiosity settings typically have samples re-used over a larger
distance, i.e. need a lower sample density, so with the same pretrace (or
pre-render) resolution you will get a higher "sample coverage", causing less
samples to be taken during the final render and consequently less artifacts.
- Surface curvature affects sample re-use, so smooth triangles need a higher
sample density than flat ones, and are more likely to get an insufficient
coverage during pretrace / pre-render.
Your idea to use no_image instead of removing the objects is a near-perfect
solution. I guess it will have performance drawbacks in 3.6 (because
bounding-box intersection tests will probably be done before checking for the
no_image flag), but in 3.7 even this should be a non-issue. (Well, there's
still a performance drawback, but it should be marginal.)
Post a reply to this message
|
![](/i/fill.gif) |