Skip to content

ASTex-ICube/real_time_glint_dictgenerator

Repository files navigation

Procedural Physically based BRDF for Real-Time Rendering of Glints - Dictionary generator

The implementation of dictionary generator of the paper: Procedural Physically based BRDF for Real-Time Rendering of Glints.

Xavier Chermain (ICUBE), Basile Sauvage (ICUBE), Jean-Michel Dishler (ICUBE) and Carsten Dachsbacher (KIT).

Accepted for Pacific Graphic 2020 and for CGF special issue.

The implementation reproduces the dictionary generation algorithm.

GitHub repository: https://github.com/ASTex-ICube/real_time_glint_dictgenerator. See https://github.com/ASTex-ICube/real_time_glint to know how to use the dictionary in a renderer.

The generator is part of the pbrt-v3 tool imgtool, implemented in the function dictgenerator in the following file src/tools/imgtool.cpp.

After the build (see pbrt-v3 building page), launch the generator with the command:

imgtool dictgenerator -outfile dict.exr -nlevels 16 -N 192 -distreso 64 -alpha_dict 0.5 -std_gaussian_lobe 0.02

to get the dictionary used in the paper. It contains 192 multiscale marginal distributions with 16 LODs. The size of the tabulated single scale marginal distribution is 64, the alpha roughness of the target distribution is set to 0.5 and the standard deviation of the gaussian lobe is set to 0.02. This command generates 1,024 .exr files in the runtime directory, each one containing three single scale marginal distributions. The file naming convention is:

<outfile parameter>_<triple distribution number>_<LOD number>.exr

These files will be read by the OpenGL renderer located in the supplementary material.

The user manual of the command is:

dictgenerator options:
    --outfile          Path and base name of the files of the dictionary.
                       Default: dict.exr
    --nlevels          Number of levels of detail. Default: 16
    --N                Number of multiscale marginal distributions. Must be a
                       multiple of 3 (one distribution per RGB color channel).
                       Default: 192
    --alpha_dict       Alpha roughness of the target distribution. Controls the
                       size of the specular lobe at the highest level of detail.
                       Default: 0.5.
    --std_dev_lobe     Standard deviation of the gaussian lobes. Controls the 
                       size of the glint specular lobe. Default: 0.02
    --distreso         Single scale marginal distribution resolution.
                       Default: 128
    --delta            Sampling rate used by numerical integration during 
                       normalisation. Defaut: 0.001