New in 1.0 - LuxRender Wiki
Luxrender GPL Physically Based Renderer

New in 1.0

Personal tools

From LuxRender Wiki

Jump to: navigation, search


Normal Mapping

Image by Paolo Ciccone

LuxRender 1.0 introduces support for a long-awaited feature: normal mapping. Normal maps in LuxRender can be applied to any material, and (if desired), multiple normal and bump maps can be stacked arbitrarily on the same material using the multimix texture.

LuxRender includes a capability to generate a tangent space for a mesh, to allow for maximum precision when using baked normal maps. This feature uses the mikktspace by Morten S. Mikkelsen (who personally assisted with LuxRender's implementation) and allows LuxRender to perfectly match normal maps generated by other applications using mikktspace, such as Blender and xNormal.

Improved GPU Acceleration

Left: The GPU-accelerated Hybird Path mode. Right: LuxRender's classic path tracer. Both images rendered for 20 seconds. Image by J the Ninja
Left: The GPU-accelerated Hybrid Path mode.
Right: LuxRender's classic path tracer.
Both images rendered for 20 seconds. Image by J the Ninja

LuxRender 1.0 builds on the GPU-accelerated "hybrid sampler" renderer introduced in v0.8. Hybrid offloads ray-intersection calculations to the graphics card using OpenCL.

In v1.0, Hybrid adds support for bidirectional path tracing and rendering on multiple graphics cards. In addition, the simple path tracing mode from 0.8 now uses far less memory and supports all-uniform and brute-force-only light sampling.

Updated Materials

Image by JtheNinja

LuxRender 1.0 includes a new metal material, metal 2. Metal 2 supports custom colors and textures, as well as measured data from Sopra and Luxpop Nk files and arbitrary IORs. The car paint material has been updated to behave like the shader described in the original research paper rather than a simple multi-layer glossy. A new coating material, glossycoating, allows a polish coat to be applied to any other material. Finally, a new layered material allows other materials to be combined in a realistic stack.

Multi-step Motion Blur

Image by SATtva

Motion blur in LuxRender 1.0 now supports multiple steps over an arbitrary amount of time, rather than a single transform relative to the frame time. This allows more precise control of blur amount as well as curved trails for object and camera transform blur.

Core Improvements

Core 10-features.png

Under the hood, LuxRender 1.0 features numerous updates, including a multithreaded film buffer, more robust networking, a new acceleration structure, an updated light sampling system, and numerous bug fixes.

The new film buffer is split into multiple tiles, allowing separate threads to "splat" their rays to the image simultaneously. This greatly reduces the speed penalty of the firefly rejection system, and improves performance when using GPU rendering or large numbers of cores.

Network rendering has been updated with numerous stability fixes. Nodes now perform a proper handshake and version check, and several logic fixes have been added to prevent slaves from getting stuck in a busy or reconnecting state.

GUI Improvements

Gui updates 1-0.jpg

The main LuxRender GUI has been cleaned up for better usability and aesthetics. The render viewport now supports alpha transparency. Many of the icons have been replaced for a more consistent and descriptive icon set. The rendering statistics has been overhauled entirely, with improved readability and more accurate statistics.

The GUI now has it's own rendering queue feature, which of course can be used with network rendering.

Networking Improvements

Networking updates 1-0.png

The networking code has received a lot of updates, making network rendering easier and more robust.

External files (textures, ply etc) are now cached by the slaves and only sent on demand, significantly improving start-up time and lowering memory usage on the master. The master will automatically try to reconnect to slaves if it loses connection, recovering the session. It's also possible to reset a slave from the master.


Image by JtheNinja

LuxRender 1.0 adds an experimental stochastic progressive photon mapping integrator. Rather than building a single photon map then rendering it as in traditional photon mapping, SPPM builds a map of the "view" of the camera, fires photons to light this shot, and then repeats this process again with a new rendering of the view and a smaller photon radius. This allows for a theoretically infinite number of photons with a search radius that trends towards zero.

SPPM is a valuable rendering technique for both its speed and its robustness: it is very difficult to make a scene that will "throw it off". It can easily deal things such as lights behind glass or caustics visible in reflections, while at the same time it can render very quickly compared to path tracing algorithms.

LuxRender's SPPM implementation also supports adaptive markov chain monte-carlo sampling to help it aim photons into relevant areas of the scene. This allows dramatically faster convergence on "difficult" scenes (which often make up much of the real-world work of a production renderer).