This is the documentation for Enlighten.

class Enlighten IBake

class Enlighten::IBake

    └>Geo::IGeoReleasable

The Low Level Enlighten Baking API.

Functions

Name Description
BakeProbeSetDirect(const IPrecompInputProbeSet *, const IBakeVisibilityBuffer *, Geo::IGeoProgressProxy *, IBakeOutputProbeSet *&)

Calculates the direct light output for a given probe set and set of lights.

BakeProbeSetVisibility(const IPrecompInputProbeSet *, const IBakeVisibilityBuffer *, const Geo::GeoGuid &, Geo::IGeoProgressProxy *, IBakeOutputProbeSetVisibility *&)

Calculates the light mask for a direct light for a given probe set.

BakeSystemAO(const IBakeInputSystem *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeOutputSystemAO *&)

Calculates the AO contribution for a given system.

BakeSystemDirect(const IBakeInputSystem *, const IBakeVisibilityBuffer *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeOutputSystemDirect *&)

Calculates the direct light output for a given system and set of lights.

BakeSystemFinalGather(const IBakeInputSystem *, const IBakeSolvedRuntime *, const IBakeInputRayOriginPositions *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, Geo::u32, const IBakeInputSystem *const *, const IBakeOutputSystemDirect *const *, const IBakeOutputSystemIndirect *const *, IBakeOutputSystemFinalGather *&)

Refines the indirect light output for a given system and set of lights using previously calculated direct and indirect output.

BakeSystemIndirect(const IBakeInputSystem *, const IBakeSolvedRuntime *, const IBakeInputRayOriginPositions *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeOutputSystemIndirect *&)

Calculates the indirect light output for a given system and set of lights.

BakeSystemRadiosityNormal(const IBakeInputSystem *, const IBakeSolvedRuntime *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeOutputSystemRadiosityNormal *&)

Calculates the radiosity normal texture for a given system.

BakeSystemVisibility(const IBakeInputSystem *, const IBakeVisibilityBuffer *, const Geo::GeoGuid &, const IBakeSystemResource *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeOutputSystemVisibility *&)

Calculates the visibility for a given light.

CreateRuntimeLighting(const IBakeInputSystem *, const IPrecompSystemDuster *, const IPrecompPackedSystem *, const CpuTextureElement *, const CpuTextureElement *, float, const IBakeInputLighting *, IBakeRuntimeLighting *&)

Creates the IBakeRuntimeLighting for a given Enlighten system.

CreateSystemResource(const IBakeInputSystem *const *, Geo::s32, bool, Geo::IGeoProgressProxy *, IBakeSystemResource *&)

Combines multiple IBakeInputSystem objects into a single IBakeSystemResource.

FinaliseRuntimeLighting(IBakeRuntimeLighting *)

Finalises the IBakeRuntimeLighting for a given Enlighten system.

GetDebugPixelCoordinates(const IBakeInputSystem *)

Obtains reference to an array of debug pixel coordinates for a given system.

GetDebugPixelCoordinates(const IBakeInputSystem *)

Obtains reference to an array of debug pixel coordinates for a given system.

Release()

Free this object that was created within the Enlighten libraries.

RunEnlightenSolver(const IBakeInputRuntime *, const IBakeRuntimeLighting *const *, Geo::IGeoProgressProxy *, IBakeSolvedRuntime *&)

Runs the runtime radiosity solver for the IBakeInputRuntime, yielding data for the indirect baking.

SetCpuGpuMode(Geo::ECpuGpuMode)

Sets the hardware mode for the Enlighten baking.

SetCpuThreadMax(Geo::s32)

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

SetMaxConcurrentRays(Geo::s32)

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

SetRaySetDumpFolder(const char *)

Sets the folder to dump traced per-pixel rays to.

SetRootFolder(const char *)

Sets the root folder.

SetStateDump(EStateDump)

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

SetStateDumpFolder(const char *)

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

UpdateProbeVisibilityBuffer(const IPrecompInputProbeSet *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputLighting *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeVisibilityBuffer *&)

Updates (or creates from scratch) a light visibility buffer for use with probe lighting.

UpdateRuntimeLighting(const IBakeInputSystem *, const IBakeTextureManager *, const IBakeVisibilityBuffer *, const Geo::v128 *, const Geo::v128 *, const IBakeInputProperties *, Geo::IGeoProgressProxy *, IBakeRuntimeLighting *)

Copies lighting information from a lightmap into the IBakeRuntimeLighting of an Enlighten system.

UpdateVisibilityBuffer(const IBakeInputSystem *, const IBakeSystemResource *, const IBakeTextureManager *, const IBakeInputLighting *, const IBakeInputProperties *, bool, Geo::IGeoProgressProxy *, IBakeVisibilityBuffer *&)

Updates (or creates from scratch) a light visibility buffer.

Typedefs

Name Description
Geo::GeoArray< Geo::GeoPair< Geo::s32, Geo::s32 > > DebugPixelCoordinates

X,Y coordinate of a debug pixel.

Enums

Name Description
EStateDump

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


virtual Geo::s32 Enlighten::IBake::BakeProbeSetDirect


public: Geo::s32 BakeProbeSetDirect
(
    const IPrecompInputProbeSet * pProbes,
    const IBakeVisibilityBuffer * pVisBuffer,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputProbeSet *& oDirect
)


Calculates the direct light output for a given probe set and set of lights.

If you want separate textures for each light, call this once for each light.

Parameters
[in] pProbes

The input probes

[in] pVisBuffer

The light visibility buffer, created from the visible meshes.

[in] progress

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

[out] oDirect

The calculated direct lighting.


virtual Geo::s32 Enlighten::IBake::BakeProbeSetVisibility


public: Geo::s32 BakeProbeSetVisibility
(
    const IPrecompInputProbeSet * pProbes,
    const IBakeVisibilityBuffer * pVisBuffer,
    const Geo::GeoGuid & lightId,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputProbeSetVisibility *& oVisibility
)


Calculates the light mask for a direct light for a given probe set.

If you want separate textures for each light, call this once for each light.

Parameters
[in] pProbes

The input probes

[in] pVisBuffer

The light visibility buffer, created from the visible meshes.

[in] lightId

The GUID of the light to get light mask from

[in] progress

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

[out] oVisibility

The calculated visibility data.


virtual Geo::s32 Enlighten::IBake::BakeSystemAO


public: Geo::s32 BakeSystemAO
(
    const IBakeInputSystem * pSystem,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputSystemAO *& oAO
)


Calculates the AO contribution for a given system.

Parameters
[in] pSystem

The system of interest.

[in] pSystemResource

All systems in the baking.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. normal textures). Can be NULL.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[out] oAO

The calculated AO data.


virtual Geo::s32 Enlighten::IBake::BakeSystemDirect


public: Geo::s32 BakeSystemDirect
(
    const IBakeInputSystem * pSystem,
    const IBakeVisibilityBuffer * pVisBuffer,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputSystemDirect *& oDirect
)


Calculates the direct light output for a given system and set of lights.

If you want separate textures for each light, call this once for each light.

Parameters
[in] pSystem

The system of interest.

[in] pVisBuffer

The light visibility buffer, created from the visible meshes.

[in] pSystemResource

All systems in the baking. Can be NULL if the PostProcessingFilterSize property is 0.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (e.g. normal textures). Can be NULL.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[out] oDirect

The calculated direct lighting.


virtual Geo::s32 Enlighten::IBake::BakeSystemFinalGather


public: Geo::s32 BakeSystemFinalGather
(
    const IBakeInputSystem * pSystem,
    const IBakeSolvedRuntime * pRuntime,
    const IBakeInputRayOriginPositions * pRayOriginPositions,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    Geo::u32 numInputSystems,
    const IBakeInputSystem *const * pSystems,
    const IBakeOutputSystemDirect *const * pOutputSystemsDirect,
    const IBakeOutputSystemIndirect *const * pOutputSystemsIndirect,
    IBakeOutputSystemFinalGather *& oIndirect
)


Refines the indirect light output for a given system and set of lights using previously calculated direct and indirect output.

Parameters
[in] pSystem

The system of interest.

[in] pRuntime

The system runtime data from the Enlighten Precompute.

[in] pRayOriginPositions

The positions of all ray origins of all systems. If NULL no visibility aware upsampling takes place.

[in] pSystemResource

All systems in the baking. If NULL no visibility aware upsampling takes place.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. normal textures). Can be NULL.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[in] numInputSystems

Number of systems in the array of all systems.

[in] pSystems

Array of all systems.

[in] pOutputSystemsDirect

Array of the calculated direct lighting for all systems.

[in] pOutputSystemsIndirect

Array of the calculated indirect lighting for all systems.

[out] oIndirect

The calculated indirect lighting.


virtual Geo::s32 Enlighten::IBake::BakeSystemIndirect


public: Geo::s32 BakeSystemIndirect
(
    const IBakeInputSystem * pSystem,
    const IBakeSolvedRuntime * pRuntime,
    const IBakeInputRayOriginPositions * pRayOriginPositions,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputSystemIndirect *& oIndirect
)


Calculates the indirect light output for a given system and set of lights.

If you want separate textures for each light, call this once for each light.

Parameters
[in] pSystem

The system of interest.

[in] pRuntime

The system runtime data from the Enlighten Precompute.

[in] pRayOriginPositions

The positions of all ray origins of all systems. If NULL no visibility aware upsampling takes place.

[in] pSystemResource

All systems in the baking. If NULL no visibility aware upsampling takes place.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. normal textures). Can be NULL.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[out] oIndirect

The calculated indirect lighting.


virtual Geo::s32 Enlighten::IBake::BakeSystemRadiosityNormal


public: Geo::s32 BakeSystemRadiosityNormal
(
    const IBakeInputSystem * pSystem,
    const IBakeSolvedRuntime * pRuntime,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputSystemRadiosityNormal *& oRadiosityNormal
)


Calculates the radiosity normal texture for a given system.

Each pixel encodes the normal that was used to calculate the Enlighten irradiance, but rescaled into the used baking UV space rather than the Enlighten UV space.

Parameters
[in] pSystem

The system of interest.

[in] pRuntime

The system runtime data from the Enlighten Precompute.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[out] oRadiosityNormal

The calculated indirect lighting.


virtual Geo::s32 Enlighten::IBake::BakeSystemVisibility


public: Geo::s32 BakeSystemVisibility
(
    const IBakeInputSystem * pSystem,
    const IBakeVisibilityBuffer * pVisBuffer,
    const Geo::GeoGuid & lightId,
    const IBakeSystemResource * pSystemResource,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeOutputSystemVisibility *& oVisibility
)


Calculates the visibility for a given light.

Parameters
[in] pSystem

The system of interest.

[in] pVisBuffer

The visibility buffer of the system of interest.

[in] lightId

The GUID of the light.

[in] pSystemResource

All systems in the baking. Can be NULL if the PostProcessingFilterSize property is 0.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[out] oVisibility

The calculated visibility data.


virtual Geo::s32 Enlighten::IBake::CreateRuntimeLighting


public: Geo::s32 CreateRuntimeLighting
(
    const IBakeInputSystem * pEnlightenSystem,
    const IPrecompSystemDuster * duster,
    const IPrecompPackedSystem * packedSystem,
    const CpuTextureElement * albedoTex,
    const CpuTextureElement * emissiveTex,
    float emissiveMax,
    const IBakeInputLighting * pLighting,
    IBakeRuntimeLighting *& oLighting
)


Creates the IBakeRuntimeLighting for a given Enlighten system.

This contains the runtime albedo and emissive textures for Enlighten, with the direct input lighting baked into the emissive texture.

Parameters
[in] pEnlightenSystem

The system of interest.

[in] duster

The precompute input sample point information, used to produce input lighting.

[in] packedSystem

The precompute packed system, used to extract the chart mask that will be used for dilation.

[in] albedoTex

(optional) Albedo information for the entire Enlighten system, if available.

[in] emissiveTex

(optional) Emissive information for the entire Enlighten system, if available.

[in] emissiveMax

(optional) Maximum encoded value in the RGBM emissive texture, if set.

[in] pLighting

Holds the emissive environment, usually calculated from a cube map. May be NULL.

[out] oLighting

The Enlighten runtime TextureAlbedo textures.


virtual Geo::s32 Enlighten::IBake::CreateSystemResource


public: Geo::s32 CreateSystemResource
(
    const IBakeInputSystem *const * ppSystems,
    Geo::s32 numSystems,
    bool isEnlightenResource,
    Geo::IGeoProgressProxy * progress,
    IBakeSystemResource *& oSystemResource
)


Combines multiple IBakeInputSystem objects into a single IBakeSystemResource.

Each system may depend on other systems nearby; this function groups them together for the later baking steps.

Parameters
[in] ppSystems

The list of systems to include.

[in] numSystems

The number of systems in the above array.

[in] isEnlightenResource

Do the IBakeInputSystems represent Enlighten systems included in the radiosity computation.

[in] progress

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

[out] oSystemResource

The system resource, used by later stages to do baking.


virtual Geo::s32 Enlighten::IBake::FinaliseRuntimeLighting


public: Geo::s32 FinaliseRuntimeLighting
(
    IBakeRuntimeLighting * ioLighting
)


Finalises the IBakeRuntimeLighting for a given Enlighten system.

When all lightmap data has been copied into the object (with UpdateRuntimeLighting) call this method.

Parameters
[inout] ioLighting

The Enlighten runtime TextureAlbedo textures.


virtual DebugPixelCoordinates& Enlighten::IBake::GetDebugPixelCoordinates


public: DebugPixelCoordinates & GetDebugPixelCoordinates
(
    const IBakeInputSystem * pSystem
)


Obtains reference to an array of debug pixel coordinates for a given system.


virtual const DebugPixelCoordinates& Enlighten::IBake::GetDebugPixelCoordinates


public: const DebugPixelCoordinates & GetDebugPixelCoordinates
(
    const IBakeInputSystem * pSystem
) const


Obtains reference to an array of debug pixel coordinates for a given system.


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 Geo::s32 Enlighten::IBake::RunEnlightenSolver


public: Geo::s32 RunEnlightenSolver
(
    const IBakeInputRuntime * pRuntime,
    const IBakeRuntimeLighting *const * pLitMaterials,
    Geo::IGeoProgressProxy * progress,
    IBakeSolvedRuntime *& oSolvedRuntime
)


Runs the runtime radiosity solver for the IBakeInputRuntime, yielding data for the indirect baking.

Parameters
[in] pRuntime

Runtime data from the Enlighten Precompute.

[in] pLitMaterials

The material objects created from the CreateRuntimeMaterials call; emissive channel contains baked light data.

[in] progress

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

[out] oSolvedRuntime

The indirect lighting information from the Enlighten runtime.


virtual void Enlighten::IBake::SetCpuGpuMode


public: void SetCpuGpuMode
(
    Geo::ECpuGpuMode mode
)


Sets the hardware mode for the Enlighten baking.


virtual void Enlighten::IBake::SetCpuThreadMax


public: void SetCpuThreadMax
(
    Geo::s32 maxThreads
)


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


virtual void Enlighten::IBake::SetMaxConcurrentRays


public: void SetMaxConcurrentRays
(
    Geo::s32 totalRays
)


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


virtual bool Enlighten::IBake::SetRaySetDumpFolder


public: bool SetRaySetDumpFolder
(
    const char * folder
)


Sets the folder to dump traced per-pixel rays to.


virtual bool Enlighten::IBake::SetRootFolder


public: bool SetRootFolder
(
    const char * folder
)


Sets the root folder.


virtual void Enlighten::IBake::SetStateDump


public: void SetStateDump
(
    EStateDump state
)


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


virtual bool Enlighten::IBake::SetStateDumpFolder


public: bool SetStateDumpFolder
(
    const char * folder
)


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


virtual Geo::s32 Enlighten::IBake::UpdateProbeVisibilityBuffer


public: Geo::s32 UpdateProbeVisibilityBuffer
(
    const IPrecompInputProbeSet * pProbes,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputLighting * pLighting,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeVisibilityBuffer *& ioVisBuffer
)


Updates (or creates from scratch) a light visibility buffer for use with probe lighting.

The return value is as follows: 0 if the buffer was correctly updated 1 if the visibility was already up to date 2 if there was a failure updating the buffer

If you want separate probe set values for each light, call this once for each light.

Parameters
[in] pProbes

The probe set of interest.

[in] pSystemResource

All systems in the baking.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. opacity textures). Can be NULL.

[in] pLighting

The lights for this system.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[inout] ioVisBuffer

The calculated buffer. If you are updating an existing buffer, pass it in here.


virtual Geo::s32 Enlighten::IBake::UpdateRuntimeLighting


public: Geo::s32 UpdateRuntimeLighting
(
    const IBakeInputSystem * pSystem,
    const IBakeTextureManager * pTexMgr,
    const IBakeVisibilityBuffer * pVisBuffer,
    const Geo::v128 * albedoDilatedPtr,
    const Geo::v128 * emissiveDilatedPtr,
    const IBakeInputProperties * pBakeProperties,
    Geo::IGeoProgressProxy * progress,
    IBakeRuntimeLighting * ioLighting
)


Copies lighting information from a lightmap into the IBakeRuntimeLighting of an Enlighten system.

Parameters
[in] pSystem

The system of interest.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. normal textures). Can be NULL.

[in] pVisBuffer

The light visibility buffer, created from only the meshes included in the radiosity computation.

[in] albedoDilatedPtr

(optional) Additional albedo information, if not supplied we assume the material to be white, in gamma-2 format. This texture must have an alpha channel masking pixels that have geometry. The alpha values should be > 0.0 for rendered pixels and 0.0 for gutter pixels.

[in] emissiveDilatedPtr

(optional) Additional emissive information, if not supplied we assume the material to not be emissive. This texture must have an alpha channel masking pixels that have geometry. The alpha values should be > 0.0 for rendered pixels and 0.0 for gutter pixels.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] progress

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

[inout] ioLighting

The Enlighten runtime TextureAlbedo textures.


virtual Geo::s32 Enlighten::IBake::UpdateVisibilityBuffer


public: Geo::s32 UpdateVisibilityBuffer
(
    const IBakeInputSystem * pSystem,
    const IBakeSystemResource * pSystemResource,
    const IBakeTextureManager * pTexMgr,
    const IBakeInputLighting * pLighting,
    const IBakeInputProperties * pBakeProperties,
    bool target,
    Geo::IGeoProgressProxy * progress,
    IBakeVisibilityBuffer *& ioVisBuffer
)


Updates (or creates from scratch) a light visibility buffer.

The return value is as follows: 0 if the buffer was correctly updated 1 if the visibility was already up to date 2 if there was a failure updating the buffer

If you want separate textures for each light, call this once for each light.

Parameters
[in] pSystem

The system of interest.

[in] pSystemResource

All systems in the baking.

[in] pTexMgr

A texture manager that provides textures used in the visibility stage (eg. opacity textures). Can be NULL.

[in] pLighting

The lights for this system.

[in] pBakeProperties

Controls all options for the Bake API, including texture size, unit scale, etc.

[in] target

Whether the system is included in the radiosity computation.

[in] progress

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

[inout] ioVisBuffer

The calculated buffer. If you are updating an existing buffer, pass it in here.


EStateDump


public: enum EStateDump
{
    esdNone,
    esdInputsOnly,
    esdAll
}


Controls the amount of reproduction data saved by the IBake 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.