XII Release 0.1.0
Loading...
Searching...
No Matches
xiiPhotometricUtils Class Reference

#include <PhotometricUnits.h>

Static Public Member Functions

static float ConeSolidAngle (xiiAngle fullConeAngle)
 Solid angle of a circular cone described by its full apex angle.
static float LuminousFluxToIntensity (float fLumens, float fSolidAngleSteradians)
 Converts luminous flux to luminous intensity for a uniform emitter.
static float LuminousIntensityToFlux (float fCandela, float fSolidAngleSteradians)
static float LuminousIntensityToIlluminance (float fCandela, float fDistanceMeters)
 Inverse-square conversion between luminous intensity and illuminance.
static float IlluminanceToLuminousIntensity (float fLux, float fDistanceMeters)
static float LuminanceToLuminousIntensity (float fNits, float fProjectedAreaSquareMeters)
 Conversion between luminance and on-axis luminous intensity.
static float LuminousIntensityToLuminance (float fCandela, float fProjectedAreaSquareMeters)
static float LuminanceToLuminousFlux (float fNits, float fEmittingAreaSquareMeters)
 Total flux emitted by a one-sided, ideal Lambertian surface.
static float LuminousFluxToLuminance (float fLumens, float fEmittingAreaSquareMeters)
static float ToLuminousIntensity (float fValue, xiiEnum< xiiPhotometricUnit > unit, float fEmissionSolidAngleSteradians, float fProjectedAreaSquareMeters=0.0f)
static float ToIlluminance (float fValue, xiiEnum< xiiPhotometricUnit > unit, float fSourceSolidAngleSteradians)
static float ToLuminance (float fValue, xiiEnum< xiiPhotometricUnit > unit, float fEmittingAreaSquareMeters, float fProjectedAreaSquareMeters)

Detailed Description

Unit-safe photometric conversions used by components, GPU extraction, and sensor rendering. All inputs are clamped to finite, non-negative values.

Member Function Documentation

◆ ToIlluminance()

float xiiPhotometricUtils::ToIlluminance ( float fValue,
xiiEnum< xiiPhotometricUnit > unit,
float fSourceSolidAngleSteradians )
staticnodiscard

Converts an authored distant-light value to canonical illuminance. Nits are integrated over the apparent source solid angle. Candela and lumen inputs are interpreted at a calibration distance of one metre.

◆ ToLuminance()

float xiiPhotometricUtils::ToLuminance ( float fValue,
xiiEnum< xiiPhotometricUnit > unit,
float fEmittingAreaSquareMeters,
float fProjectedAreaSquareMeters )
staticnodiscard

Converts an authored finite-area value to canonical luminance. Lux is interpreted as luminous exitance for the emitting surface.

◆ ToLuminousIntensity()

float xiiPhotometricUtils::ToLuminousIntensity ( float fValue,
xiiEnum< xiiPhotometricUnit > unit,
float fEmissionSolidAngleSteradians,
float fProjectedAreaSquareMeters = 0.0f )
staticnodiscard

Converts an authored local-light value to canonical luminous intensity. Lux is interpreted as illuminance measured at one metre. Nits require the projected emitter area; a zero-area emitter therefore produces zero cd.


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/GraphicsCore/Lighting/PhotometricUnits.h
  • /home/runner/work/XII/XII/Source/Engine/GraphicsCore/Lighting/Implementation/PhotometricUnits.cpp