Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)

Enlighten API 3.10 Documentation
Results will update as you type.
  • Modules
    • module Enlighten
      • module Precompute
        • module Baking
        • module Deprecated: UV Parametisation and Grouping
        • module EnlightenPipeline
        • module Low Level API
        • module Ray Tracing
      • module Runtime
    • module Infrastructure (GeoBase)
    • module Infrastructure (GeoCore)
  • Namespaces
  • Notes
    Calendars

You‘re viewing this with anonymous access, so some content might be blocked.
/
module Low Level API

    This is the documentation for Enlighten.

    module Low Level API

    Nov 21, 2019

    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

    A class representing an octree which defines sets of probe positions within a volume.

    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::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::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::PrecompInputOctreeBoxSet

    A set of boxes for which probes will be placed at the specified resolution.

    Enlighten::PrecompInputOctreePointSet

    A set of points for which probes will be placed at the specified resolution.

    Enlighten::PrecompInputOctreeVolume

    A volume for which probes will be placed at the specified resolution.

    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

    Name Description
    CalculateUvScaleAndWorldOutputPixelSize(float, const Geo::Matrix &, bool, float, Geo::s32 &, float &)

    Utility to calculate the correct UV scaling and world-space output pixel size for a given instance of a given geometry.

    ConvertInputSystemToIPrecompGeneratedSystem(Enlighten::IPrecompInputSystem *, const IPrecompInputGeometry *const *, Geo::s32, Enlighten::IPrecompGeneratedSystems *&)

    Create an IPrecompGeneratedSystems object from inputSystem.

    ConvertIPrecompInputMeshToAtlasMesh(const IPrecompInputMesh *)

    Function to convert an IPrecompInputMesh into an AtlasMesh.

    CreateDebugEnvironmentClustering(Geo::s32)

    Creates a debug IClusteringOutput interface representing the clustering of an environment at the given resolution.

    CreatePrecompute()

    Create an instance of the Precompute.

    CreateTriGroupsForPrecompInputMesh(const IPrecompInputMesh *, bool)

    Utility to create the tri group structure defined by the input mesh.

    EstimateSystemDependencies(const Enlighten::InstanceDescMinimal< IPrecompInputGeometry > *, Geo::s32, const Enlighten::SystemGrouping *, Enlighten::SystemDependencies *&)

    Estimate the dependencies between a set of systems.

    EstimateSystemDependencies(const Enlighten::InstanceDescMinimal< IPrecompPackedGeometry > *, Geo::s32, const Enlighten::SystemGrouping *, Enlighten::SystemDependencies *&)

    Estimate the dependencies between a set of systems.

    StoreTemporaryScaleAndTranslation(Enlighten::PrecompOutputInstance *, Geo::s32, Geo::s32)

    Utility to temporarily pack scale and translation into the PrecompOutputInstance object.

    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.

    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


    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.


    Geo::AtlasMesh* GEO_CALL Enlighten::ConvertIPrecompInputMeshToAtlasMesh


    public: Geo::AtlasMesh *GEO_CALL ConvertIPrecompInputMeshToAtlasMesh
    (
        const IPrecompInputMesh * pMesh
    )


    Function to convert an IPrecompInputMesh into an AtlasMesh.


    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,
        bool autodetectSmoothBevels
    )


    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.

    [in] autodetectSmoothBevels

    if set to true smooth bevel triGroups will be identified automatically.

    The resulting structure should be released by the caller.

    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.


    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,
        PROBEOCTREERESOLUTIONCOUNT
    }


    The resolution at which probes should be placed.

    enumerators
    PROBEOCTREERESOLUTION_FULL
    PROBEOCTREERESOLUTION_HALF
    PROBEOCTREERESOLUTION_QUARTER
    PROBEOCTREERESOLUTION_EIGHTH
    PROBEOCTREERESOLUTION_SIXTEENTH
    PROBEOCTREERESOLUTIONCOUNT


    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.

    , multiple selections available,
    {"serverDuration": 11, "requestCorrelationId": "f1220eeddd43454e8abc230de8fb04cc"}