IEnvironmentMap
Description
- Derived from
- Extended by
-
EnvironmentMap abstract
Base interface for classes that compute color samples of an environment map.
An environment map uses a horizontal coordinate system with altitude and azimuth coordinates, interpreted as follows, with respect to the view direction:
-
altitude = +90° : towards zenith of upper hemisphere
-
altitude = 0° : towards horizon
-
altitude = -90° : towards zenith of lower hemisphere
-
azimuth = 0° : northwards
-
azimuth = +90° : eastwards
-
azimuth = +/- 180° : southwards
-
azimuth = -90° : westwards
Usually, environment maps are associated with some topocentric coordinate system in a 3D scene.
Environment maps are used to render background skies and to model the visual appearance of material reflectivity and gloss. For this purpose, an environment map is rasterized into a ColorCube and then encoded as a mipmapped cubemap texture, which in turn is used during rendering. Ambient lighting is computed from the smallest mipmaps, thus mimicking (almost) hemispheric sampling. If an environment map contains a single prominent light feature, it may expose it via the ILightProvider.LightAltitude, ILightProvider.LightAzimuth and ILightProvider.LightSize properties. These will be then used for directional lighting.
IEnvironmentMap objects act as resource handles and produce EnvironmentMapResource resource objects.
Public / Methods
ComputeEnvironmentColorPrepare
Prepares computation of environment colors via ComputeEnvironmentColor.
When this method is called, the IEnvironmentMap object makes local copies of all parameters that affect the result of ComputeEnvironmentColor, so that subsequent parameter modifications will have no influence. This ensures consistency when calling ComputeEnvironmentColor from multiple threads.
It is not necessary to call this method after creating a new IEnvironmentMap object. It need to be called only after modifying the map properties.
Public / Attributes
MaximumEnvironmentColor
The scale factor to apply to the low-dynamic range color channel values (0..1) returned by ComputeEnvironmentColor, in order to obtain high-dynamic range color channel (0..M). values.
Extensions
Rasterize
2 overloads
Rasterizes this environment map into a color buffer.
This method calls IEnvironmentMap.ComputeEnvironmentColorPrepare.
Rasterizes this environment map into the given color cube.
This method does not call IEnvironmentMap.ComputeEnvironmentColorPrepare. The edge fixup mode of cube in will be taken into account. The mapping from cubemap faces to altitude/azimuth angles for IEnvironmentMap.ComputeEnvironmentColor is the same as the mapping to latitude/longitude, see LatLon.