Lightcuts: week 9

Textured area lights turned out hugely popular, so now it’s hard to live up to expectations I guess!

This week’s work was indeed far less exciting: I worked on supporting more material features, as so far only lambertian diffuse and phong specular where supported. Now, all diffuse shaders are supported.

Every single shader must be specifically supported as we need to be able to answer this question: what’s the maximum value that a specific pixel, shaded this way, may assume over a bounding box of point lights? You don’t really need the exact maximum value, so a ridiculously large number would always be a “viable” answer. On the other hand, you want the bounding value to be as tight as possible, because if the error turns out to be very low, you may decide to skip all the lights further down in the light tree, thus saving rendering time.

I also added support for all falloff types (except custom curve falloffs). The default falloff type for Blender lamps is “inverse linear”, while only “inverse square” was supported so far: this could lead to very incorrect renderings, especially when testing existing scenes.

Now, for instance, this hangar scene (featuring a lot of dupliverted “inverse linear” point lights plus a couple of additional area lights) looks a bit better:

Tree creation time:     00:02.27 Number of (point) lights: 3841 (1476l + 0s + 2365o) Requested error rate: 0.020 Average cut size: 239.44 Shadow rays: 233.08 (6.07%)

Tree creation time: 00:02.27 Number of (point) lights: 3841 (1476l + 0s + 2365o) Requested error rate: 0.020 Average cut size: 239.44 Shadow rays: 233.08 (6.07%)

Hangar (False colour)

Hangar (False colour)

(Thanks Gillan for pointing me to this model).

◊ ◊ ◊

On the textured area light side, Italian Blenderhead Lusque has performed an interesting experiment. If you bake direct lighting coming from a light source (e.g. an area light) onto the walls of a Cornell-like box, and then you use the baked textures as textured area lights, you basically have a simple indirect lighting pass.

Here you can see a test, where the indirect lighting has been exaggerated on purpose:

I’ll post Lusque’s blend file here as soon as we sort the remaining issues out.

(Please note that this is just an experiment and that it has nothing to do with the “Instant Radiosity” scheme I would like to implement; I am also perfectly aware that it has limited applicability, but it’s still very clever in my opinion).

6 Responses to “Lightcuts: week 9”


  1. 1 tuqueque

    Very good news!… actually i find more exiting this week’s news than the area lights one!… i always prefer compatibility over features in any new development. So all diffuse shaders and different fallofs types is cool as always!…

    Thanks for your work!
    keep it up!

  2. 2 Dread Knight

    Horay!

  3. 3 D

    I’m so very excited by your hard work and its implementation in blender, thank you VERY MUCH!!!! Looking forward to using it on future projects. I check the CVS updates often to see how things are going.

  4. 4 Filipe Soares Dilly

    Fantastic work! :D

    Just a question: will Lightcuts support DupliGroup / DupliVerts for lights? This would be great!

    Cheers!

  5. 5 UncleZeiv

    @Filipe: dupliverted lights are already supported, you just need to make sure that their settings are compatible with Lightcuts (e.g. single sampled shadows, no Hemi, etc.). As for dupligroups I have not tried yet, but I guess it should work as well.

    Maybe automatic light generation for meshes or particles with “Emit” materials could be added in the future to avoid cluttering the 3d view and simplifying things for the user a bit.

    @tuqueque, Dread Knight, D: thank you for your support!

  6. 6 3dcreator

    Awsome!
    Thx for Your work, I’m looking forward to try it ( downloading build now ).

Leave a Reply