HTRDR 0.6.1 is available
- Build from sources: git
High Tune: RenDeRer (
htrdr) was originally developed as a part
of the High-Tune
project to illustrate the implementation of radiative transfer
algorithms in inhomogeneous media. It was then extended in the ModRadUrb
project to handle longwave spectral integration and to add support of
spectral reflectivities to the geometries.
actually an image renderer in the visible or infrared part
of the spectrum, for scenes composed of an atmospheric gas mixture, clouds and
a ground. It uses volumetric spectral data that should be provided for the
pressure and temperature atmospheric vertical profile, the liquid water content
in suspension within the clouds that is a result of Large Eddy Simulation
computations, and the optical properties of water droplets that have been
obtained from a Mie code. It also relies on the reflectivity of the ground
geometry that can vary spatially and spectrally.
htrdr evaluates the intensity incoming on each pixel of the
sensor array. The underlying algorithm is based on a Monte-Carlo method:
it consists in simulating a given number of optical paths originating from a
camera, directed to the atmosphere, taking into account light absorption and
By default the spectral integration is performed for the visible part of the spectrum in [380, 780] nanometers, for the three components of the CIE 1931 XYZ colorimetric space that are subsequently recombined in order to obtain the final color for each pixel. As an alternative, one can explicitly define the longwave or shortwave spectral range into which the wavelength are going to be continuously sampled.
During the simulation,
htrdr dynamically loads/unloads
cloud properties and thus it can handle clouds whose data do not feat in main
memory. Furthermore, in addition of a shared memory parallelism,
htrdr relies on the Message
Passing Interface specification to parallelise its computations in a
distribute memory environment; the
htrdr binary can thus be
run either directly or through a MPI process launcher like
High-Tune: RenDeRer is currently used, developped and extended in the following research projects.
- In project ModRadUrb the emphasis is put on taking into account the representation of complex geometries (detailled city scenes) using spectral properties of a arbitrary number of materials. The solver is going to be extended to solve upward and downward atmospheric fluxes at any level in the scene, both in the visible and the infrared spectral ranges.
- In project MCG-Rad the
htrdrcodebase is used to explore a whole new class of radiative transfer algorithms: instead of relying on the full atmospheric radiative properties data set (prerequisite for current algorithms), the so-called line sampling algorithms will not require nor compute the absorption coefficient of the atmosphere. Instead, it will sample energetic transitions and use a Line-by-Line parameters database (such as HITRAN) in order to perform a rigorous spectral integration, both in the visible and the infrared spectral ranges.
- In project Astoria,
htrdrwill be used to produce both radiative transfer computations in the infrared and images in the visible, in the presence of combustion chambers where radiation scattering is performed by soot aggregates. The main difficulty resides in the fact that the chamber is illuminated by a laser: the classical solar radiative transfer algorithm then fails to converge because of the collimated radiation source, and a new algorithm has to be designed in order to ensure numerical convergence.
A straight interface
htrdr is a command-line tool that performs computations
on input data, writes the rendered image and nothing more. No assumption is
made on how input data are created excepted that they have to follow the
expected file formats. In the same spirit, the output image is written in plain
text, as a list of raw pixel estimations, making easier the processing of its
This thin interface is, by nature, particularly well suited to be
extended and integrated into a any workflow. For instance, one
can save the cloud properties directly in the "High-Tune: cloud properties"
format (htcp) or use the les2htcp tool to convert cloud properties
from NetCDF to
htcp. In the same way, the output image can be post-treated
through gnuplot or converted in a regular
PPM image by the htpp program, and then
visualised in an image viewer as for instance feh or display.
No pre-compiled version of
htrdr is provided; it must be
compiled directly from its source tree. A simple way is to rely on the
high_tune branch of the Star-Engine
project: it provides CMake scripts that automate the download, the compilation
and the installation of
htrdr and its dependencies. This build
procedure assumes the following prerequisites:
- git source control as well its Large File System extension.
- GNU Compiler Collection in version 4.8 or higher.
- CMake in version 3 or higher.
- NetCDF library and headers in version 4 or higher.
- OpenMPI library and headers.
- Optionally, the AsciiDoc tool suite to generate the man pages of the reference documentation.
Assuming that the aforementioned prerequisites are available, the build procedure is summed up to:
~ $ git clone -b High-Tune-0.6.1 \ https://gitlab.com/meso-star/star-engine.git \ High-Tune-0.6.1 ~ $ mkdir High-Tune-0.6.1/build ~ $ cd High-Tune-0.6.1/build ~/High-Tune-0.6.1/build $ cmake ../cmake ~/High-Tune-0.6.1/build $ make
htrdris installed in the
High-Tune-0.6.1. Source the provided
high_tune.profilefile to register
htrdragainst the current shell.
~ $ source ~/High-Tune-0.6.1/local/etc/high_tune.profile ~ $ htrdr -h
If the AsciiDoc tool suite was installed on
invocation, the reference documentation of the
program and its associated file formats should be available through man pages.
man command-line to consult them.
~ $ man htrdr ~ $ man htrdr-image ~ $ man htrdr-materials ~ $ man htrdr-obj ~ $ man htcp ~ $ man htmie ~ $ man mrumtl
Refer to the High-Tune: Starter Pack to
quickly run a
htrdr rendering; this archive provides input data
and scripts that are good starting points to use
Once built, the
htrdr installation can be packaged in an
archive that can then be deployed on compatible systems, i.e. systems
whose C library, NetCDF library and MPI implementation are compatibles with the
ones available on the system used to build
~/High-Tune-0.6.1/build $ make pkg ~/High-Tune-0.6.1/build $ ls package/High-Tune-0.6.1* # list packages
- Fix the self-intersection issue in shortwave computations introduced by the 0.6 version.
- Add support of flux map computation for both shortwave and longwave. The flux
is computed for the part of the flux map lying outside any geometry. The new
command line option
-pdefines the rectangle in the scene onto which the flux is going to be integrated. The flux map resolution and the realisations count per pixel is controlled by the
- Add support of thin materials, i.e. materials without geometric thickness as for instance the leaves of the trees.
- Add the temperature property to the materials and used it as the limit condition during longwave computations. Previously, the surface temperatures were fetched from the atmosphere at the given surface position.
- Add the
-noption to fix the name of the material defining the atmosphere.
- In shortwave, fix how direct contribution is handled for purely specular BRDF.
- Fix the
undefined strtok_r symbolissue exhibited by some GCC versions that leads to memory corruption and segmentation fault when parsing the ground interfaces.
- Fix typos in the man pages.
Add support of shortwave integration with respect to the Planck function for a reference temperature whose default value is the blackbody temperature of the sun. Actually this is the counterpart of the longwave integration introduced by the "infrared rendering" in the 0.4 version. The main difference is that the source of radiation is the sun rather than the medium and its boundaries.
-l that enabled the infrared rendering is now replaced by the new
-s option that controls the spectral integration that can be CIE XYZ (i.e.
regular image rendering), longwave or shortwave.
- Fix the returned sun radiance: the precomputed per spectral band solar incoming flux is removed and the sun radiance is now retrieved by directly evaluating the monochromatic Planck for the blackbody temperature of the sun.
- Fix CIE XYZ spectral integration: the pdf used to sample the CIE tristimulus values was not correctly handled in the Monte-Carlo weight.
- Fix the longwave spectral integration: the Monte-Carlo weight was wrong leading to overestimated temperatures.
- Add support of infrared rendering: when defined, the new
-loption setups the range of longwave into which the rendering is performed. In infrared rendering, each pixel stores the radiance per pixel and its associated brightness temperature. Spectral integration is done with respect to the Planck function for a reference temperature of 290 K.
- The ground geometry can now have several materials whose data vary over the
spectrum. These materials are listed in a new
file where each materials is defined by a name and a file storing its spectral
data with respect to the
fileformat. A material is mapped to a part of the OBJ geometry by using the
usemtldirective of the OBJ fileformat.
- Improve the sampling of the spectral dimension: the per wavelength realisation is now precisely sampled rather than arbitrarly fixed to the center of the sampled spectral band. Consequently, high resolution data defined per wavelength (e.g. Mie's properties and the reflectivity of the materials) are now fully taken into account.
- Fix a deadlock when
htrdrwas run through MPI.
- Fix a memory leak: the output file was not closed on exit.
- Add the
-Ooption that defines the file where the sky data are cached. If the file does not exist, the sky data structures are built from scratch and serialized into this new file. If this file exists, these data structures are directly read from it, leading to a huge speed up of the
htrdrpre-processing step. Note that if the provided file exists but is filled with data that do not match the submitted HTGOP, HTCP and HTMie files, an error is detected and the program stops.
- Rely on the HTSky library to manage the sky data. This library handles the
code previously defined into the
htrdr_sky.<c|h>files. The HTCP, HTGOP, HTMie libraries are thus no more dependencies of
htrdrsince only the
htrdr_skyfiles used them.
- Add the
-boption that controls the BRDF of the ground geometry.
- Make optional the use of a ground geometry (option
- Make optional the definition of the optical properties of water droplets
-m) when no cloud field is used.
- Add the
-Voption that fixes the maximum definition of the octrees used to partitioned the radiative properties of the clouds.
- Add a per pixel estimation of the per radiative path computation time.
- Fix the computation of the surface scattering: there was a bug in how Russian roulette was implemented at surface scattering leading to an underestimation of the surface reflection.
- Update the thread allocation policy: by default, the number of threads is now
defined as the maximum between the number of processors detected by OpenMP
and the number of threads defined by the
OMP_NUM_THREADSenvironment variable. This variable can be used to counteract the number of processors detected by OpenMP that can be lower than the real number of processors of the system.
- Fix compilation on systems with a GNU C Library whose version is less than 2.19.
- Fix a possible invalid memory access to cloud data leading to segmentation faults.
Copyright © 2018, 2019, 2020 |Méso|Star>.
Copyright © 2018, 2019 Centre National de la Recherche Scientifique (CNRS), Université Paul Sabatier.
htrdr is free software released under the GPLv3+
license: GNU GPL version 3 or later. You can freely study, modify or extend
it. You are also welcome to redistribute it under certain conditions; refer to
the license for