From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

This page is a Work In Progress.

This page describes the status of the project, as of the GSoC 2008 Final Evaluation date (August 18th).

Implemented features

  • all three light types needed by the Lightcuts algorithm are supported:
    • omnidirectional (Blender's Lamp) - useful for particle systems or volume lights
    • directional (Blender's Sun) - useful to approximate environment maps
    • oriented (roughly equivalent to Blender's Spot, but with a fixed 180° cone) - useful to approximate area lights and as virtual point lights on surfaces while faking indirect lighting
Please note that by combining these three light types it's possible to fake most types of illumination. The Lightcuts algorithm does not use any other types of lights; area lights for instance are supported by placing a large number of oriented lights.
  • support for all diffuse shaders
  • support for Phong specularity
In order to support a shader type, it's important to find a way to efficiently and tightly bound it over a bounding box of point lights. This is not trivial in general for specular shaders.
  • support for render passes
This though does not give good results; for instance the shadow pass is very noisy where diffuse shading is dark.
  • automatic conversion of environment maps
The number of (directional) point lights that are to be used to approximate environment lighting is set through the "Environment map" slider in the Lightcuts panel. The sampling is done through a spherical Hammersley sequence. A typical value for this is 4096.
  • automatic conversion of area lights
The number of (oriented) point lights that are to be used to convert area lights is set through the "Area lights" slider in the Lightcuts panel. These are automatically distributed among existing area lights proportionally to their area.
    • support for textured area lights
If an area light has an associated texture, it is not used to project it on the scene as usual, but it is used to modulate the color of the area light. This leads to interesting effects and allows to use tv screens etc. as light sources.
  • support for lamp falloffs
  • O(n*log(n)) tree creation
This is particularly important when employing tens of thousands of lights.
  • debug and statistics
  • initial UI
Currently most parameters can be configured through the "Lightcuts" panel available among the Scene buttons. It's important to stress that this has been implemented to allow testing and is not meant to be finalized as such. Still, it already gives an indication of the type of control the user would have.
  • minor/unrelated changes
    • Python API: added samplingMethod to Lamp object (can be added to trunk)
    • Added "Rendering time" to the available info of the Stamp feature.
    • Added a couple of features in BLI_kdtree: support for weak deletes and a function to search within a distance (plus a couple of specialized methods that have probably no use outside Lightcuts but could be written general enough to be added to the generic kdtree API); also added an optimization in tree search (but it requires a "father" pointer in the node struct)

Missing features

  • most specular shaders need to be bounded, only Phong is currently working correctly
  • node materials are not easy to bound in the general case, and are currently unsupported
  • compatibility with some features is not yet ensured:
    • mirror materials may require special treatment
    • shadowless lamps/materials
    • textures projected from lamps
    • group lamps/materials, possibly also layer issues
    • sss
  • most requested feature: automatic meshlights when material has "Emit"

Merge TODO list

  • UI/workflow decisions
  • for each item in the "missing features" list, add support if possible or clearly state incompatibility

Maintenance issues

  • future shaders must add also a bounding function if compatibility with the Lightcuts algorithm is to be ensured

Future directions

  • Reconstruction cuts
  • Multidimensional lightcuts