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.
  • class Enlighten InputWorkspaceDebugIterator
  • class Enlighten InputWorkspaceDebugPoint
  • class Enlighten InputWorkspaceDynamicInternal
  • class Enlighten InputWorkspaceInternal
  • class Enlighten InputWorkspaceMetaData
  • class Enlighten InternalLightFalloffTable
  • class Enlighten InterpolatedPoint
  • class Enlighten InterpolationInputSet
  • class Enlighten IPppiTextureUpdateHandler
  • class Enlighten IPrecompBuildParameters
  • class Enlighten IPrecompCubeMapBuildParameters
  • class Enlighten IPrecompCubeMapCore
  • class Enlighten IPrecompDepthCubeMap
  • class Enlighten IPrecompGeneratedSystems
  • class Enlighten IPrecompInputCubeMap
  • class Enlighten IPrecompInputGeometry
  • class Enlighten IPrecompInputItemDependencies
  • class Enlighten IPrecompInputMesh
  • class Enlighten IPrecompInputProbeOctree
  • class Enlighten IPrecompInputProbeRegion
  • class Enlighten IPrecompInputProbeSet
  • class Enlighten IPrecompInputSystem
  • class Enlighten IPrecompMeshValidation
  • class Enlighten IPrecompOutputCubeMap
  • class Enlighten IPrecompOutputProbeOctree
  • class Enlighten IPrecompOutputProbeSet
  • class Enlighten IPrecompPackedGeometry
  • class Enlighten IPrecompPackedInstance
  • class Enlighten IPrecompPackedSystem
  • class Enlighten IPrecompProbeSetBuildParameters
  • class Enlighten IPrecompProbeSetRadiosity
  • class Enlighten IPrecompRadiosityNormalTexture
  • class Enlighten IPrecompSystemClustering
  • class Enlighten IPrecompSystemCompressedLightTransport
  • class Enlighten IPrecompSystemDependencies
  • class Enlighten IPrecompSystemDuster
  • class Enlighten IPrecompSystemLightTransport
  • class Enlighten IPrecompSystemPreClustering
  • class Enlighten IPrecompSystemRadiosity
  • class Enlighten IPrecompSystemsDependencies
  • class Enlighten IPrecompute
  • class Enlighten IPrecomputeLoaderCubeMap
  • class Enlighten IPrecomputeLoaderGeometry
  • class Enlighten IPrecomputeLoaderProbeSet
  • class Enlighten IPrecomputeLoaderSystem
  • class Enlighten IPrecompVolumeQuery
  • class Enlighten IProbeSetManager
  • class Enlighten IrradianceOutputDesc
  • class Enlighten ISystemSolutionSpace
  • class Enlighten IThreadGroup
  • class Enlighten IUpdateManager
  • class Enlighten IUpdateManagerWorker
  • class Enlighten IViewVolumeIntersector
  • class Enlighten LightMethodSelector
  • class Enlighten LightTransportPixel
  • class Enlighten LightValue64
  • class Enlighten LightValueIterator
  • class Enlighten Line2D
  • class Enlighten LongRunningProcess
  • class Enlighten LrbCpuTextureSampler
  • class Enlighten MaterialAlbedoSampler
  • class Enlighten MaterialComponentBuffer
  • class Enlighten MaterialEmissiveSampler
  • class Enlighten MaterialGuids
  • class Enlighten MaterialSampler
  • class Enlighten MaterialTransparencySampler
  • class Enlighten MergeGeometry
  • class Enlighten MergeGeometryCache
  • class Enlighten MergeMap
  • class Enlighten MergeProcessParams
  • class Enlighten MergeStats
  • class Enlighten MergeTriGroupParams
  • class Enlighten MetaBlock
  • class Enlighten MetaBlockBuilder
  • class Enlighten MultithreadCpuUpdateManager
  • class Enlighten MultithreadCpuWorker
  • class Enlighten MultithreadCpuWorkerCommon
  • class Enlighten NullGeometryTransparencySampler
  • class Enlighten NullMaterialEmissiveSampler
  • class Enlighten NullMaterialTransparencySampler
  • class Enlighten NullSampler
    Calendars

You‘re viewing this with anonymous access, so some content might be blocked.
/
class Enlighten IPrecompute

    This is the documentation for Enlighten.

    class Enlighten IPrecompute

    Nov 21, 2019

    class Enlighten::IPrecompute

        └>Geo::IGeoReleasable

    The Low Level Enlighten Precompute API.

    Enums

    Name Description
    EMinimumCompatibleVersion

    Controls if Precompute should generate data that can be used by older Enlighten run time APIs.

    EStateDump

    Controls the amount of reproduction data saved by the IPrecompute tasks.

    Functions

    Name Description
    AssembleSystemGeometry(const IPrecompInputSystem *, const IPrecompInputGeometry *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompPackedSystem *&)

    Assemble system geometry.

    CalculateCubeMapSystemDependencies(const IPrecompInputCubeMap *, const IPrecompPackedSystem *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemDependencies *&)

    Calculate system dependencies for a cube map.

    CalculateProbeSetSystemDependencies(const IPrecompInputProbeSet *, const IPrecompPackedSystem *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemDependencies *&)

    Calculate system dependencies for a probe set.

    CalculateSystemDependencies(const IPrecompPackedSystem *, const IPrecompPackedSystem *const *, Geo::s32, float, Geo::IGeoProgressProxy *, IPrecompSystemDependencies *&)

    Calculate system dependencies for a system.

    CalculateSystemDependenciesByDistance(const IPrecompInputSystem *const *, Geo::s32, const IPrecompInputGeometry *const *, Geo::s32, float, bool, Geo::IGeoProgressProxy *, IPrecompSystemsDependencies *&)

    Calculate dependencies for the input systems.

    ClassifyInstanceAsLightmapOrProbeLit(const Geo::Matrix &, const IPrecompInputGeometry *, float, bool, float, double, eMeshClassificationLightingType &)

    Decides whether a given geometry instance should be probe-lit or lightmap-lit based on how good its generated Auto UVs are.

    ClassifyInstancesAsContributingProbeLit(const Geo::Matrix *, const IPrecompInputGeometry *const *, const float *, Geo::s32, float, bool *)

    Decides which probe-lit instances should be contributing ("Probe Radiosity") and which should not ("Fully Dynamic") based on how much light each instance and its neighbours could block.

    CompileClusteringOutput(const IPrecompSystemPreClustering *, const IPrecompSystemClustering *, Geo::IGeoProgressProxy *, IClusteringOutput *&)

    Extract some data about the clustering process.

    CompileCubeMap(const IPrecompOutputCubeMap *, Enlighten::eSolverType, Geo::IGeoProgressProxy *, IPrecompCubeMapCore *&)

    Compile the data from the cube map output object into runtime format.

    CompileDepthCubeMap(const IPrecompOutputCubeMap *, IPrecompDepthCubeMap *&)

    Compile the depth data from the cube map output object.

    CompileInputWorkspace(const IPrecompSystemDuster *, Enlighten::eSolverType, bool, Geo::IGeoProgressProxy *, InputWorkspace *&)

    Compile the data from the dusters and radiosity cores into an InputWorkspace.

    CompileLightTransportOutput(const IPrecompSystemLightTransport *, Geo::IGeoProgressProxy *, ILightTransportOutput *&)

    Extract some data about the light transport process.

    CompileMaterialData(const IPrecompSystemDuster *, Geo::IGeoProgressProxy *, ClusterAlbedoWorkspaceMaterialData *&)

    Compile the data from the dusters into a ClusterAlbedoWorkspaceMaterialData.

    CompileProbeSet(const IPrecompOutputProbeSet *, Enlighten::eSolverType, Geo::IGeoProgressProxy *, IPrecompProbeSetRadiosity *&)

    Compile the data from the probeset light transport into runtime format.

    CompileRadiosity(const IPrecompSystemCompressedLightTransport *, Enlighten::eSolverType, Geo::IGeoProgressProxy *, IPrecompSystemRadiosity *&)

    Compile the data from the light transport into runtime format.

    CompileRadiosityNormalTexture(const IPrecompSystemCompressedLightTransport *, IPrecompRadiosityNormalTexture *&)

    Compile the radiosity normal texture from the light transport data.

    CompressLightTransport(const IPrecompSystemLightTransport *, const IPrecompSystemDuster *, Geo::IGeoProgressProxy *, IPrecompSystemCompressedLightTransport *&)

    Compress the data from the light transport into a tighter format.

    CreateClustering(const IPrecompSystemPreClustering *, const IPrecompPackedSystem *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemClustering *&)

    Create clustering for a system.

    CreateCubeMap(const IPrecompInputCubeMap *, const IPrecompSystemClustering *const *, Geo::s32, const IPrecompSystemPreClustering *const *, Geo::IGeoProgressProxy *, IPrecompOutputCubeMap *&)

    Run the precompute for a cube map.

    CreateLightTransport(const IPrecompPackedSystem *, const IPrecompPackedSystem *const *, Geo::s32, const IPrecompSystemClustering *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemLightTransport *&)

    Create the light transport for a system.

    CreateOutputProbeOctree(const IPrecompInputProbeOctree *, const IPrecompPackedSystem *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompOutputProbeOctree *&)

    Adaptively generate probe positions within a volume, based on distance to geometry.

    CreatePreClustering(const IPrecompPackedSystem *, const IPrecompPackedSystem *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemPreClustering *&)

    Create pre-clustering for a system.

    CreateProbeSet(const IPrecompInputProbeSet *, const IPrecompSystemClustering *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompOutputProbeSet *&)

    Create the spherical harmonic data for an SH probe set.

    CreateSystemDusters(const IPrecompSystemClustering *, const IPrecompSystemClustering *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompSystemDuster *&)

    Create the platform-agnostic runtime input sample points.

    CreateSystemDusters(const IPrecompSystemClustering *, const IPrecompSystemClustering *const *, Geo::s32, const PointProjectionSurface *, Geo::s32, const PointProjectionVersion *, Geo::s32, const PointProjectionOptions *, Geo::IGeoProgressProxy *, IPrecompSystemDuster *&)

    Create the platform-agnostic runtime input sample points including versions of projected points.

    CreateSystemsByVoxelisation(const IPrecompInputSystem *, const IPrecompInputGeometry *const *, Geo::s32, float, Geo::IGeoProgressProxy *, IPrecompGeneratedSystems *&)

    Split the input system into automatically generated systems.

    CreateSystemsByVoxelisation(const IPrecompInputSystem *, const IPrecompPackedGeometry *const *, Geo::s32, float, Geo::IGeoProgressProxy *, IPrecompGeneratedSystems *&)

    Split the input system into automatically generated systems.

    CreateVisibilityData(const IPrecompSystemClustering *, const IPrecompSystemClustering *const *, Geo::s32, Geo::IGeoProgressProxy *, PrecomputedVisibilityData *&)

    Create precomputed visibility data for directional lights for a system.

    DumpInputProbeRegion(const IPrecompInputProbeRegion *, const char *)

    Dump debug data for a probe region.

    LicenseDaysRemaining()

    Number of full days remaining for the set license. Returns -1 if the set license is invalid and/or outdated.

    PackGeometry(const IPrecompInputGeometry *, Geo::IGeoProgressProxy *, IPrecompPackedGeometry *&)

    Simplify and pack geometry meshes.

    PackSystem(const IPrecompInputSystem *, const IPrecompPackedGeometry *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompPackedSystem *&)

    Pack systems.

    ProjectGeometry(const IPrecompInputGeometry *, const IPrecompPackedGeometry *const *, Geo::s32, Geo::IGeoProgressProxy *, IPrecompPackedGeometry *&)

    Project detail meshes in an pInputGeometry onto target clusters from pBaseGeometries This is guaranteed not to change the pInputGeometry and pBaseGeometries in any way, so can be done after a precompute to get new UVs for a detail mesh that was not known about when the last precompute was run.

    ProjectSystem(const IPrecompInputSystem *, const IPrecompInputGeometry *const *, Geo::s32, const IPrecompInputSystem *, const IPrecompPackedGeometry *const *, Geo::s32, const Geo::Geo2DTransform *, Geo::IGeoProgressProxy *, IPrecompPackedSystem *&)

    Project a system comprised entirely of detail mesh instances across another system.

    Release()

    Free this object that was created within the Enlighten libraries.

    SetCpuGpuMode(Geo::ECpuGpuMode)

    Sets the hardware mode for the Enlighten precompute.

    SetCpuThreadMax(Geo::s32)

    Sets the maximum number of threads that the Cpu mode will use.

    SetLicense(const char *, Geo::s32)

    Set the license string. Must set before any precompute action.

    SetMaxConcurrentRays(Geo::s32)

    Sets the total number of rays that the precompute will generate at one time. Set this only if you are concerned about memory pressure.

    SetMinimumCompatibleVersion(EMinimumCompatibleVersion)

    Sets the minimum version of Enlighten, precompute should generate data for (default is emcvEnlighten3).

    SetStateDump(EStateDump)

    Sets the level of reproduction data saved by the IPrecompute tasks.

    SetStateDumpFolder(const char *)

    Sets the folder that shall contain reproduction data for the IPrecompute tasks.

    ValidateBuildParameters(const IPrecompInputSystem *, const IPrecompInputGeometry *const *, Geo::s32, bool, bool, Geo::IGeoProgressProxy *)

    Examine the incoming data and determine if the supplied parameters will violate memory or reasonable performance limits.

    ValidateGeometryParameters(const IPrecompInputGeometry *, Geo::s32 *, Geo::IGeoProgressProxy *)

    Examine the incoming geometry and determine if the supplied parameters violate memory and performance limits.


    EMinimumCompatibleVersion


    public: enum EMinimumCompatibleVersion
    {
        emcvEnlighten3
    }


    Controls if Precompute should generate data that can be used by older Enlighten run time APIs.

    enumerators
    emcvEnlighten3

    Generate precompute data that can be consumed by Enlighten3 (and later) API.


    EStateDump


    public: enum EStateDump
    {
        esdNone,
        esdInputsOnly,
        esdAll
    }


    Controls the amount of reproduction data saved by the IPrecompute tasks.

    enumerators
    esdNone

    Do not save any dump files.

    esdInputsOnly

    Save files containing the inputs provided by the user.

    esdAll

    Save files at the input to every task, including generated files.


    virtual Geo::s32 Enlighten::IPrecompute::AssembleSystemGeometry


    public: Geo::s32 AssembleSystemGeometry
    (
        const IPrecompInputSystem * pSystem,
        const IPrecompInputGeometry *const * ppInputGeometry,
        Geo::s32 numGeometries,
        Geo::IGeoProgressProxy * progress,
        IPrecompPackedSystem *& oSystem
    )


    Assemble system geometry.

    If a system is going to be used as probe radiosity, then the input processing is greatly reduced (there is no need to pack the geometry and create the UV chart mappings).

    Parameters
    [in] pSystem

    The system to pack

    [in] ppInputGeometry

    The geometry referred to (by Id) in this system's PrecompInputInstances. You may pass more geometry items than are necessary, but all Id's used in the instances must have a packed geometry available.

    [in] numGeometries

    The number of packed geometry classes in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oSystem

    The final packed system


    virtual Geo::s32 Enlighten::IPrecompute::CalculateCubeMapSystemDependencies


    public: Geo::s32 CalculateCubeMapSystemDependencies
    (
        const IPrecompInputCubeMap * pCubeMap,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemDependencies *& oDependencies
    )


    Calculate system dependencies for a cube map.

    Each IPrecompInputCubeMap may have dependencies calculated by calling this function on it. All packed systems which are fully loaded will have their geometry fully represented in the visibility tests. Packed systems which only have a header (ie whose geometry isn't loaded) will be represented by their bounding boxes in the visibility tests. (In the HLBS these sets of systems are controlled by the "expansionDistance" parameter.)

    Parameters
    [in] pCubeMap

    The cube map for which to calculate dependencies

    [in] ppSystems

    The list of systems to include in this calculation.

    [in] numSystems

    The number of packed systems in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oDependencies

    The approximate set of system dependencies, which may be fed back into the precompute.


    virtual Geo::s32 Enlighten::IPrecompute::CalculateProbeSetSystemDependencies


    public: Geo::s32 CalculateProbeSetSystemDependencies
    (
        const IPrecompInputProbeSet * pProbeInput,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemDependencies *& oDependencies
    )


    Calculate system dependencies for a probe set.

    Each IPrecompInputProbeSet may have dependencies calculated by calling this function on it. The collection of systems passed in determines the connectivity between them, so completely isolated systems have a numSystems of 1. All packed systems which are fully loaded will have their geometry fully represented in the visibility tests. Packed systems which only have a header (ie whose geometry isn't loaded) will be represented by their bounding boxes in the visibility tests. (In the HLBS these sets of systems are controlled by the "expansionDistance" parameter.)

    Parameters
    [in] pProbeInput

    The probe set for which to calculate dependencies

    [in] ppSystems

    The list of systems to include in this calculation.

    [in] numSystems

    The number of packed systems in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oDependencies

    The approximate set of system dependencies, which may be fed back into the precompute.


    virtual Geo::s32 Enlighten::IPrecompute::CalculateSystemDependencies


    public: Geo::s32 CalculateSystemDependencies
    (
        const IPrecompPackedSystem * pSystem,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        float rayOriginsPerPixelArea,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemDependencies *& oDependencies
    )


    Calculate system dependencies for a system.

    Each IPrecompInputSystem may have dependencies calculated by calling this function on it. The collection of systems passed in determines the connectivity between them, so completely isolated systems have a numSystems of 1. All packed systems which are fully loaded will have their geometry fully represented in the visibility tests. Packed systems which only have a header (ie whose geometry isn't loaded) will be represented by their bounding boxes in the visibility tests. (In the HLBS these sets of systems are controlled by the "expansionDistance" parameter.)

    Parameters
    [in] pSystem

    The system for which to calculate dependencies

    [in] ppSystems

    The list of systems to include in this calculation. It must include at least the system in the previous argument.

    [in] numSystems

    The number of packed systems in the above array

    [in] rayOriginsPerPixelArea

    Density of ray origins - i.e. num of ray origins = rayOriginsPerPixelArea * SystemWorldArea/(minSystemPixelSize^2)

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oDependencies

    The approximate set of system dependencies, which may be fed back into the precompute.


    virtual Geo::s32 Enlighten::IPrecompute::CalculateSystemDependenciesByDistance


    public: Geo::s32 CalculateSystemDependenciesByDistance
    (
        const IPrecompInputSystem *const * pInputSystems,
        Geo::s32 numSystems,
        const IPrecompInputGeometry *const * pInputGeoms,
        Geo::s32 numGeoms,
        float maxDistanceInPixelSizeUnits,
        bool estimateFromCentre,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemsDependencies *& oDependencies
    )


    Calculate dependencies for the input systems.

    System A is dependent on system B if the centres of A and B are at a distance equal or smaller than the maxDistanceInPixelSizeUnits multiplied by the minimum pixel size of the instances in system B.

    Parameters
    [in] pInputSystems

    The input systems that will get their dependencies calculated.

    [in] numSystems

    The number of input systems

    [in] pInputGeoms

    A collection of input geometry objects, referred to by the input systems above.

    [in] numGeoms

    How many entries in the pInputGeometry array.

    [in] maxDistanceInPixelSizeUnits

    If system A's bounding box is closer than maxDistanceInPixelSizeUnits * (minPixelSize of system B) to system's B bounding box, than system A is dependent on system B. minPixelSize of a system is a minimal value of an output pixel size present among input instances making up that system.

    [in] estimateFromCentre

    If true the distance between bounding box centres is evaluated, if false the actual distance between the bounding boxes is considered (i.e. overlapping bounding boxes have a distance of less than zero.

    [in] progress

    This object is updated during this function call to give feedback on progress.

    [out] oDependencies

    Dependencies for the input systems.


    virtual bool Enlighten::IPrecompute::ClassifyInstanceAsLightmapOrProbeLit


    public: bool ClassifyInstanceAsLightmapOrProbeLit
    (
        const Geo::Matrix & instanceTransform,
        const IPrecompInputGeometry * pPrecompInputGeometry,
        float outputPixelSize,
        bool considerUserUvs,
        float autoUvMaxDistanceFactor,
        double autoUvTotalErrorThreshold,
        eMeshClassificationLightingType & result
    )


    Decides whether a given geometry instance should be probe-lit or lightmap-lit based on how good its generated Auto UVs are.

    This is used as part of Mesh Classification.

    Parameters
    [in] instanceTransform

    The matrix transform of the instance that is to be classified

    [in] pPrecompInputGeometry

    The geometry used by the instance that is to be classified

    [in] outputPixelSize

    The output pixel size assigned to the instance that is to be classified

    [in] considerUserUvs

    Should existing user UVs on the IPrecompInputGeometry be considering when running the Auto UVs algorithm

    [in] autoUvMaxDistanceFactor

    The Auto UVs algorithm used to classify the instance will use a "simpMaxDistance" (see Auto UV docs) of this factor multiplied by outputPixelSize (a good default is 0.5)

    [in] autoUvTotalErrorThreshold

    The total error reported by the Auto UVs algorithm (the total overlap ratio) is thresholded against this value to determine the classification result (a good default is 0.3)

    [out] result

    The result of the classification - either MCLT_PROBE for probe-lit or MCLT_LIGHTMAP for lightmap-lit.


    virtual bool Enlighten::IPrecompute::ClassifyInstancesAsContributingProbeLit


    public: bool ClassifyInstancesAsContributingProbeLit
    (
        const Geo::Matrix * pInstanceTransforms,
        const IPrecompInputGeometry *const * ppInstanceGeoms,
        const float * pClusterSizes,
        Geo::s32 numInstances,
        float densityWindowSizeFactor,
        bool * pResults
    )


    Decides which probe-lit instances should be contributing ("Probe Radiosity") and which should not ("Fully Dynamic") based on how much light each instance and its neighbours could block.

    This is used as part of Mesh Classification.

    Parameters
    [in] pInstanceTransforms

    The matrix transforms for each instance that is to be classified

    [in] ppInstanceGeoms

    The geometries used by each instance that is to be classified

    [in] pClusterSizes

    The cluster sizes assigned to each instance that is to be classified

    [in] numInstances

    The number of instances to classify which should match the length of the pInstanceTransforms, ppInstanceGeoms, pClusterSizes and pResults arrays.

    [in] densityWindowSizeFactor

    Specifies the size (edge length) of the window (in output pixels) in which there must be significant projected area for instances to count as contributing (a good default is 10.0)

    [out] pResults

    The results of the classification - true for each instance that should be contributing, false for each instance that should not. This should be a pointer an already allocated array of booleans, of length numInstances.


    virtual Geo::s32 Enlighten::IPrecompute::CompileClusteringOutput


    public: Geo::s32 CompileClusteringOutput
    (
        const IPrecompSystemPreClustering * pPreClustering,
        const IPrecompSystemClustering * pClustering,
        Geo::IGeoProgressProxy * progress,
        IClusteringOutput *& oClusteringOutput
    )


    Extract some data about the clustering process.

    An optional step that gives you some information for debugging.

    Parameters
    [in] pPreClustering

    The preClustering interface for the clustering being processed

    [in] pClustering

    The clustering being processed

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oClusteringOutput

    Class containing the debugging data


    virtual Geo::s32 Enlighten::IPrecompute::CompileCubeMap


    public: Geo::s32 CompileCubeMap
    (
        const IPrecompOutputCubeMap * cubeMapOutput,
        Enlighten::eSolverType targetSolver,
        Geo::IGeoProgressProxy * progress,
        IPrecompCubeMapCore *& oCubeMapCore
    )


    Compile the data from the cube map output object into runtime format.

    Each IPrecompOutputCubeMap must have this function called on it per-platform

    Parameters
    [in] cubeMapOutput

    The cube map being processed

    [in] targetSolver

    Which solver to create data for

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oCubeMapCore

    Class containing the runtime cube map data


    virtual Geo::s32 Enlighten::IPrecompute::CompileDepthCubeMap


    public: Geo::s32 CompileDepthCubeMap
    (
        const IPrecompOutputCubeMap * cubeMapOutput,
        IPrecompDepthCubeMap *& oDepthCubeMap
    )


    Compile the depth data from the cube map output object.

    Each IPrecompOutputCubeMap must have this function called on it per-platform

    Parameters
    [in] cubeMapOutput

    The cube map being processed

    [out] oDepthCubeMap

    Class containing the depth cube map data


    virtual Geo::s32 Enlighten::IPrecompute::CompileInputWorkspace


    public: Geo::s32 CompileInputWorkspace
    (
        const IPrecompSystemDuster * pDusters,
        Enlighten::eSolverType targetSolver,
        bool includeProjectedPointData,
        Geo::IGeoProgressProxy * progress,
        InputWorkspace *& oInputWorkspace
    )


    Compile the data from the dusters and radiosity cores into an InputWorkspace.

    Parameters
    [in] pDusters

    The dusters being processed

    [in] targetSolver

    Which solver to create data for

    [in] includeProjectedPointData

    When true, if projected point data is in the IPrecompSystemDuster object, it will be exported to the RadDataBlock m_ProjectedPointData in the InputWorkspace. False disables the export.

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oInputWorkspace

    Class containing the runtime InputWorkspace


    virtual Geo::s32 Enlighten::IPrecompute::CompileLightTransportOutput


    public: Geo::s32 CompileLightTransportOutput
    (
        const IPrecompSystemLightTransport * pLightTransport,
        Geo::IGeoProgressProxy * progress,
        ILightTransportOutput *& oLightTransportOutput
    )


    Extract some data about the light transport process.

    An optional step that gives you some information for debugging.

    Parameters
    [in] pLightTransport

    The light transport being processed

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oLightTransportOutput

    Class containing the debugging data


    virtual Geo::s32 Enlighten::IPrecompute::CompileMaterialData


    public: Geo::s32 CompileMaterialData
    (
        const IPrecompSystemDuster * pDusters,
        Geo::IGeoProgressProxy * progress,
        ClusterAlbedoWorkspaceMaterialData *& oMaterialData
    )


    Compile the data from the dusters into a ClusterAlbedoWorkspaceMaterialData.

    Parameters
    [in] pDusters

    The dusters being processed

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oMaterialData

    Class containing the ClusterAlbedoWorkspaceMaterialData


    virtual Geo::s32 Enlighten::IPrecompute::CompileProbeSet


    public: Geo::s32 CompileProbeSet
    (
        const IPrecompOutputProbeSet * pProbeSetOutput,
        Enlighten::eSolverType targetSolver,
        Geo::IGeoProgressProxy * progress,
        IPrecompProbeSetRadiosity *& oRadiosity
    )


    Compile the data from the probeset light transport into runtime format.

    Each IPrecompOutputProbeSet must have this function called on it per-platform

    Parameters
    [in] pProbeSetOutput

    The probeset being processed

    [in] targetSolver

    Which solver to create data for

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oRadiosity

    Class containing the runtime radiosity


    virtual Geo::s32 Enlighten::IPrecompute::CompileRadiosity


    public: Geo::s32 CompileRadiosity
    (
        const IPrecompSystemCompressedLightTransport * pLightTransport,
        Enlighten::eSolverType targetSolver,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemRadiosity *& oRadiosity
    )


    Compile the data from the light transport into runtime format.

    Each IPrecompSystemLightTransport must have this function called on it per-platform

    Parameters
    [in] pLightTransport

    The compressed light transport (ie. system) being processed

    [in] targetSolver

    Which solver to create data for

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oRadiosity

    Class containing the runtime radiosity


    virtual Geo::s32 Enlighten::IPrecompute::CompileRadiosityNormalTexture


    public: Geo::s32 CompileRadiosityNormalTexture
    (
        const IPrecompSystemCompressedLightTransport * pLightTransport,
        IPrecompRadiosityNormalTexture *& oRadiosityNormalTexture
    )


    Compile the radiosity normal texture from the light transport data.

    Parameters
    [in] pLightTransport

    The compressed light transport (ie. system) being processed.

    [out] oRadiosityNormalTexture

    Class containing the texture data.


    virtual Geo::s32 Enlighten::IPrecompute::CompressLightTransport


    public: Geo::s32 CompressLightTransport
    (
        const IPrecompSystemLightTransport * pLightTransport,
        const IPrecompSystemDuster * pDusters,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemCompressedLightTransport *& oCompiledLightTransport
    )


    Compress the data from the light transport into a tighter format.

    Each IPrecompSystemLightTransport must have this function called on it to reduce the data down to runtime-compatible levels.

    Parameters
    [in] pLightTransport

    The light transport (ie. system) being processed

    [in] pDusters

    The dusters for the system being processed

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oCompiledLightTransport

    Compressed data passed to CompileRadiosity


    virtual Geo::s32 Enlighten::IPrecompute::CreateClustering


    public: Geo::s32 CreateClustering
    (
        const IPrecompSystemPreClustering * pSystemPreClustering,
        const IPrecompPackedSystem *const * ppOtherPackedSystems,
        Geo::s32 numOtherSystems,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemClustering *& oClustering
    )


    Create clustering for a system.

    Each IPrecompInputSystem must have clustering created by calling this function on it. The collection of other packed systems passed in is used for visibility determination, so any system whose geometry could affect rays cast with the system should be supplied. Typically the safest and simplest thing is to pass the same dependencies used by light transport.

    Parameters
    [in] pSystemPreClustering

    The pre-clustering interface for the system to cluster

    [in] ppOtherPackedSystems

    The list of (other) packed systems to consider when generating this clustering. The packed system for the system to generate clustering for may be passed but will be ignored.

    [in] numOtherSystems

    The number of packed systems in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oClustering

    The system clustering, used by other stages


    virtual Geo::s32 Enlighten::IPrecompute::CreateCubeMap


    public: Geo::s32 CreateCubeMap
    (
        const IPrecompInputCubeMap * inputCubeMap,
        const IPrecompSystemClustering *const * ppClusterings,
        Geo::s32 numClusterings,
        const IPrecompSystemPreClustering *const * ppPreClusterings,
        Geo::IGeoProgressProxy * progress,
        IPrecompOutputCubeMap *& oCubeMapOutput
    )


    Run the precompute for a cube map.

    This function takes a description of a cube map as a IPrecompInputCubeMap and runs the precompute to produce an IPrecompOutputCubeMap. The runtime data can then be extracted from this object. This function requires a list of all systems the cube map is allowed to 'see', as an array of IPrecompSystemClustering objects. Removing systems that the cube map cannot see will make this stage faster.

    Parameters
    [in] inputCubeMap

    The description of the cube map to precompute

    [in] ppClusterings

    The list of clusterings to assume may be visible from this cube map

    [in] numClusterings

    The number of clusterings in the above array

    [in] ppPreClusterings

    The list of pre-clusterings to assume may be visible from this cube map

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oCubeMapOutput

    The precomputed cube map data


    virtual Geo::s32 Enlighten::IPrecompute::CreateLightTransport


    public: Geo::s32 CreateLightTransport
    (
        const IPrecompPackedSystem * pSystem,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        const IPrecompSystemClustering *const * ppClusterings,
        Geo::s32 numClusterings,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemLightTransport *& oLightTransport
    )


    Create the light transport for a system.

    Each light-mapped system must have a light transport created by calling this function on it. The clustering object for each system to be considered as input (the dependencies), whether light-mapped or not, should be passed in. These are used to determine the bounced light that a given pixel in the system of interest can see. The packed system object of each light-mapped system to be considered as input should be passed in separately. These are used to determine connectivity in light-map space, and ensure boundaries between systems are as smooth as possible.

    Parameters
    [in] pSystem

    The system to create light transport for

    [in] ppSystems

    The list of systems to include in this light transport. It must include at least the system in the previous argument.

    [in] numSystems

    The number of packed systems in the above array

    [in] ppClusterings

    The list of clusterings to include in this light transport

    [in] numClusterings

    The number of clusterings in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oLightTransport

    The system light transport, used by CompileRadiosity


    virtual Geo::s32 Enlighten::IPrecompute::CreateOutputProbeOctree


    public: Geo::s32 CreateOutputProbeOctree
    (
        const IPrecompInputProbeOctree * pProbeInput,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        Geo::IGeoProgressProxy * progress,
        IPrecompOutputProbeOctree *& pProbeOutput
    )


    Adaptively generate probe positions within a volume, based on distance to geometry.

    Parameters
    [in] pProbeInput

    The volume within which to generate probe positions.

    [in] ppSystems

    The list of systems whose geometry will be used.

    [in] numSystems

    The number of packed systems in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] pProbeOutput

    The generated probe positions, which may be fed back into the precompute.


    virtual Geo::s32 Enlighten::IPrecompute::CreatePreClustering


    public: Geo::s32 CreatePreClustering
    (
        const IPrecompPackedSystem * pSystem,
        const IPrecompPackedSystem *const * ppSystems,
        Geo::s32 numSystems,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemPreClustering *& oPreClustering
    )


    Create pre-clustering for a system.

    Each IPrecompInputSystem must have pre-clustering created by calling this function on it. The collection of systems passed in determines the connectivity between them, so completely isolated systems have a numSystems of 1.

    Parameters
    [in] pSystem

    The system to pre-cluster

    [in] ppSystems

    The list of systems to include in this pre-clustering. It must include at least the system in the previous argument.

    [in] numSystems

    The number of packed systems in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oPreClustering

    The system pre-clustering, used by other stages


    virtual Geo::s32 Enlighten::IPrecompute::CreateProbeSet


    public: Geo::s32 CreateProbeSet
    (
        const IPrecompInputProbeSet * pProbeSet,
        const IPrecompSystemClustering *const * ppClusterings,
        Geo::s32 numClusterings,
        Geo::IGeoProgressProxy * progress,
        IPrecompOutputProbeSet *& oProbeSetOutput
    )


    Create the spherical harmonic data for an SH probe set.

    Each IPrecompInputProbeSet must have spherical harmonic data created by calling this function on it. The collection of clusters passed in determines the connectivity between them, so completely isolated probe sets have a numClusterings of 1.

    Parameters
    [in] pProbeSet

    The SH probe set definition

    [in] ppClusterings

    The list of clusterings to include in this probe set

    [in] numClusterings

    The number of clusterings in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oProbeSetOutput

    The computed sh probe set, used by the runtime


    virtual Geo::s32 Enlighten::IPrecompute::CreateSystemDusters


    public: Geo::s32 CreateSystemDusters
    (
        const IPrecompSystemClustering * pClustering,
        const IPrecompSystemClustering *const * ppClusterings,
        Geo::s32 numClusterings,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemDuster *& oDuster
    )


    Create the platform-agnostic runtime input sample points.

    Parameters
    [in] pClustering

    The clustering (ie. system) being processed

    [in] ppClusterings

    The list of clusterings to include in this Create System Dusters

    [in] numClusterings

    The number of clusterings in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oDuster

    Class containing the runtime input sample points

    Note

    There are two versions of this function. This simpler version assumes you do not want any projected point data generated. It is equivalent to calling the second function as: CreateSystemDusters(pClustering, ppClusterings, numClusterings, NULL, 0, NULL, 0, NULL, progress, oDuster);


    virtual Geo::s32 Enlighten::IPrecompute::CreateSystemDusters


    public: Geo::s32 CreateSystemDusters
    (
        const IPrecompSystemClustering * pClustering,
        const IPrecompSystemClustering *const * ppClusterings,
        Geo::s32 numClusterings,
        const PointProjectionSurface * surfaceArray,
        Geo::s32 numSurfaces,
        const PointProjectionVersion * versionArray,
        Geo::s32 numVersions,
        const PointProjectionOptions * projectionOptions,
        Geo::IGeoProgressProxy * progress,
        IPrecompSystemDuster *& oDuster
    )


    Create the platform-agnostic runtime input sample points including versions of projected points.

    This function will optionally generate alternative versions of the input sample points (duster points). If created, these will be exported via the m_ProjectedPointData RadDataBlock of the InputWorkspace runtime object when this class is compiled to a specific platform. If you do not want point projection data, you can simply pass NULLs as appropriate. There is a second version of this function which does this for you. In particular, if no versions are specified (numVersions == 0), the call will succeed and will not generate any additional data.

    The m_ProjectedPointData RadDataBlock in the InputWorkspace is a collection of per-instance sets of input sample points that have been projected to the meshes provided to this call. The m_ProjectedPointData RadDataBlock is optional and will only be loaded at runtime if you provide the Enlighten::Iff::ProjectedPointsInputWorkspaceDataSection to Enlighten::ReadInputWorkspaceFromFile().

    Point projection works well when projecting onto an alternative representation of the same geometry, such as a different LOD level. The geometry to project onto is provided as a set of 'surfaces', each of which consist of an IPrecompInputMesh, a transformation matrix and boolean. This is the PointProjectionSurface class. Note that only the positions and normals of the meshes are used in the projection. The set of surfaces to use is specified per-instance, per-version, with the PointProjectionVersion class.

    "Versions" can be thought of as a generalisation of LODs. They are just an alternative representation for an instance, and although version IDs need to be unique per-instance, they can be any value. In particular, they do not need to start at 0, or be contiguous, or positive (e.g. -100,-1,4,5 are all fine). This function will fail and report an error if you specify the same version ID for an instance more than once. It will also fail if the m_TargetSurfaces array is 0 length, or contains invalid indices or refers to null pointers and so on, but we will accept geometry that is empty (no triangles or vertices). In this case, it is not possible to project the points so we keep their original locations and create a version entry with this data. This is redundant (the points are the same), but it allows us to handle this scenario correctly and without creating an edge case in the runtime. In particular, all versions of the points for an instance will have the same number of points in all cases.

    Instances that are known by the precompute (and therefore the InputWorkspace), but do not have projected point versions explicitly created for them have zero points in the resulting RadDataBlock. See the runtime API for further details.

    The projection code will find the closest position on the specified geometry for each duster point. But it can also attempt to find a better position in front of itself, along its normal, if this helps it sit on top of nearby obscuring geometry. This can help prevent points being hidden under small details. This behaviour is optional and disabled if maxRayIntersectionDistance in the PointProjectionOptions class is 0 or negative. (Default is 0.)

    The ppClusterings array of dependent clusterings is used to correctly determine transparency offsets per cluster, it has to contain the pClustering system.


    virtual Geo::s32 Enlighten::IPrecompute::CreateSystemsByVoxelisation


    public: Geo::s32 CreateSystemsByVoxelisation
    (
        const IPrecompInputSystem * pInputSystem,
        const IPrecompInputGeometry *const * pInputGeoms,
        Geo::s32 numGeoms,
        float voxelSizeInPixelSizeUnits,
        Geo::IGeoProgressProxy * progress,
        IPrecompGeneratedSystems *& oSystems
    )


    Split the input system into automatically generated systems.

    Parameters
    [in] pInputSystem

    The input system that will be split.

    [in] pInputGeoms

    A collection of input geometry objects, referred to by the above.

    [in] numGeoms

    How many entries in the pInputGeoms array.

    [in] voxelSizeInPixelSizeUnits

    Size of a voxel in pixelSize units. If input geometries (pInputGeoms) have different pixelSizes than the minimum one is used. All instances whose bounding box centre falls into the same voxel are grouped into one system.

    [in] progress

    This object is updated during this function call to give feedback on progress.

    [out] oSystems

    Details about the instances in each system.


    virtual Geo::s32 Enlighten::IPrecompute::CreateSystemsByVoxelisation


    public: Geo::s32 CreateSystemsByVoxelisation
    (
        const IPrecompInputSystem * pInputSystem,
        const IPrecompPackedGeometry *const * pPackedGeoms,
        Geo::s32 numGeoms,
        float voxelSizeInPixelSizeUnits,
        Geo::IGeoProgressProxy * progress,
        IPrecompGeneratedSystems *& oSystems
    )


    Split the input system into automatically generated systems.

    This version of the function takes a collection of packed geometry objects allowing it to check that each system generated will pack. The instances in a generated system that would fail to pack using the provided voxel size are split into sub-voxels, ensuring valid systems are always generated.

    Parameters
    [in] pInputSystem

    The input system that will be split.

    [in] pPackedGeoms

    A collection of packed geometry objects, referred to by the above.

    [in] numGeoms

    How many entries in the pPackedGeoms array.

    [in] voxelSizeInPixelSizeUnits

    Size of a voxel in pixelSize units. If input geometries (pInputGeoms) have different pixelSizes than the minimum one is used. All instances whose bounding box centre falls into the same voxel are grouped into one system.

    [in] progress

    This object is updated during this function call to give feedback on progress.

    [out] oSystems

    Details about the instances in each system.


    virtual Geo::s32 Enlighten::IPrecompute::CreateVisibilityData


    public: Geo::s32 CreateVisibilityData
    (
        const IPrecompSystemClustering * thisClustering,
        const IPrecompSystemClustering *const * allClusterings,
        Geo::s32 numClusterings,
        Geo::IGeoProgressProxy * progress,
        PrecomputedVisibilityData *& oVisibility
    )


    Create precomputed visibility data for directional lights for a system.

    Parameters
    [in] thisClustering

    The clusterings for the system to precompute visibility for

    [in] allClusterings

    The clusterings for all systems to be included in the visibility computation.

    [in] numClusterings

    The number of clusterings in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oVisibility

    The computed visibility, used by the runtime


    virtual void Enlighten::IPrecompute::DumpInputProbeRegion


    public: void DumpInputProbeRegion
    (
        const IPrecompInputProbeRegion * pProbeRegion,
        const char * name
    )


    Dump debug data for a probe region.

    Parameters
    [in] pProbeRegion

    The region for which to dump debug data.

    [in] name

    The unique name of the region, used to construct the filename.


    virtual Geo::s32 Enlighten::IPrecompute::LicenseDaysRemaining


    public: Geo::s32 LicenseDaysRemaining()


    Number of full days remaining for the set license. Returns -1 if the set license is invalid and/or outdated.


    virtual Geo::s32 Enlighten::IPrecompute::PackGeometry


    public: Geo::s32 PackGeometry
    (
        const IPrecompInputGeometry * pGeometry,
        Geo::IGeoProgressProxy * progress,
        IPrecompPackedGeometry *& oGeometry
    )


    Simplify and pack geometry meshes.

    Each IPrecompInputGeometry must be analysed and packed by calling this function on it.

    Parameters
    [in] pGeometry

    The geometry to simplify and pack

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oGeometry

    The final packed geometry

    Returns

    Returns 0 if successful, otherwise an integer which can be interpreted as a GeometryBuildResult. More detailed error information can be collected by implementing the ReportError() method of the IGeoProgressProxy object.


    virtual Geo::s32 Enlighten::IPrecompute::PackSystem


    public: Geo::s32 PackSystem
    (
        const IPrecompInputSystem * pSystem,
        const IPrecompPackedGeometry *const * ppPackedGeometry,
        Geo::s32 numGeometries,
        Geo::IGeoProgressProxy * progress,
        IPrecompPackedSystem *& oSystem
    )


    Pack systems.

    Each IPrecompInputSystem must be packed by calling this function on it.

    Parameters
    [in] pSystem

    The system to pack

    [in] ppPackedGeometry

    The geometry referred to (by Id) in this system's PrecompInputInstances. You may pass more geometry items than are necessary, but all Id's used in the instances must have a packed geometry available.

    [in] numGeometries

    The number of packed geometry classes in the above array

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oSystem

    The final packed system

    Returns

    Returns zero if successful, non-zero if an error occurred. More detailed error information can be collected by implementing the ReportError() method of the IGeoProgressProxy object.


    virtual Geo::s32 Enlighten::IPrecompute::ProjectGeometry


    public: Geo::s32 ProjectGeometry
    (
        const IPrecompInputGeometry * pInputGeometry,
        const IPrecompPackedGeometry *const * pBaseGeometries,
        Geo::s32 numBaseGeoms,
        Geo::IGeoProgressProxy * progress,
        IPrecompPackedGeometry *& oGeometry
    )


    Project detail meshes in an pInputGeometry onto target clusters from pBaseGeometries This is guaranteed not to change the pInputGeometry and pBaseGeometries in any way, so can be done after a precompute to get new UVs for a detail mesh that was not known about when the last precompute was run.

    Parameters
    [in] pInputGeometry

    The geometry to project (must contain only detail meshes)

    [in] pBaseGeometries

    An array of packed geometries to project onto

    [in] numBaseGeoms

    Number of geometries in pBaseGeometries

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oGeometry

    The projected geometry.


    virtual Geo::s32 Enlighten::IPrecompute::ProjectSystem


    public: Geo::s32 ProjectSystem
    (
        const IPrecompInputSystem * pProjectedSystem,
        const IPrecompInputGeometry *const * ppProjSysGeoms,
        Geo::s32 numProjSysGeometries,
        const IPrecompInputSystem * pTargetSystem,
        const IPrecompPackedGeometry *const * ppTargetSysGeoms,
        Geo::s32 numTargetSysGeometries,
        const Geo::Geo2DTransform * pTargetUvTransforms,
        Geo::IGeoProgressProxy * progress,
        IPrecompPackedSystem *& oSystem
    )


    Project a system comprised entirely of detail mesh instances across another system.

    Parameters
    [in] pProjectedSystem

    The system to project.

    [in] ppProjSysGeoms

    The geometry referred to (by Id) in this projected system's PrecompInputInstances.

    [in] numProjSysGeometries

    The number of input geometry objects in the ppProjSysGeoms array.

    [in] pTargetSystem

    The system to project onto.

    [in] ppTargetSysGeoms

    The geometry referred to in the target system's PrecompInputInstances.

    [in] numTargetSysGeometries

    The number of packed geometry classes in the above array

    [in] pTargetUvTransforms

    The UV transforms obtained from the result of packing the system - one UV Transform for each instance in the target system.

    [in] progress

    This object is updated during this function call to give feedback on progress

    [out] oSystem

    The final projected system. The UV projection information is stored in the IPrecompPackedInstances.


    virtual void Geo::IGeoReleasable::Release


    public: void Release()


    Free this object that was created within the Enlighten libraries.

    Expect this to behave in a similar way to calling 'delete(this)'


    virtual void Enlighten::IPrecompute::SetCpuGpuMode


    public: void SetCpuGpuMode
    (
        Geo::ECpuGpuMode mode
    )


    Sets the hardware mode for the Enlighten precompute.


    virtual void Enlighten::IPrecompute::SetCpuThreadMax


    public: void SetCpuThreadMax
    (
        Geo::s32 maxThreads
    )


    Sets the maximum number of threads that the Cpu mode will use.


    virtual bool Enlighten::IPrecompute::SetLicense


    public: bool SetLicense
    (
        const char * licenseData,
        Geo::s32 licenseLength
    )


    Set the license string. Must set before any precompute action.


    virtual void Enlighten::IPrecompute::SetMaxConcurrentRays


    public: void SetMaxConcurrentRays
    (
        Geo::s32 totalRays
    )


    Sets the total number of rays that the precompute will generate at one time. Set this only if you are concerned about memory pressure.


    virtual void Enlighten::IPrecompute::SetMinimumCompatibleVersion


    public: void SetMinimumCompatibleVersion
    (
        EMinimumCompatibleVersion minimumVersion
    )


    Sets the minimum version of Enlighten, precompute should generate data for (default is emcvEnlighten3).


    virtual void Enlighten::IPrecompute::SetStateDump


    public: void SetStateDump
    (
        EStateDump state
    )


    Sets the level of reproduction data saved by the IPrecompute tasks.


    virtual bool Enlighten::IPrecompute::SetStateDumpFolder


    public: bool SetStateDumpFolder
    (
        const char * folder
    )


    Sets the folder that shall contain reproduction data for the IPrecompute tasks.


    virtual Geo::s32 Enlighten::IPrecompute::ValidateBuildParameters


    public: Geo::s32 ValidateBuildParameters
    (
        const IPrecompInputSystem * pSystem,
        const IPrecompInputGeometry *const * ppGeometry,
        Geo::s32 numGeometries,
        bool estimateNumOutputPixels,
        bool estimateNumClusters,
        Geo::IGeoProgressProxy * progress
    )


    Examine the incoming data and determine if the supplied parameters will violate memory or reasonable performance limits.

    Parameters
    [in] pSystem

    The system to validate.

    [in] ppGeometry

    The geometry referred to (by Id) in this system's PrecompInputInstances. You may pass more geometry items than are necessary

    [in] numGeometries

    The number of input geometry classes in the above array

    [in] estimateNumOutputPixels

    True if the estimated number of output pixels that the system will require should be estimated and validated, false if not.

    [in] estimateNumClusters

    True if the estimated number of clusters that the system will require should be estimated and validated, false if not.

    [in] progress

    This object is updated during this function call to give feedback on progress

    Returns

    Returns zero if successful, non-zero if the validation fails. Please refer to the errors reported via the ReportError() method of the IGeoProgressProxy object for details.


    virtual Geo::s32 Enlighten::IPrecompute::ValidateGeometryParameters


    public: Geo::s32 ValidateGeometryParameters
    (
        const IPrecompInputGeometry * pGeometry,
        Geo::s32 * oOutputPixelLowerBound,
        Geo::IGeoProgressProxy * progress
    )


    Examine the incoming geometry and determine if the supplied parameters violate memory and performance limits.

    This function will compute a lower bound on the number of output pixels, based on the surface area of the geometry and its output pixel size. If this lower bound exceeds the maximum size of a system then the function will fail. This is only intended as a sanity check, to catch the case where the output pixel size mismatches the geometry by order(s) of magnitude.

    Parameters
    [in] pGeometry

    The geometry to validate.

    [in] oOutputPixelLowerBound

    Optional pointer to receive the lower bound on the number of pixels as output, if required.

    [in] progress

    This object is updated during this function call to give feeback on progress

    Returns

    0 on success, non-zero if the validation fails.

    , multiple selections available,
    {"serverDuration": 9, "requestCorrelationId": "8b6ff697afd441d48d1820b122f42bee"}