# LuxCoreRender

LuxCoreRender is a free and open-source physically based rendering software. It began as LuxRender in 2008 before changing its name to LuxCoreRender in 2017 as part of a project reboot. The LuxCoreRender software runs on Linux, Mac OS X, and Windows.

## Overview

LuxCoreRender features a 3D renderer; it relies on other programs (3D modeling programs) to create the scenes to render, including the models, materials, lights and cameras. This content can then be exported from the application for rendering. For Luxrender, fully functional exporters are available for Blender, Daz Studio; partially functional ones are available for Cinema 4D, Maya, SketchUp and XSI. Luxrender is also fully supported as a production renderer in 3DS Max. For LuxCoreRender, Blender is supported through the BlendLuxCore plugin. After opening the exported file, LuxCoreRender renders the scene. Various tweaks to post processing settings can be set via graphical user interface and the scene control file. A significant feature of LuxCoreRender is that the user is able to change the balance of different lights while the image is still being processed.

## History
### LuxRender

LuxCoreRender originally started as LuxRender in 2008. LuxRender was based on PBRT, a physically based ray-tracing program. Although very capable and well-structured, PBRT focuses on academic use and was not easily usable by digital artists. As PBRT is licensed under the BSD License, it was possible to start a new program based on PBRT's source code. With the blessings of the original authors, a small group of programmers took this step in September 2007. The new program was named LuxRender and was to focus on artistic use. Since its initial stage, the program has attracted a small handful of various programmers around the world.
On 24 June 2008, the first official release was announced, version 0.5. This was the first release that is considered to be usable for the general public.

### LuxCoreRender (LuxRender 2.x)

The plan for LuxRender 2.0 was defined during the 2013 summer and one of the major components is a new engine based on the C++ and Python APIs. The old C API suffered from many limitations when it came to modern features like dynamic scene editing and interactive rendering, so it was decided to write a completely new API instead of improving the old one. LuxCore is the name of the new C++/Python API. It offers all the features shown by SLG (SmallLuxGPU), including a dynamic camera, texture, material, and object editing, and more.
   Why Lux(Core)Render v2.0? Because LuxRender project was dying under the weight of a lot of old abandoned code. All active developers had the strong feeling a fresh start was required. The "Core" between "Lux" and "Render" is there to highlight the new project focus. However the "v2.0" is there to re-mark the continuity with 10 years of development and experience.
During the 2017 winter, LuxCoreRender 2.0 was defined as a LuxCore API focused render package, dropping any old code related to LuxRender 1.x. A new website, forum, wiki, Blender exported, etc. were developed in order mark a new fresh project restart.
Although the original LuxRender is a full spectral renderer, the new LuxCoreRender drops full spectral rendering in favor of simulating spectral dispersion when required. However, this leads to some inaccuracies when rendering caustics in some circumstances.

## Features
### LuxCoreRender 2.5

Features included in the LuxCoreRender 2.5 update include:
* Nvidia OptiX
* Non Uniform Camera Bokeh
* new Materials: Holdout and double sided
* new textures: wireframe and distort
* randomized tiling
* new AOVs
* 180° and 360° Stereo Cameras
* improvements for the blender plugin

### LuxCoreRender 2.4

Features included in the LuxCoreRender 2.4 update include:
* Support for using more than 64 logical processors in Windows.
* Support for CUDA rendering on NVIDIA graphics cards, with out-of-core capability.
* The ability to create materials with thin-film interference.

### LuxCoreRender 2.0–2.3

Features included in the LuxCoreRender 2.0+ project reboot (current version) include:
* Microkernel pure-OpenCL "Path" render engine, supporting any number of GPUs and OpenCL-enabled CPUs concurrently.
* Interactive viewport rendering, including real-time material and object manipulation.
* Material node support.
* Light groups, allowing the user to change the intensity and color of lamps during the rendering process.
* Embree accelerated BVH building.
* A " Direct Light Sampling Cache" to accelerate scenes with many light sources.
* A "Photon Global Illumination" cache to accelerate complex scenes, including support for caustic photon cache and vertex merging.
* Support for Open Intel Image Denoiser (OIDN).
* Blender Cycles scene conversion, including (limited) support for automatic interpretation of Cycles materials and textures.
* Advanced material properties, including glass dispersion (using Cauchy's transmission equation), rough glass (for creating frosted glass or ice), metal, car paint (using multiple reflective coatings), and velvet (to represent fuzzy surfaces).
* Support for physically based light units like lumen and candela, as well as traditional gain and exposure controls.
* Support for subdivision shapes, displacement shapes, and vector displacement of displacement shapes.

### LuxRender 1.0

New features included in LuxRender 1.0 include:
* An experimental Stochastic Progressive Photon Mapping integrator (SPPM).
* GPU-accelerated "Hybrid Bidirectional" path tracing using the GPU for ray-intersection calculations.
* Support for multiple GPUs.
* New and updated materials, including metal, car paint, glossy coating, and layered materials.

### LuxRender 0.8

The main features of LuxRender as of version 0.8 include:
* Biased and unbiased rendering: Users can choose between physical accuracy (unbiased) and speed (biased).
* Full spectral rendering: Instead of discrete RGB colour bands, full spectra are used for internal calculations.
* Hierarchical procedural and image based texture system: Procedural and image based textures can be mixed in various ways, making it possible to create complex materials.
* Displacement mapping and subdivision: Based on procedural or image textures, object surfaces can be transformed.
* Network and co-operative rendering: Rendering time can be reduced by combining the processing power of multiple computers. IPv6 is also supported.
* Perspective (including shift lens), orthographic and environment cameras.
* HDR output: Render output can be saved in various file formats, including .png, .tga and .exr.
* Instances: Instancing significantly saves system resources, in particular memory consumption by reusing mesh data in duplicated objects.
* Built in post-processing: While rendering, you can add post processed effects like bloom, glare, chromatic aberration and vignetting.
* Motion blur, depth of field and lens effects: True motion blur, both for the camera and individual objects, and physically accurate Lens Effects, including Depth Of Field.
* Light groups: By using light groups, one can output various light situations from a single rendering, or make adjustments to the balance between light sources in real time.
* Tone mapping
* Image denoising
* Fleximage (virtual film): Allows you to pause and continue renders. The current state of the render can be written to a file, so that any system can continue the render at a later moment.
* GPU acceleration for path tracing when sampling one light at a time.
* Film response curves to emulate traditional cameras color response (some curves are for black&white films too).
* Volumetric rendering using Homogeneous volumes by defining an interior, and exterior volume.
* Subsurface Scattering