Difference between revisions of "ImagePipeline"

From LuxCoreRender Wiki
Jump to navigation Jump to search
Line 70: Line 70:
The end-user will probably not come into contact with them.
The end-user will probably not come into contact with them.


== NOP ==  
=== NOP ===


Does not modify the input, simply pipes it to the output.  
Does not modify the input, simply pipes it to the output.  
Can be used to define an empty imagepipeline.
Can be used to define an empty imagepipeline.


== Gamma Correction ==
=== Gamma Correction ===


Performs [https://en.wikipedia.org/wiki/Gamma_correction gamma correction].
Performs [https://en.wikipedia.org/wiki/Gamma_correction gamma correction].


== Gaussian Filter 3x3 ==
=== Gaussian Filter 3x3 ===


Blurs the image.
Blurs the image.


== Output Switcher ==
=== Output Switcher ===


Can be used to get any film channel as input of the image pipeline, for example the MATERIAL_ID channel if you want to perform tonemapping steps on it.
Can be used to get any film channel as input of the image pipeline, for example the MATERIAL_ID channel if you want to perform tonemapping steps on it.


== Radiance Group (aka Light Group) ==
=== Radiance Group (aka Light Group) ===


Shows only the contribution of lights with the ID of the radiance group.
Shows only the contribution of lights with the ID of the radiance group.

Revision as of 12:37, 9 August 2018

Overview

The image pipeline is LuxCore's built-in mini-compositor.
It is plugin-based. The plugins are evaluated one after the other, each one taking the output of the previous plugin as its input. The end result is available in form of the RGB(A)_IMAGEPIPLINE AOV.

Available Plugins

Tonemappers

Linear Tonemapper

Simply multiplies all pixels in the image with the scale value.
Not automatic (does not adapt to the image brightness, the scale value has to be set manually).

Autolinear Tonemapper

Similar to the linear tonemapper, but estimates the average brightness in the scene to compute the scale value automatically.
Automatic (adapts to the image brightness. This can lead to confusing effects).

Reinhard02 Tonemapper

An implementation of the reinhard tonemapper: http://www.cmap.polytechnique.fr/~peyre/cours/x2005signal/hdr_photographic.pdf
Automatic.

LuxLinear Tonemapper

Similar to the linear tonemapper, but the scale value is derived from ISO sensitivity, exposure time and aperture. Can be used to match footage taken with a real camera.
Not automatic.

Effects

Camera Response Function

Simulates analog films.

Background Image

Shows the specified image on pixels that have alpha < 1.
Note: When the size of the background image differs from the film size, it will be stretched to fit the film size.

Bloom

Blurs the input and blends the result over the input.
Can be used to simulate real-world camera sensor imperfections.

Vignetting

Darkens the corners of the image. Used to simulate real-world camera lens imperfections.

Color Aberration

Creates color fringes on pixels with high contrast. The effect is stronger in the image corners.
Used to simulate real-world camera lens imperfections.

Mist

Similar to simple OpenGL mist/fog. Uses the depth channel to fake mist.
Should be used with a small amount setting to simulate aerial perspective on geometry that is far away from the camera.
Note that since the depth channel is not anti-aliased, it will create jagged edges when the effect is too strong.

Contour lines

Creates contour lines for the IRRADIANCE AOV.

Special Plugins

These plugins are for internal use by exporters/addons/plugins that use the LuxCore API. The end-user will probably not come into contact with them.

NOP

Does not modify the input, simply pipes it to the output. Can be used to define an empty imagepipeline.

Gamma Correction

Performs gamma correction.

Gaussian Filter 3x3

Blurs the image.

Output Switcher

Can be used to get any film channel as input of the image pipeline, for example the MATERIAL_ID channel if you want to perform tonemapping steps on it.

Radiance Group (aka Light Group)

Shows only the contribution of lights with the ID of the radiance group.

For Developers

For details on how to define an imagepipeline with properties, see LuxCore_SDL_Reference_Manual_v2.0#Image_pipeline the SDL manual.

Creating new Plugins

Plugins are written in C++ and can optionally be accelerated with OpenCL.
Here is a tutorial on how to write a plugin.