This is the documentation for Enlighten.
class Enlighten IBake
class Enlighten::IBake
The Low Level Enlighten Baking API.
Functions
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. |