MaterialX 1.38.2
Classes | Typedefs | Functions
Harmonics.h File Reference

Spherical harmonics functionality. More...

#include <MaterialXRender/Export.h>
#include <MaterialXRender/Image.h>
#include <MaterialXRender/Types.h>

Go to the source code of this file.

Classes

class  ShCoeffs< C, B >
 Class template for a vector of spherical harmonic coefficients. More...
 

Typedefs

using Sh3ScalarCoeffs = ShCoeffs< double, 3 >
 Double-precision scalar coefficients for third-order spherical harmonics.
 
using Sh3ColorCoeffs = ShCoeffs< Color3d, 3 >
 Double-precision color coefficients for third-order spherical harmonics.
 

Functions

Sh3ColorCoeffs projectEnvironment (ConstImagePtr env, bool irradiance=false)
 Project an environment map to third-order SH, with an optional convolution to convert radiance to irradiance. More...
 
ImagePtr normalizeEnvironment (ConstImagePtr env, float envRadiance, float maxTexelRadiance)
 Normalize an environment to the given radiance. More...
 
void computeDominantLight (ConstImagePtr env, Vector3 &lightDir, Color3 &lightColor)
 Compute the dominant light direction and color of an environment map. More...
 
ImagePtr renderEnvironment (const Sh3ColorCoeffs &shEnv, unsigned int width, unsigned int height)
 Render the given spherical harmonic signal to an environment map. More...
 
ImagePtr renderReferenceIrradiance (ConstImagePtr env, unsigned int width, unsigned int height)
 Render a reference irradiance map from the given environment map, using brute-force computations for a slow but accurate result. More...
 

Detailed Description

Spherical harmonics functionality.

Function Documentation

◆ computeDominantLight()

MX_RENDER_API void computeDominantLight ( ConstImagePtr  env,
Vector3 lightDir,
Color3 lightColor 
)

Compute the dominant light direction and color of an environment map.

Parameters
envAn environment map in lat-long format.
lightDirReturns the dominant light direction of the environment.
lightColorReturns the color of the light from the dominant direction.

◆ normalizeEnvironment()

MX_RENDER_API ImagePtr normalizeEnvironment ( ConstImagePtr  env,
float  envRadiance,
float  maxTexelRadiance 
)

Normalize an environment to the given radiance.

Parameters
envAn environment map in lat-long format.
envRadianceThe radiance to which the environment map should be normalized.
maxTexelRadianceThe maximum radiance allowed for any individual texel of the map.
Returns
A new normalized environment map, in the same format as the original.

◆ projectEnvironment()

MX_RENDER_API Sh3ColorCoeffs projectEnvironment ( ConstImagePtr  env,
bool  irradiance = false 
)

Project an environment map to third-order SH, with an optional convolution to convert radiance to irradiance.

Parameters
envAn environment map in lat-long format.
irradianceIf true, then the returned signal will be convolved by a clamped cosine kernel to generate irradiance.
Returns
The projection of the environment to third-order SH.

◆ renderEnvironment()

MX_RENDER_API ImagePtr renderEnvironment ( const Sh3ColorCoeffs shEnv,
unsigned int  width,
unsigned int  height 
)

Render the given spherical harmonic signal to an environment map.

Parameters
shEnvThe color signal of the environment encoded as third-order SH.
widthThe width of the output environment map.
heightThe height of the output environment map.
Returns
An environment map in the lat-long format.

◆ renderReferenceIrradiance()

MX_RENDER_API ImagePtr renderReferenceIrradiance ( ConstImagePtr  env,
unsigned int  width,
unsigned int  height 
)

Render a reference irradiance map from the given environment map, using brute-force computations for a slow but accurate result.

Parameters
envAn environment map in lat-long format.
widthThe width of the output irradiance map.
heightThe height of the output irradiance map.
Returns
An irradiance map in the lat-long format.