This is the documentation for Enlighten.

.paramset format


The XML schema for the .paramset file format is available in Src/Samples/Libraries/GeoEn2Support/paramset.xsd.

<parameterSetList>

Your paramsets must be enclosed within a single <parameterSetList> element, with a version attribute set to 1.

Your <parameterSetList> element may contain any number of <parameterSet><probesParameterSet> and <cubeMapParameterSet> elements.

<parameterSet>

A set of parameters that affect systems.

Attribute

Usage

Description

Values

id

Required

The unique identifier of the parameter set.

Non-negative integer

name

Required

The name of the parameter set.

String

clusterSize

Essential

The size of an input cluster, in your modelling units. If you change outputPixelSize, change clusterSize also. As a guide, clusterSize is almost always in the range of 1--4 times the outputPixelSize. Clusters much larger than this result in light being smeared across the output pixels, whereas smaller values do not significantly increase quality (as they have to be averaged for the final output pixel) but can cause unnecessary increases in time and memory footprint.

Performance impact

This controls the resolution at which Enlighten stores and can transfer input light. Like outputPixelSize, it is a linear parameter. Typically, it can be slightly larger than outputPixelSize without significantly reducing final quality, although this depends on the kinds of lighting environments you wish to use. Small, bright light sources will require a smaller clusterSize for Enlighten to capture them accurately.

Positive float (default 250)

 
outputPixelSize

Essential

The desired width of an output pixel, in your modelling units. This is applied to each instance of an IPrecompInputGeometry in this system. A geometry can override this value by setting the outputPixelSize in the .geom file, or, if you want a given geometry to have a very specific packed size, the atlasSizeOverride attribute instead.

Performance impact

This parameter directly controls the size of the output lightmaps. It is a linear parameter, so doubling outputPixelSize will result in an approximately fourfold increase in the number of output pixels. Enlighten memory and performance scale linearly with the number of output pixels. Because the Enlighten output textures contain only indirect light, good results can be obtained with extremely low pixel counts; indirect light is usually very low frequency in nature.

Positive float (default 100)

backFaceTolerance

Optional

The percentage of a ray origin's rays that must hit front faces to be considered usable. The precompute computes visibility from ray origins to clusters, but attempts to reject ray origins that are inside geometry. If the percentage of rays shot from a ray origin is less than backFaceTolerance, the ray origin is marked invalid and not used for radiosity computation. For example, if backFaceTolerance is 0.0, the ray origin is rejected only if it sees nothing but backfaces. If 1.0, the ray origin is rejected if it has even one ray that hits a backface. This setting can help control light leaking from authoring, but should be considered in the context of your mesh authoring workflow. Preventing the rejection of ray origins by setting a value of 0.0 (the default) will ensure Enlighten does not incorrectly reject ray origins due to open-backed or single-sided geometry. However, if the majority of your meshes are closed so visible backfaces are rare, a positive value can reduce light leaking or darkening, particularly from intersecting geometry.

Positive float (0.0--1.0
default 0.9)

 environmentResolution

Optional

The resolution for each face of the environment map. The default resolution is 2, effectively resulting in 2 x 2 = 4 values per face. Increasing the environment resolution will improve the quality of lighting from the environment, although higher resolutions (e.g. 32 or 64) have diminishing returns. Values less than or equal to 16 are advisable. Increased resolution can increase the runtime memory footprint and update cost.

Power of 2(min 1, max 64, default 2)

samplesPerCluster

Advanced

The number of input lighting samples (duster points) per cluster. Typically between 16 and 64 depending on the desired input lighting accuracy. This parameter is analogous to anti-aliasing in rendering. Higher values provide greater anti-aliasing when capturing the input lighting for the radiosity solver, providing greater accuracy and stability under changing lighting conditions. If a sample count is sufficiently high to capture the input lighting then further increases will not produce a quality improvement. Therefore, where performance is a concern, this value should be set as low as possible without introducing lighting instability, usually seen as flickering when lights move. Reducing the sample count will improve the performance of the input lighting stages of the runtime, but will have no performance impact on the solver stages.

Positive integer (multiple of 4
maximum 512
default 32)

chartBasedLeafClustering

Advanced

Whether to use chart boundaries if performing "traditional" clustering. When this is enabled clusters are initially confined to charts. This resolves light leaking between geometry belonging to different charts. This feature works best on scenes with few large charts.

Boolean (default false)

computeClusterProbeSampleOffsetData

Advanced

Whether to compute the offsets data for sampling probes when using the quad transparency feature. This feature is useful for adding limited support for destruction of lightmapped geometry. See Static destruction.

Boolean (default true)

 computeRayOriginOutput

Advanced

Whether to generate ray origins debug data. When true, data is generated that allows you to view the ray origins used to compute the radiosity in your scene. In GeoRadiosity, setting this parameter to true enables the Ray Origins Chart Renderer mode.

Performance impact

Enabling this mode increases the memory footprint. In some cases, you may get an 'out of memory' error, especially when using 32-bit versions.

Boolean (default false)

directionalIrradiance

Advanced

Whether to generate directional irradiance output. Controls whether the precompute generates the data required for computing directional irradiance at run time. This is an optional extra output from the irradiance solver which contains the dominant direction of the incoming light for each output pixel. If no directional irradiance data is precomputed and yet directional output is requested, Enlighten returns an error. This parameter only has an effect when voxelBasedLeafClustering is set to false.

Boolean (default true)

dependencyIncludedSystemDistance

Advanced

The bounding box of the system will be expanded by this value when performing tests to see which of the systems should be fully represented in the ray tracer and which should be approximated by their bounding boxes. A value of 0 causes all the systems to be fully represented.

Non-negative float (default 0)

dependencyVisibilityThreshold

Advanced

Do not consider a system as a dependency if its visibility is smaller than the threshold. Specify a value of 0to accept systems with any visibility.

Float (min 0, max 1, default 0.015)

dependencyLocalityDistance 

Advanced

Controls the maximum distance, in world units, at which a given system is considered local. A value of -1 results in no systems being considered local.  

Float (default 4.0) 

clusterTolerance

Advanced

Controls the strictness of the voxel decimation during clustering. 0.0means the geometry is voxelised strictly. This parameter only has an effect when voxelBasedLeafClustering is set to true.

Positive float (0.0--1.0)

directionalVisibilityDirectionsPerByte

Advanced

Number of visibility samples to store per byte for precomputed directional visibility. The default value is 4 (2 bits per direction). Valid values are 124and 88 produces the best compression, 1 the best quality. 4produces the best size / quality balance.

Integer (1,2,4,8
default 4)

directionalVisibilitySlices

Advanced

Number of vertical sphere slices for precomputed directional visibility storage. The number of sampled visibility directions will be roughly the square of this number. Defaults to 27(875 sampled directions).

Integer (2--64, default 27)

edgeStitching

Advanced

Whether to stitch pairs of edges together. When true, Enlighten identifies the pair of edges that should be stitched together, and produce radiosity which is as smooth as possible across the seam. This parameter applies only to straight edges which run horizontally or vertically along chart boundaries in the atlas; the method is designed to work with rectangles which are axis-aligned in UV space. Therefore, if you map your charts carefully it will produce seamless radiosity on cylinders.

Boolean (default false)

alignedEdgeStitching

Advanced

Whether to use aligned edge stitching. When true, Enlighten identifies the pair of edges that should be stitched together, and produce radiosity which is a smooth as possible across the seam. This parameter applies only to straight edges which run horizontally or vertically along chart boundaries in the atlas and also requires that both side of the edge have the same number of Enlighten light map pixels along the edge. Furthermore, the stitching is performed using the one-to-one mapping of pixels to ensure that stitching is only performed on these pairs.

Boolean (default false)

edgeStitchingDistanceMultiplier

Advanced

Defines the maximum distance between edges for them to be stitchable, as multiplier of outputPixelSize. Relevant only if edgeStitching is set to true.

Performance impact

This parameter controls the distances over which Enlighten tries to smooth out potential lighting seams. This smoothing process costs memory and time, so this value should be small, hence the default value of 0.3.

Positive float (default 0.3)

importance

Advanced

A relative importance multiplier for this system in the global light transport step. The default value is 1.0. Higher values should only be used for area light geometry in its own dedicated system (which is known to be a bright source of illumination at precompute time). Setting a high importance will ensure that the area light geometry is retained during the light transport compression step. If you use a high importancemultiplier, you should also ensure that area lights have as few clusters as possible. If the area light has a constant colour, only one cluster is required. This can be achieved by setting voxelBasedLeafClustering="false"and numClusters="1".

Non-negative float (default 1.0)

includeProjectedPointData

Advanced

Whether to build and include projected duster points for accurate GPU visibility. This feature stores additional duster points for different versions of the geometry, so you can update the duster positions dynamically.

Boolean (default false)

 irradBudget

Advanced

For every pixel in the output lightmap, Enlighten creates a compressed list of which parts of the scene the pixel can see (and thus transfer light from). The irradBudgetparameter specifies how many of these "form factors" are stored per output pixel for the purpose of creating irradiance lightmap values. Larger budgets give higher indirect lighting "quality" (that is, there is more detail stored about which surfaces transfer light to each pixel). Very low values create "averaged out" radiosity. Setting the value to 0 disables irradiance output (so it is not possible to create an irradiance lightmap at runtime) — if you do this, you should set the irradQuality parameter to its lowest value of 16.

Performance impact

irradBudget controls the amount of data about its lighting environment that Enlighten stores per pixel. As such, the generated Enlighten data scales close to linearly with this budget (but not perfectly, because there are other memory overheads). The higher the budget, the more detail there will be in the final indirect light output. However, Enlighten will take correspondingly more memory and computation time. A minimum budget of 32generally produces acceptable results.

Positive integer (Default 64
minimum 1
maximum 512[not recommended]).

irradQuality

Advanced

The number of rays to cast for computing irradiance form factors.

Integer (power of 2, min 16, max 131072)

maxStitchingAngle

Advanced

Maximum angle between normals for charts to be stitchable. In radians for the HLBS, a dot-product in the low-level API.

Performance impact

This parameter controls the angular changes over which Enlighten tries to smooth out potential lighting seams. The smoothing costs memory and time, so the value should be small. Large values can result in large increases in memory and execution time, because they force Enlighten to smooth output across a large set of seams.

Positive float, (default 0.1 radians 
[~5.7 degrees])

maxPixelStitchingAngle

Advanced

Maximum angle between normals for pixels to be stitchable. In radians for the HLBS, a dot-product in the low-level API. This parameter controls the number of rays to cast to determine form factor values. The more you use, the better your initial quality before the data reduction. The fewer rays you use, the more noise is introduced (that is, lighting discontinuities; obvious differences between nearby pieces of geometry which you would expect to receive similar lighting.)

Positive float (default PCQ_MEDIUM
[8192 in the HLBS])

maxSamples

Advanced

Maximum number of input samples for a system. Overrides the calculation of clusterSize * samplesPerClusterand sets an absolute maximum for the number of duster points.

Integer 1--262144

maxSolutionSize

Advanced

The maximum size of an output system, in pixels.

2-element vector

minSamples

Advanced

Minimum number of input samples for a system. Overrides the calculation of clusterSize * samplesPerClusterand sets an absolute minimum for the number of duster points.

Integer (1--262144)

minSolutionSize

Advanced

The minimum size of an output system, in pixels.

2-element vector

numClusters

Advanced

Set the number of clusters directly. Overrides the clusterSize calculation.

Positive integer

pixelStitching

Advanced

Whether to use pixel stitching.

Boolean (default true)

projectedPointTriThickness

Advanced

The thickness of a triangle in worldspace, for use with the ray 'push through' feature when creating projected point data. This value is the distance to step in order to step over a triangle, and is affected by the choice of modelling units in your world. You should not need to change this value under most circumstances. The default is a sensible small epsilon. Cannot be zero.

Float (>0)

projectedPointMaxPushThroughDistance

Advanced

The maximum world space distance to search in front of a duster point to 'push through' small nearby geometry. This feature can be helpful in producing a better projected point data set in some scenarios. As a guide, similar values to your output pixel size or cluster size should produce reasonable results. Too small a value will have little effect, and too large a value may move points too far from their original locations. You should not need to change this value under most circumstances. The default is 0, which disables this feature.

Float (>0, default 0)

safe16BitClustering

Advanced

Whether to cap the number of clusters created during the precompute. Ensures that clustering creates no more than 65535 clusters, such that a cluster index will fit in an unsigned integer, which is a runtime requirement.

Boolean (default false)

stitchingDistanceMultiplier

Advanced

Defines the maximum distance between charts for them to be stitchable, in modelling units. The default of 0.3 gives a maximum chart stitching distance of 0.3 x outputPixelSize.

Performance impact

This parameter controls the distances over which Enlighten tries to smooth out potential lighting seams. This smoothing process costs memory and time, so this value should be small, hence the default value 0.3.

Positive float (default 0.3)

systemGenerationVoxelSizeInPixelSizeUnits

Advanced

Size of voxels (in output pixel size units) used in voxel based automatic system generation.

Float (default 40)

validOverhangDistance

Advanced

Mesh projection. Controls the number of pixels that a detail chart should be allowed to overhang the target chart before we consider the overhang to be 'naughty' and appear in the DoDebugColouring output. Zero or negative numbers are valid and imply no overhang is valid.

Integer (default 1)

viewVoxelMultiplier

Advanced

Size of voxel grid to use for precompute optimisation. This parameter controls how aggressively Enlighten compresses the precomputed data. The parameter value represents the scale at which the precompute considers neighbouring pixels to be "similar".

Performance impact

It is recommended that you set this parameter to 4 (making a voxel four times the output pixel size) for best quality/memory/performance trade-off. Values less than 4 will substantially increase the precompute memory requirements and solve time, for an insignificant gain in output quality.

Positive float

voxelBasedLeafClustering

Advanced

Use voxel-based clustering to generate leaf clusters. The voxel-based leaf clustering algorithm attempts to decimate geometry along visibility boundaries. It usually produces better results than "traditional" clustering for scenes where meshes intersect each other, and is recommended for scenes with complex geometry that contains many small triangles. To turn it off and use the traditional clustering (the default up to Enlighten 2.16), set this parameter to false.

 

If voxelBasedLeafClusteringis set to truechartBasedLeafClustering is ignored.


Boolean (default true)

requiresTerrainLODs

 Advanced

Whether to generate terrain LODs for this system.

Boolean (default false)

requiresTerrainPackingPadding

Advanced

For terrain systems, decide if system packing should add a half pixel padding around the final atlas. This option does not affect systems that have requiresTerrainLODs set to false. Setting this option to false will disable pixel stitching for this system. All instances in the system should be the same size in terrain UV space, must not overlap, and must be arranged in a uniform grid.

Boolean (default true)

numTerrainLODLevels

Advanced

For terrain systems, the number of terrain LODs to generate for this system. This option does not affect systems that have requiresTerrainLODs set to false. Setting this option to -1 will generate as many as possible. 

Integer (default -1)

excludeEnvironmentInPrimaryBounce

Advanced

Whether to exclude the environment form factors from the lightmap solve data. 

Boolean (default false)

<probesParameterSet>

This element is used to define a set of parameters applied to a probe set.

Attribute

Usage

Description

Value

name

Required

The name of the probes parameter set.

String

shNumCoefficients

Essential

The number of coefficients to use for the spherical harmonic representation. Specify 4 to use L1 SH. Specify 9 to use L2 SH. The L2 representation provides better quality, especially in cases where the input lighting is complex and unsaturated. In many scenarios L2 is only subtly better than L1 quality wise. However, L2 runtime memory cost is roughly twice that of L1 (9 floats per colour channel versus 4 floats per colour channel). Also, the run-time cost of L2 is more than twice that of L1. The precompute time is not affected significantly.

Integer (4 or 9)

useCulling

Essential

Turns probe culling on or off. Probe culling will, during the precompute, cull probes with low visibility (that is, probes that see mainly backfaces). The cullingThreshold parameter controls the aggressiveness of the culling.

The useCulling parameter only has an effect when using regular grids to place probes. When using automatic probe placement, culling is always on and is not controlled by the useCulling parameter.

Boolean

environmentResolution

Optional

The resolution for each face of the environment map. The default resolution is 2, effectively resulting in 2 x 2 = 4 values per face.

Integer, power of two (min 1, max 64)

budget

Advanced

The number of form factors to store per probe. The budget controls the fidelity of the radiosity. A higher budget means the run-time reads from more fine grained inputs improving quality, however, the run-time memory is increased and the run-time computation cost is higher. The precompute time is not affected significantly.

Positive integer (multiple of 16, min 16)

quality

Advanced

The number of rays to cast for computing form factors. The quality controls the amount of work required to precompute the system. Increasing this will only cause an increase in precompute time. The parameter does not affect run-time memory or computation time.

Integer, power of two (min 16, max 131072)

cullingThreshold

Advanced

Threshold value for probe culling. If the probe visibility is less than this value the probe is rejected. Probe visibility is the proportion of valid (that is, front-facing) geometry seen by the probe, where 0 means no valid geometry was seen and 1 means only valid geometry was seen. A higher threshold means more probes are culled. The threshold is compared against the visibility of the probe and if it is lower the probe is culled. A threshold of, for example, 0.90, will cull probes that see 10% backfaces or more. Probe culling does not affect precompute time.

Float (0-1)

envVisShNumCoefficients

Advanced

The number of coefficients to use for the environment visibility spherical harmonic representation. Specify 1to use L0 SH, 4 to use L1 SH, or 9 to use L2 SH. To disable this feature, specify 0. The L0 representation gives the overall visibility to the sky as a single number (in the range 0--1), whereas the L1 and L2 representations have some directional detail. The L2 representation provides better quality, especially in cases where the occlusion is complex. In many scenarios L2 is only subtly better than L1, quality-wise. However, L2 run-time memory cost is roughly twice that of L1 (storing 9 floats versus 4 floats per probe).

Integer (014 or 9)

individualProbes

Advanced

Whether to treat the probes in this set entirely individually, and disable optimisations in the EntireProbeSetSolver which share data between probes. This is useful for probe sets of "dedicated" probes which are positioned exactly where required by static meshes, but not near each other.

Boolean (default false)

dependencyIncludedSystemDistance

Advanced

The bounding box of the probe set will be expanded by this value when performing tests to see which of the systems should be fully represented in the ray tracer and which should be approximated by their bounding boxes. A value of 0 causes all the systems to be fully represented.

Non-negative float (default 0)

dependencyVisibilityThreshold

Advanced

Do not consider a system as a dependency if its visibility is smaller than the threshold. Specify a value of 0 to accept systems with any visibility.

Float (0-1, default 0.015)

dependencyLocalityDistance

Advanced

Controls the maximum distance, in world units, at which a given system is considered local. A value of -1 results in no systems being considered local. 

Float (default 4.0)  

excludeEnvironmentInPrimaryBounce

Advanced

Whether to exclude the environment form factors from the probe solve data.

Boolean (default false)

coefficientBasis

Advanced

Allows specifying the basis axis permutation used for the probe coefficients. Specify for example "+x+z-y" for the commonly used right-handed y-up permutation.

String (default +x+y+z)

coefficientOrder

Advanced

Allows reordering of the coefficients within their respective bands. The L0 band is at element 0, L1 at elements 1-3, and L2 and elements 4-8. The L1 default is "0 1 2 3", which maps to the coefficients Y_00, Y_11, Y_10, and Y_1-1 respectively. The L2 default is "0 1 2 3 4 5 6 7 8", which maps to the coefficients Y_00, Y_11, Y_10, Y_1-1 Y_20, Y_21, Y_2-1, Y_2-2, and Y_22 respectively.

String

<cubeMapParameterSet>

A set of parameters that affect cubemaps.

Attribute

Usage

Description

Values

name

Required

The name of the cube map parameter set.

String

environmentResolution

Optional

The resolution to use for each face of the environment map. The default resolution is 2, effectively resulting in 2 x 2 = 4 values per face. You may find that cube maps benefit from higher resolution environments than systems or probes require. This is because the pixels in the environment can become visible in the cube maps if a very low resolution is specified. However, for the best quality results it is recommended that "local" Enlighten cube maps are composited with a high resolution "distant" environment cube map (a sky box, for example) on the GPU, in which case set this parameter to its minimum value of 1 for optimal performance.

Power of two (min 1, max 64)

budget

Advanced

A target number of form factors to store per pixel. Unlike systems and probes, the purpose of the budget for cube maps is to set as low a value as possible without introducing aliasing. Values that are too low will produce the cube map equivalent of aliasing in screen space as they will not correctly average the lighting visible by that pixel. However, too large a value may be wasteful. The default is 8, which will remove most aliasing, but large open areas may benefit from raising this value if visual artefacts become noticeable. Similarly, this value can be dropped further if necessary but the Enlighten clusters will become more apparent in the output. Setting it to 1will minimise the amount of memory required but will effectively disable the cluster smoothing added in v3.03.

Integer (1--128, default 8)

quality

Advanced

This is the number of rays to cast when computing form factors, per-cube map pixel. It needs to be sufficiently large to correctly capture the scene through each pixel without aliasing, but increasing beyond this will only increase the precompute time. The parameter does not affect runtime memory or computation time. This setting can be increased if you notice aliasing in the result that does not go away after increasing budget, or more likely, reduced to improve the precompute time. Many scenes will generate acceptable cube maps with a very low ray count and you may wish to use a lower default in your integration. The default setting of 4 is conservative.

Integer (1-64 (default 4)

dependencyIncludedSystemDistance

Advanced

The bounding box of the probe set will be expanded by this value when performing tests to see which of the systems should be fully represented in the ray tracer and which should be approximated by their bounding boxes. A value of 0 causes all the systems to be fully represented.

Non-negative float (default 0)

dependencyVisibilityThreshold

Advanced

Do not consider a system as a dependency if its visibility is smaller than the threshold. Specify a value of 0 to accept systems with any visibility.

Float (0-1, default 0.015)

dependencyLocalityDistance 
Advanced

Controls the maximum distance, in world units, at which a given system will be considered as local. If a value of -1 is set, no system will be considered as local.    

Float (default 4.0)