This is the documentation for Enlighten.
module Low Level API
This module contains the interfaces/objects used when dealing with the Low Level API.
Classes
Name | Description |
---|---|
Enlighten::InstanceDescMinimal | Minimal description of an instance. |
Enlighten::IPrecompBuildParameters | A class containing various parameters and dials for the system level precompute process. |
Enlighten::IPrecompCubeMapBuildParameters | Precompute parameters for cube maps. |
Enlighten::IPrecompCubeMapCore | A class containing a data block that is used by the run-time to generate cube maps. |
Enlighten::IPrecompDepthCubeMap | Handle to the depth cube map data. |
Enlighten::IPrecompGeneratedSystems | Result of the the IPrecompute::CreateSystemsByVoxelisation() call. |
Enlighten::IPrecompInputCubeMap | A class representing a cube map object which the run-time can generate dynamically. |
Enlighten::IPrecompInputGeometry | Handle to the InputGeometry. |
Enlighten::IPrecompInputItemDependencies | A collection of item dependencies. |
Enlighten::IPrecompInputMesh | The standard precompute mesh input class. |
Enlighten::IPrecompInputProbeOctree | Represents a region of 3D space within which sets of probe positions are adaptively generated. |
Enlighten::IPrecompInputProbeRegion | Represents a region of 3D space voxelized at various resolutions. |
Enlighten::IPrecompInputProbeSet | A class representing a set of sample points for which the run-time can generate spherical harmonic representations of the diffuse light incident on each sample point. |
Enlighten::IPrecompInputSystem | Handle to the InputSystem. |
Enlighten::IPrecompMeshValidation | An interface containing methods for analyzing meshes. |
Enlighten::IPrecompOutputCubeMap | Handle to the precompute output data for cube maps. |
Enlighten::IPrecompOutputProbeOctree | An octree of probe positions grouped into probe sets. |
Enlighten::IPrecompOutputProbeSet | Handle to the LightTransport data for probesets. |
Enlighten::IPrecompPackedGeometry | Handle to the PackedGeometry. |
Enlighten::IPrecompPackedInstance | Handle to the PackedInstance. |
Enlighten::IPrecompPackedSystem | Class encapsulating the geometry and additional data for a system, light-mapped or otherwise. |
Enlighten::IPrecompProbeAtlasMaxima | Maximum values across the entire world, used to determine the resources required at runtime. |
Enlighten::IPrecompProbeOctree | A class representing an octree which defines sets of probe positions within a volume. |
Enlighten::IPrecompProbeOctreeLayout | The layout of an octree. |
Enlighten::IPrecompProbeSetBuildParameters | A class defining parameters for SH sample probe building. |
Enlighten::IPrecompProbeSetRadiosity | A class containing a set of data blocks that are used by the run-time to generate SH representations for the related IPrecompInputProbeSet. |
Enlighten::IPrecompRadiosityNormalTexture | Handle to the radiosity normal texture. |
Enlighten::IPrecompSystemClustering | Handle to the SystemClustering. |
Enlighten::IPrecompSystemCompressedLightTransport | Handle to a compressed SystemLightTransport. |
Enlighten::IPrecompSystemDependencies | Handle to the SystemDependencies. |
Enlighten::IPrecompSystemDuster | Handle to the platform-agnostic input sample points (dusters). |
Enlighten::IPrecompSystemLightTransport | Handle to the SystemLightTransport. |
Enlighten::IPrecompSystemPreClustering | Handle to the SystemPreClustering. |
Enlighten::IPrecompSystemRadiosity | Handle to the SystemRadiosity. |
Enlighten::IPrecompSystemsDependencies | Holds IPrecompSystemDependencies for multiple systems. |
Enlighten::IPrecompute | The Low Level Enlighten Precompute API. |
Enlighten::IPrecompVolumeQuery | A class representing a region of 3D space which can be tested for intersection against an axis-aligned box. |
Enlighten::PointProjectionOptions | Projection options for the point projection functionality. |
Enlighten::PointProjectionSurface | A surface we can project points onto. |
Enlighten::PointProjectionVersion | Description of the point projection of one instance to a set of surfaces. |
Enlighten::PppiAtlasMaxima | The maximum number of atlas tiles and probes that may be concurrently allocated for the given combination of probe sets. |
Enlighten::PrecompInputFace | A face (triangle) in EnlightenPrecomp input geometry. |
Enlighten::PrecompInputInstance | A simple class housing the data required with each stand-alone instance of some geometry. |
Enlighten::PrecompInputVertex | A vertex in EnlightenPrecomp input geometry. |
Enlighten::PrecompMeshIdentifier | Simple struct to identify an IPrecompInputMesh with the name and GUID of the geom and the index and GUID of the mesh. |
Enlighten::PrecompMeshProperties | Properties of input meshes. |
Enlighten::PrecompVolumeQueryBox | An example implementation of IPrecompVolumeQuery which defines a region of 3D space as a set of boxes. |
Enlighten::SystemDependencies | A list of system dependencies. |
Enlighten::SystemGrouping | A groupings of instances into systems. |
Geo::IdentVertLinkBuilder | A utility for identifying pairs of "identical" vertices in a vertex buffer. |
Geo::IdxLink | A link between two vertices. |
Geo::TriGroupSelection | Utility for doing vertex-based chart identification. |
Functions
Enums
Name | Description |
---|---|
eAutoSimpMode | The UV auto generation / simplification mode for a mesh. |
eMeshClassificationLightingType | Enumeration for reporting results of the first step of Mesh Classification (lightmap-lit or probe-lit). |
ePrecompCubeMapQuality | Quality levels for the raytracing in the cube map precompute. |
ePrecompQuality | Quality levels for majority of raytracing in the precompute, except cube maps. |
GeometryBuildResult | Enumeration for reporting geometry build success/fail. |
ProbeOctreeResolution | The resolution at which probes should be placed. |
VolumeQueryResult | The result of a volume query. |
Typedefs
Name | Description |
---|---|
Geo::GeoPair< Geo::GeoGuid, Geo::u32 > MaterialGuidMapping | A mapping between a material GUID and a 32-bit material ID. |
Geo::FixedSizeArray< Geo::s32, 3 > PrecompIndex3 | An array of three indices. |
Geo::u64 PrecompOctreeCode | Identifies a block within the octree. |
Variables
Name | Description |
---|---|
const float g_DependencyVisibilityThresholdDefault = 1.f / (1 << 8) | By default, do not consider a system as a dependency if its visibility is smaller than this threshold. |
void GEO_CALL Enlighten::CalculateUvScaleAndWorldOutputPixelSize
public: void GEO_CALL CalculateUvScaleAndWorldOutputPixelSize
(
float geomOutputPixelSize,
const Geo::Matrix & instanceTransform,
bool scaleUvsWithInstanceSize,
float instanceAdditionalUvScale,
Geo::s32 & outUvScale,
float & outWorldOutputPixelSize
)
Utility to calculate the correct UV scaling and world-space output pixel size for a given instance of a given geometry.
This depends on the instance transform, the "ScaleUvsWithInstanceSize" flag on the instance, the "AdditionalUvScale" value on the instance and the output pixel size on the geom.
Parameters
[in] | geomOutputPixelSize | The unscaled pixel size |
[in] | instanceTransform | The transform matrix for the instance |
[in] | scaleUvsWithInstanceSize | Should the scaling of the transform of the instance be taken into account when generating the per-instance lightmap UVs (i.e. should the output pixel size specified for this instance be in world units (true) or in local geometry units (false)) |
[in] | instanceAdditionalUvScale | Specifies an additional scale that should be applied to the lightmap UVs for the geometry instance instance (to change the output pixel size). This is applied in addition to any scaling related to the ScaleUvsWithInstanceSize flag. |
[out] | outUvScale | The UV scale for that instance |
[out] | outWorldOutputPixelSize | The pixel size after instance UV scaling is applied |
PppiAtlasMaxima GEO_CALL Enlighten::ComputePppiAtlasMaxima
public: PppiAtlasMaxima GEO_CALL ComputePppiAtlasMaxima
(
Geo::u32 probeSetCount,
const PrecompOctreeCode * octreeCodes,
const PppiAtlasFootprint * footprints
)
Return the maximum number of atlas tiles and probes that may be concurrently allocated for the given combination of probe sets.
Parameters
[in] | probeSetCount | The number of probe sets in the world. |
[in] | octreeCodes | The octree code associated with each probe set. |
[in] | footprints | The result of GetOctreePppiAtlasFootprint for each probe set. |
Geo::s32 GEO_CALL Enlighten::ConvertInputSystemToIPrecompGeneratedSystem
public: Geo::s32GEO_CALL ConvertInputSystemToIPrecompGeneratedSystem
(
Enlighten::IPrecompInputSystem * inputSystem,
const IPrecompInputGeometry *const * pInputGeoms,
Geo::s32 numGeoms,
Enlighten::IPrecompGeneratedSystems *& generatedSystem
)
Create an IPrecompGeneratedSystems object from inputSystem.
The generatedSystem object will have only one system in it (inputSystem) Note that the output object (generatedSystem) owns the input system, e.g. inputSystem will be destroyed when generatedSystem is destroyed.
Parameters
[in] | inputSystem | InputSystem to be converted to PrecompGeneratedSystem |
[in] | pInputGeoms | array of geoms referenced by inputsystem |
[in] | numGeoms | num of geoms in pInputGeoms |
[out] | generatedSystem | IPrecompGeneratedSystems with one system in it. |
Returns
0 if successful, otherwise a non-zero value.
Enlighten::IClusteringOutput* GEO_CALL Enlighten::CreateDebugEnvironmentClustering
public: Enlighten::IClusteringOutput *GEO_CALL CreateDebugEnvironmentClustering
(
Geo::s32 environmentResolution
)
Creates a debug IClusteringOutput interface representing the clustering of an environment at the given resolution.
IPrecompute* Enlighten::CreatePrecompute
public: IPrecompute * CreatePrecompute()
Create an instance of the Precompute.
Geo::TriGroupSelection* GEO_CALL Enlighten::CreateTriGroupsForPrecompInputMesh
public: Geo::TriGroupSelection *GEO_CALL CreateTriGroupsForPrecompInputMesh
(
const IPrecompInputMesh * inputMesh
)
Utility to create the tri group structure defined by the input mesh.
This can be used to generate the same tri groups the precompute will generate when given this mesh. The tri groups are determined by the connectivity in the index buffer (ie. shared vertices) and the links (Geo::IdxLink) specified or generated by the user.
Parameters
[in] | inputMesh | The input mesh. |
Returns
A valid tri group if successful, else null.
Geo::s32 GEO_CALL Enlighten::EstimateSystemDependencies
public: Geo::s32GEO_CALL EstimateSystemDependencies
(
const Enlighten::InstanceDescMinimal< IPrecompInputGeometry > * instances,
Geo::s32 numInstances,
const Enlighten::SystemGrouping * iSystemGrouping,
Enlighten::SystemDependencies *& oSystemDependencies
)
Estimate the dependencies between a set of systems.
Uses the instance bounding boxes to determine the system bounding boxes, and a collection of bounding box/sphere intersection tests to determine the dependencies. The function can be given either IPrecompInputGeometry or IPrecompPackedGeometry. Results will be identical.
Parameters
[in] | instances | The instances in the systems. |
[in] | numInstances | The number of instances. |
[in] | iSystemGrouping | A list of system groups. Each group contains indices into the input array of instances. |
[out] | oSystemDependencies | The system dependencies. |
Returns
0 if successful, otherwise a non-zero value.
Geo::s32 GEO_CALL Enlighten::EstimateSystemDependencies
public: Geo::s32GEO_CALL EstimateSystemDependencies
(
const Enlighten::InstanceDescMinimal< IPrecompPackedGeometry > * instances,
Geo::s32 numInstances,
const Enlighten::SystemGrouping * iSystemGrouping,
Enlighten::SystemDependencies *& oSystemDependencies
)
Estimate the dependencies between a set of systems.
Uses the instance bounding boxes to determine the system bounding boxes, and a collection of bounding box/sphere intersection tests to determine the dependencies. The function can be given either IPrecompInputGeometry or IPrecompPackedGeometry. Results will be identical.
Parameters
[in] | instances | The instances in the systems. |
[in] | numInstances | The number of instances. |
[in] | iSystemGrouping | A list of system groups. Each group contains indices into the input array of instances. |
[out] | oSystemDependencies | The system dependencies. |
Returns
0 if successful, otherwise a non-zero value.
Geo::v128 GEO_CALL Enlighten::GetOctreeCodeWorldPositionAndSize
public: Geo::v128GEO_CALL GetOctreeCodeWorldPositionAndSize
(
PrecompOctreeCode octreeCode,
float voxelSize
)
Return the world space position (xyz) and size (w) of the octree block identified by the specified octree code with the specified voxel size.
bool Enlighten::IsClosedMesh
public: bool IsClosedMesh
(
Geo::StridedArrayView< PrecompIndex3 > faces
)
Return true if the mesh is closed.
Geo::GeoArray<PrecompIndex3> Enlighten::RepairHoles
public: Geo::GeoArray< PrecompIndex3 > RepairHoles
(
Geo::StridedArrayView< PrecompIndex3 > faces
)
Return the faces which must be added to the mesh to repair holes.
Each hole is filled with a triangle fan. The mesh cannot be repaired if any two holes share a common vertex.
void GEO_CALL Enlighten::StoreTemporaryScaleAndTranslation
public: void GEO_CALL StoreTemporaryScaleAndTranslation
(
Enlighten::PrecompOutputInstance * outputInstance,
Geo::s32 uvScale,
Geo::s32 precompBlockSize
)
Utility to temporarily pack scale and translation into the PrecompOutputInstance object.
This later gets overridden
Parameters
[in] | outputInstance | The output instance |
[in] | uvScale | The UV scaling to apply to the instance chart |
[in] | precompBlockSize | The block size used when testing charts in the packing |
eAutoSimpMode
public: enum eAutoSimpMode
{
ASM_NONE = 0,
ASM_SIMPLIFY_NO_UVS,
ASM_SIMPLIFY_USING_UVS,
NUM_AUTO_SIMP_MODES
}
The UV auto generation / simplification mode for a mesh.
Used as part of PrecompMeshProperties.
enumerators
ASM_NONE | Switch AutoUV generation off. |
ASM_SIMPLIFY_NO_UVS | Switch AutoUV generation on and use auto generated UVs for all charts. |
ASM_SIMPLIFY_USING_UVS | Switch AutoUV generation on, use auto UV generated UVs only if they are better than the input UVs. |
NUM_AUTO_SIMP_MODES |
eMeshClassificationLightingType
public: enum eMeshClassificationLightingType
{
MCLT_LIGHTMAP,
MCLT_PROBE
}
Enumeration for reporting results of the first step of Mesh Classification (lightmap-lit or probe-lit).
enumerators
MCLT_LIGHTMAP | |
MCLT_PROBE |
ePrecompCubeMapQuality
public: enum ePrecompCubeMapQuality
{
PCMQ_LOW = 1,
PCMQ_MEDIUM = 4,
PCMQ_HIGH = 16,
PCMQ_VERY_HIGH = 64
}
Quality levels for the raytracing in the cube map precompute.
Each levels correspond to a number of rays that get generated and cast per pixel.
See Also
ePrecompQuality
enumerators
PCMQ_LOW | |
PCMQ_MEDIUM | The default. |
PCMQ_HIGH | |
PCMQ_VERY_HIGH |
ePrecompQuality
public: enum ePrecompQuality
{
PCQ_DEBUG = 16,
PCQ_DRAFT = 512,
PCQ_LOW = 2048,
PCQ_MEDIUM = 8192,
PCQ_HIGH = 32768,
PCQ_VERY_HIGH = 131072
}
Quality levels for majority of raytracing in the precompute, except cube maps.
Each levels correspond to a number of rays that get generated and than cast over the sphere and/or hemisphere. More rays result in a better approximation and therefore higher quality.
See Also
ePrecompCubeMapQuality
enumerators
PCQ_DEBUG | |
PCQ_DRAFT | |
PCQ_LOW | |
PCQ_MEDIUM | |
PCQ_HIGH | |
PCQ_VERY_HIGH |
GeometryBuildResult
public: enum GeometryBuildResult
{
GEOM_BUILD_SUCCESS = 0,
GEOM_BUILD_INVALID_MESH_INPUT = -1,
GEOM_BUILD_INVALID_MESH_PROPERTIES = -2,
GEOM_BUILD_PRECOMPUTE_FAILURE = -3,
GEOM_BUILD_EMPTY = -4,
GEOM_BUILD_USER_CANCELLED = -5,
GEOM_BUILD_INVALID_TERRAIN = -6,
GEOM_BUILD_INVALID_GEOM_PROPERTIES = -7
}
Enumeration for reporting geometry build success/fail.
enumerators
GEOM_BUILD_SUCCESS | The geometry was built successfully. |
GEOM_BUILD_INVALID_MESH_INPUT | A mesh failed validation, or the geometry's output pixel size or atlas width/height was invalid. |
GEOM_BUILD_INVALID_MESH_PROPERTIES | The flags and/or parameters of a mesh were invalid, or the geometry contained no input mesh or no output mesh. |
GEOM_BUILD_PRECOMPUTE_FAILURE | An internal precompute error occurred. Contact Enlighten support. |
GEOM_BUILD_EMPTY | The geometry contained no meshes. |
GEOM_BUILD_USER_CANCELLED | The user cancelled the geometry build. |
GEOM_BUILD_INVALID_TERRAIN | Geometry is marked up as terrain, but has invalid terrain properties. |
GEOM_BUILD_INVALID_GEOM_PROPERTIES | Geometry has invalid properties. |
ProbeOctreeResolution
public: enum ProbeOctreeResolution
{
PROBEOCTREERESOLUTION_FULL,
PROBEOCTREERESOLUTION_HALF,
PROBEOCTREERESOLUTION_QUARTER,
PROBEOCTREERESOLUTION_EIGHTH,
PROBEOCTREERESOLUTION_SIXTEENTH,
PROBEOCTREERESOLUTION_1_IN_32,
PROBEOCTREERESOLUTION_1_IN_64,
PROBEOCTREERESOLUTION_1_IN_128,
PROBEOCTREERESOLUTION_1_IN_256,
PROBEOCTREERESOLUTIONCOUNT,
PROBEOCTREERESOLUTION_NONE = PROBEOCTREERESOLUTIONCOUNT
}
The resolution at which probes should be placed.
enumerators
PROBEOCTREERESOLUTION_FULL | |
PROBEOCTREERESOLUTION_HALF | |
PROBEOCTREERESOLUTION_QUARTER | |
PROBEOCTREERESOLUTION_EIGHTH | |
PROBEOCTREERESOLUTION_SIXTEENTH | |
PROBEOCTREERESOLUTION_1_IN_32 | |
PROBEOCTREERESOLUTION_1_IN_64 | |
PROBEOCTREERESOLUTION_1_IN_128 | |
PROBEOCTREERESOLUTION_1_IN_256 | |
PROBEOCTREERESOLUTIONCOUNT | |
PROBEOCTREERESOLUTION_NONE |
VolumeQueryResult
public: enum VolumeQueryResult
{
VOLUMEQUERYESULT_OUTSIDE,
VOLUMEQUERYESULT_PARTIAL,
VOLUMEQUERYESULT_INSIDE
}
The result of a volume query.
enumerators
VOLUMEQUERYESULT_OUTSIDE | Completely outside. |
VOLUMEQUERYESULT_PARTIAL | Partly inside. |
VOLUMEQUERYESULT_INSIDE | Completely inside. |