neuray API Programmer's Manual

Spectrum Class

[Math API]

Description

Spectrum class with floating point elements and operations.

Include File:

#include <mi/math/spectrum.h>

Classes

class 
Spectrum with floating point elements and operations. More...
struct 
Generic storage class template for a Spectrum representation storing three floating point elements. More...

Functions

Spectrum mi::math::abs( const Spectrum& c)
Returns a spectrum with the elementwise absolute values of the spectrum c.
Spectrum mi::math::acos( const Spectrum& c)
Returns a spectrum with the elementwise arc cosine of the spectrum c.
bool  mi::math::all( const Spectrum& c)
Returns true if all elements of c are not equal to zero.
bool  mi::math::any( const Spectrum& c)
Returns true if any element of c is not equal to zero.
Spectrum mi::math::asin( const Spectrum& c)
Returns a spectrum with the elementwise arc sine of the spectrum c.
Spectrum mi::math::atan( const Spectrum& c)
Returns a spectrum with the elementwise arc tangent of the spectrum c.
Spectrum mi::math::atan2( const Spectrum& c, const Spectrum& d)
Returns a spectrum with the elementwise arc tangent of the spectrum c / d. More...
Spectrum mi::math::ceil( const Spectrum& c)
Returns a spectrum with the elementwise smallest integral value that is not less than the element in spectrum c.
Spectrum mi::math::clamp( const Spectrum& c, const Spectrum& low, const Spectrum& high)
Returns the spectrum c elementwise clamped to the range [low, high].
Spectrum mi::math::clamp( const Spectrum& c, const Spectrum& low, Float32 high)
Returns the spectrum c elementwise clamped to the range [low, high].
Spectrum mi::math::clamp( const Spectrum& c, Float32 low, const Spectrum& high)
Returns the spectrum c elementwise clamped to the range [low, high].
Spectrum mi::math::clamp( const Spectrum& c, Float32 low, Float32 high)
Returns the spectrum c elementwise clamped to the range [low, high].
Spectrum mi::math::cos( const Spectrum& c)
Returns a spectrum with the elementwise cosine of the spectrum c.
Spectrum mi::math::degrees( const Spectrum& c)
Converts elementwise radians in c to degrees.
Spectrum mi::math::elementwise_max( const Spectrum& lhs, const Spectrum& rhs)
Returns elementwise max for each element in spectrum lhs that is less than the corresponding element in spectrum rhs.
Spectrum mi::math::elementwise_min( const Spectrum& lhs, const Spectrum& rhs)
Returns elementwise min for each element in spectrum lhs that is less than the corresponding element in spectrum rhs.
Spectrum mi::math::exp( const Spectrum& c)
Returns a spectrum with elementwise e to the power of the element in the spectrum c.
Spectrum mi::math::exp2( const Spectrum& c)
Returns a spectrum with elementwise 2 to the power of the element in the spectrum c.
Spectrum mi::math::floor( const Spectrum& c)
Returns a spectrum with the elementwise largest integral value that is not greater than the element in spectrum c.
Spectrum mi::math::fmod( const Spectrum& a, const Spectrum& b)
Returns elementwise a modulo b, in other words, the remainder of a/b. More...
Spectrum mi::math::fmod( const Spectrum& a, Float32 b)
Returns elementwise a modulo b, in other words, the remainder of a/b. More...
Spectrum mi::math::frac( const Spectrum& c)
Returns a spectrum with the elementwise positive fractional part of the spectrum c.
MI_HOST_DEVICE_INLINE void mi::math::from_rgbe( const Uint8 rgbe[4], Spectrum& c)
Decodes a color from RGBE representation.
MI_HOST_DEVICE_INLINE void mi::math::from_rgbe( const Uint32 rgbe, Spectrum& c)
Decodes a color from RGBE representation.
Spectrum mi::math::gamma_correction( const Spectrum& spectrum, Float32 gamma_factor)
Returns a gamma corrected spectrum. More...
bool  mi::math::is_approx_equal( const Spectrum& lhs, const Spectrum& rhs, Float32 e)
Compares the two given values elementwise for equality within the given epsilon.
bool  mi::math::isfinite( const Spectrum& c)
Indicates whether all components of the spectrum are finite.
bool  mi::math::isinfinite( const Spectrum& c)
Indicates whether any component of the spectrum is infinite.
bool  mi::math::isnan( const Spectrum& c)
Indicates whether any component of the spectrum is "not a number".
Spectrum mi::math::lerp( const Spectrum& c1, const Spectrum& c2, const Spectrum& t)
Returns the elementwise linear interpolation between c1 and c2, i.e., it returns (1-t) * c1 + t * c2.
Spectrum mi::math::lerp( const Spectrum& c1, const Spectrum& c2, Float32 t)
Returns the linear interpolation between c1 and c2, i.e., it returns (1-t) * c1 + t * c2.
Spectrum mi::math::log( const Spectrum& c)
Returns a spectrum with elementwise natural logarithm of the spectrum c.
Spectrum mi::math::log10( const Spectrum& c)
Returns a spectrum with elementwise base 10 logarithm of the spectrum c.
Spectrum mi::math::log2( const Spectrum& c)
Returns a spectrum with elementwise base 2 logarithm of the spectrum c.
Spectrum mi::math::modf( const Spectrum& c, Spectrum& i)
Returns the elementwise fractional part of c and stores the elementwise integral part of c in i. More...
bool  mi::math::operator!=( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is elementwise not equal to rhs.
Spectrum mi::math::operator*( const Spectrum& lhs, const Spectrum& rhs)
Multiplies rhs elementwise with lhs and returns the new result.
Spectrum mi::math::operator*( const Spectrum& c, Float32 s)
Multiplies the spectrum c elementwise with the scalar s and returns the new result.
Spectrum mi::math::operator*( Float32 s, const Spectrum& c)
Multiplies the spectrum c elementwise with the scalar s and returns the new result.
Spectrum& mi::math::operator*=( Spectrum& lhs, const Spectrum& rhs)
Multiplies rhs elementwise with lhs and returns the modified lhs.
Spectrum& mi::math::operator*=( Spectrum& c, Float32 s)
Multiplies the spectrum c elementwise with the scalar s and returns the modified spectrum c.
Spectrum mi::math::operator+( const Spectrum& lhs, const Spectrum& rhs)
Adds lhs and rhs elementwise and returns the new result.
Spectrum& mi::math::operator+=( Spectrum& lhs, const Spectrum& rhs)
Adds rhs elementwise to lhs and returns the modified lhs.
Spectrum mi::math::operator-( const Spectrum& lhs, const Spectrum& rhs)
Subtracts rhs elementwise from lhs and returns the new result.
Spectrum mi::math::operator-( const Spectrum& c)
Negates the spectrum c elementwise and returns the new result.
Spectrum& mi::math::operator-=( Spectrum& lhs, const Spectrum& rhs)
Subtracts rhs elementwise from lhs and returns the modified lhs.
Spectrum mi::math::operator/( const Spectrum& lhs, const Spectrum& rhs)
Divides rhs elementwise by lhs and returns the new result.
Spectrum mi::math::operator/( const Spectrum& c, Float32 s)
Divides the spectrum c elementwise by the scalar s and returns the new result.
Spectrum& mi::math::operator/=( Spectrum& lhs, const Spectrum& rhs)
Divides lhs elementwise by rhs and returns the modified lhs.
Spectrum& mi::math::operator/=( Spectrum& c, Float32 s)
Divides the spectrum c elementwise by the scalar s and returns the modified spectrum c.
bool  mi::math::operator<( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is lexicographically less than rhs. More...
bool  mi::math::operator<=( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is lexicographically less than or equal to rhs. More...
bool  mi::math::operator==( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is elementwise equal to rhs.
bool  mi::math::operator>( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is lexicographically greater than rhs. More...
bool  mi::math::operator>=( const Spectrum& lhs, const Spectrum& rhs)
Returns true if lhs is lexicographically greater than or equal to rhs. More...
Spectrum mi::math::pow( const Spectrum& a, const Spectrum& b)
Returns the spectrum a elementwise to the power of b.
Spectrum mi::math::pow( const Spectrum& a, Float32 b)
Returns the spectrum a elementwise to the power of b.
Spectrum mi::math::radians( const Spectrum& c)
Converts elementwise degrees in c to radians.
Spectrum mi::math::round( const Spectrum& c)
Returns a spectrum with the elements of spectrum c rounded to nearest integers.
Spectrum mi::math::rsqrt( const Spectrum& c)
Returns the reciprocal of the square root of each element of c.
Spectrum mi::math::saturate( const Spectrum& c)
Returns the spectrum c clamped elementwise to the range [0,1].
Spectrum mi::math::sign( const Spectrum& c)
Returns the elementwise sign of spectrum c.
Spectrum mi::math::sin( const Spectrum& c)
Returns a spectrum with the elementwise sine of the spectrum c.
void mi::math::sincos( const Spectrum& a, Spectrum& s, Spectrum& c)
Computes elementwise the sine s and cosine c of angles a simultaneously. More...
Spectrum mi::math::smoothstep( const Spectrum& a, const Spectrum& b, const Spectrum& c)
Returns 0 if c is less than a and 1 if c is greater than b in an elementwise fashion. More...
Spectrum mi::math::smoothstep( const Spectrum& a, const Spectrum& b, Float32 x)
Returns 0 if c is less than a and 1 if c is greater than b in an elementwise fashion. More...
Spectrum mi::math::sqrt( const Spectrum& c)
Returns the square root of each element of c.
Spectrum mi::math::step( const Spectrum& a, const Spectrum& c)
Returns elementwise 0 if c is less than a and 1 otherwise.
Spectrum mi::math::tan( const Spectrum& c)
Returns a spectrum with the elementwise tangent of the spectrum c.
MI_HOST_DEVICE_INLINE void mi::math::to_rgbe( const Spectrum& c, Uint32& rgbe)
Encodes a spectrum into RGBE representation.
MI_HOST_DEVICE_INLINE void mi::math::to_rgbe( const Spectrum& c, Uint8 rgbe[4])
Encodes a spectrum into RGBE representation.

Functions

Spectrum mi::math::abs( const Spectrum& c) [inline]

Returns a spectrum with the elementwise absolute values of the spectrum c.

Spectrum mi::math::acos( const Spectrum& c) [inline]

Returns a spectrum with the elementwise arc cosine of the spectrum c.

bool mi::math::all( const Spectrum& c) [inline]

Returns true if all elements of c are not equal to zero.

bool mi::math::any( const Spectrum& c) [inline]

Returns true if any element of c is not equal to zero.

Spectrum mi::math::asin( const Spectrum& c) [inline]

Returns a spectrum with the elementwise arc sine of the spectrum c.

Spectrum mi::math::atan( const Spectrum& c) [inline]

Returns a spectrum with the elementwise arc tangent of the spectrum c.

Spectrum mi::math::atan2( const Spectrum& c, const Spectrum& d) [inline]

Returns a spectrum with the elementwise arc tangent of the spectrum c / d. The signs of the elements of c and d are used to determine the quadrant of the results.

Spectrum mi::math::ceil( const Spectrum& c) [inline]

Returns a spectrum with the elementwise smallest integral value that is not less than the element in spectrum c.

Spectrum mi::math::clamp( const Spectrum& c, const Spectrum& low, const Spectrum& high) [inline]

Returns the spectrum c elementwise clamped to the range [low, high].

Spectrum mi::math::clamp( const Spectrum& c, const Spectrum& low, Float32 high) [inline]

Returns the spectrum c elementwise clamped to the range [low, high].

Spectrum mi::math::clamp( const Spectrum& c, Float32 low, const Spectrum& high) [inline]

Returns the spectrum c elementwise clamped to the range [low, high].

Spectrum mi::math::clamp( const Spectrum& c, Float32 low, Float32 high) [inline]

Returns the spectrum c elementwise clamped to the range [low, high].

Spectrum mi::math::cos( const Spectrum& c) [inline]

Returns a spectrum with the elementwise cosine of the spectrum c.

Spectrum mi::math::degrees( const Spectrum& c) [inline]

Converts elementwise radians in c to degrees.

Spectrum mi::math::elementwise_max( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns elementwise max for each element in spectrum lhs that is less than the corresponding element in spectrum rhs.

Spectrum mi::math::elementwise_min( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns elementwise min for each element in spectrum lhs that is less than the corresponding element in spectrum rhs.

Spectrum mi::math::exp( const Spectrum& c) [inline]

Returns a spectrum with elementwise e to the power of the element in the spectrum c.

Spectrum mi::math::exp2( const Spectrum& c) [inline]

Returns a spectrum with elementwise 2 to the power of the element in the spectrum c.

Spectrum mi::math::floor( const Spectrum& c) [inline]

Returns a spectrum with the elementwise largest integral value that is not greater than the element in spectrum c.

Spectrum mi::math::fmod( const Spectrum& a, const Spectrum& b) [inline]

Returns elementwise a modulo b, in other words, the remainder of a/b. The elementwise result has the same sign as a.

Spectrum mi::math::fmod( const Spectrum& a, Float32 b) [inline]

Returns elementwise a modulo b, in other words, the remainder of a/b. The elementwise result has the same sign as a.

Spectrum mi::math::frac( const Spectrum& c) [inline]

Returns a spectrum with the elementwise positive fractional part of the spectrum c.

MI_HOST_DEVICE_INLINE void mi::math::from_rgbe( const Uint8 rgbe[4], Spectrum& c)

Decodes a color from RGBE representation.

MI_HOST_DEVICE_INLINE void mi::math::from_rgbe( const Uint32 rgbe, Spectrum& c)

Decodes a color from RGBE representation.

Spectrum mi::math::gamma_correction( const Spectrum& spectrum, Float32 gamma_factor) [inline]

Returns a gamma corrected spectrum. Gamma factors are used to correct for non-linear input and output devices; for example, monitors typically have gamma factors between 1.7 and 2.2, meaning that one-half of the peak voltage does not give one half of the brightness. This is corrected for by raising the spectrum components to the gamma exponent. Gamma factors greater than 1 make an image brighter; less than 1 make it darker. The inverse of gamma_correction(factor) is gamma_correction(1.0/factor).

Parameters

spectrum
spectrum to be corrected
gamma_factor
gamma factor, must be greater than zero.
bool mi::math::is_approx_equal( const Spectrum& lhs, const Spectrum& rhs, Float32 e) [inline]

Compares the two given values elementwise for equality within the given epsilon.

bool mi::math::isfinite( const Spectrum& c) [inline]

Indicates whether all components of the spectrum are finite.

bool mi::math::isinfinite( const Spectrum& c) [inline]

Indicates whether any component of the spectrum is infinite.

bool mi::math::isnan( const Spectrum& c) [inline]

Indicates whether any component of the spectrum is "not a number".

Spectrum mi::math::lerp( const Spectrum& c1, const Spectrum& c2, const Spectrum& t) [inline]

Returns the elementwise linear interpolation between c1 and c2, i.e., it returns (1-t) * c1 + t * c2.

Parameters

c1
one spectrum
c2
second spectrum
t
interpolation parameter in [0,1]
Spectrum mi::math::lerp( const Spectrum& c1, const Spectrum& c2, Float32 t) [inline]

Returns the linear interpolation between c1 and c2, i.e., it returns (1-t) * c1 + t * c2.

Parameters

c1
one spectrum
c2
second spectrum
t
interpolation parameter in [0,1]
Spectrum mi::math::log( const Spectrum& c) [inline]

Returns a spectrum with elementwise natural logarithm of the spectrum c.

Spectrum mi::math::log10( const Spectrum& c) [inline]

Returns a spectrum with elementwise base 10 logarithm of the spectrum c.

Spectrum mi::math::log2( const Spectrum& c) [inline]

Returns a spectrum with elementwise base 2 logarithm of the spectrum c.

Spectrum mi::math::modf( const Spectrum& c, Spectrum& i) [inline]

Returns the elementwise fractional part of c and stores the elementwise integral part of c in i. Both parts have elementwise the same sign as c.

bool mi::math::operator!=( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is elementwise not equal to rhs.

Spectrum mi::math::operator*( const Spectrum& lhs, const Spectrum& rhs) [inline]

Multiplies rhs elementwise with lhs and returns the new result.

Spectrum mi::math::operator*( const Spectrum& c, Float32 s) [inline]

Multiplies the spectrum c elementwise with the scalar s and returns the new result.

Spectrum mi::math::operator*( Float32 s, const Spectrum& c) [inline]

Multiplies the spectrum c elementwise with the scalar s and returns the new result.

Spectrum& mi::math::operator*=( Spectrum& lhs, const Spectrum& rhs) [inline]

Multiplies rhs elementwise with lhs and returns the modified lhs.

Spectrum& mi::math::operator*=( Spectrum& c, Float32 s) [inline]

Multiplies the spectrum c elementwise with the scalar s and returns the modified spectrum c.

Spectrum mi::math::operator+( const Spectrum& lhs, const Spectrum& rhs) [inline]

Adds lhs and rhs elementwise and returns the new result.

Spectrum& mi::math::operator+=( Spectrum& lhs, const Spectrum& rhs) [inline]

Adds rhs elementwise to lhs and returns the modified lhs.

Spectrum mi::math::operator-( const Spectrum& lhs, const Spectrum& rhs) [inline]

Subtracts rhs elementwise from lhs and returns the new result.

Spectrum mi::math::operator-( const Spectrum& c) [inline]

Negates the spectrum c elementwise and returns the new result.

Spectrum& mi::math::operator-=( Spectrum& lhs, const Spectrum& rhs) [inline]

Subtracts rhs elementwise from lhs and returns the modified lhs.

Spectrum mi::math::operator/( const Spectrum& lhs, const Spectrum& rhs) [inline]

Divides rhs elementwise by lhs and returns the new result.

Spectrum mi::math::operator/( const Spectrum& c, Float32 s) [inline]

Divides the spectrum c elementwise by the scalar s and returns the new result.

Spectrum& mi::math::operator/=( Spectrum& lhs, const Spectrum& rhs) [inline]

Divides lhs elementwise by rhs and returns the modified lhs.

Spectrum& mi::math::operator/=( Spectrum& c, Float32 s) [inline]

Divides the spectrum c elementwise by the scalar s and returns the modified spectrum c.

bool mi::math::operator<( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is lexicographically less than rhs.

See also:

mi_def_lexicographic_order

bool mi::math::operator<=( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is lexicographically less than or equal to rhs.

See also:

mi_def_lexicographic_order

bool mi::math::operator==( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is elementwise equal to rhs.

bool mi::math::operator>( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is lexicographically greater than rhs.

See also:

mi_def_lexicographic_order

bool mi::math::operator>=( const Spectrum& lhs, const Spectrum& rhs) [inline]

Returns true if lhs is lexicographically greater than or equal to rhs.

See also:

mi_def_lexicographic_order

Spectrum mi::math::pow( const Spectrum& a, const Spectrum& b) [inline]

Returns the spectrum a elementwise to the power of b.

Spectrum mi::math::pow( const Spectrum& a, Float32 b) [inline]

Returns the spectrum a elementwise to the power of b.

Spectrum mi::math::radians( const Spectrum& c) [inline]

Converts elementwise degrees in c to radians.

Spectrum mi::math::round( const Spectrum& c) [inline]

Returns a spectrum with the elements of spectrum c rounded to nearest integers.

Spectrum mi::math::rsqrt( const Spectrum& c) [inline]

Returns the reciprocal of the square root of each element of c.

Spectrum mi::math::saturate( const Spectrum& c) [inline]

Returns the spectrum c clamped elementwise to the range [0,1].

Spectrum mi::math::sign( const Spectrum& c) [inline]

Returns the elementwise sign of spectrum c.

Spectrum mi::math::sin( const Spectrum& c) [inline]

Returns a spectrum with the elementwise sine of the spectrum c.

void mi::math::sincos( const Spectrum& a, Spectrum& s, Spectrum& c) [inline]

Computes elementwise the sine s and cosine c of angles a simultaneously. The angles a are specified in radians.

Spectrum mi::math::smoothstep( const Spectrum& a, const Spectrum& b, const Spectrum& c) [inline]

Returns 0 if c is less than a and 1 if c is greater than b in an elementwise fashion. A smooth curve is applied in-between so that the return values vary continuously from 0 to 1 as elements in c vary from a to b.

Spectrum mi::math::smoothstep( const Spectrum& a, const Spectrum& b, Float32 x) [inline]

Returns 0 if c is less than a and 1 if c is greater than b in an elementwise fashion. A smooth curve is applied in-between so that the return values vary continuously from 0 to 1 as x varies from a to b.

Spectrum mi::math::sqrt( const Spectrum& c) [inline]

Returns the square root of each element of c.

Spectrum mi::math::step( const Spectrum& a, const Spectrum& c) [inline]

Returns elementwise 0 if c is less than a and 1 otherwise.

Spectrum mi::math::tan( const Spectrum& c) [inline]

Returns a spectrum with the elementwise tangent of the spectrum c.

MI_HOST_DEVICE_INLINE void mi::math::to_rgbe( const Spectrum& c, Uint32& rgbe)

Encodes a spectrum into RGBE representation.

MI_HOST_DEVICE_INLINE void mi::math::to_rgbe( const Spectrum& c, Uint8 rgbe[4])

Encodes a spectrum into RGBE representation.