[DevOptions.DebugOptions]
bAllowAdvancedOptions=False
LightmapResolutionFactorScale=32.0

[DevOptions.StaticLighting]
bAllowMultiThreadedStaticLighting=True
ViewSingleBounceNumber=-1
bUseConservativeTexelRasterization=True
bAccountForTexelSize=True
bUseMaxWeight=True
MaxTriangleLightingSamples=8
MaxTriangleIrradiancePhotonCacheSamples=4
bAllowLightmapCompression=True
bAllowEagerLightmapEncode=False
bUseBilinearFilterLightmaps=True
bAllow64bitProcess=True
DefaultStaticMeshLightingRes=32
bAllowCropping=False
bGarbageCollectAfterExport=True
bRebuildDirtyGeometryForLighting=True

[DevOptions.StaticLightingSceneConstants]
StaticLightingLevelScale=1
VisibilityRayOffsetDistance=.1
VisibilityNormalOffsetDistance=3
VisibilityNormalOffsetSampleRadiusScale=.5
VisibilityTangentOffsetSampleRadiusScale=.8
SmallestTexelRadius=.1
; Tweaked for a good tradeoff between 'Cache Indirect Photon Paths' time and Indirect photon emitting 'Sampling Lights' time
LightGridSize=100
; These have been tweaked so that directional lightmaps closely match simple dot(N,L) lightmaps in overall brightness and normal attenuation
DirectionalCoefficientFalloffPower=.85
DirectionalCoefficientScale=2
CustomImportanceVolumeExpandBy=4000
MinimumImportanceVolumeExtentWithoutWarning=5000.0

[DevOptions.StaticLightingMaterial]
bUseDebugMaterial=False
ShowMaterialAttribute=None
; Material export sizes default to very small to keep exports fast
EmissiveSampleSize=128
DiffuseSampleSize=128
SpecularSampleSize=128
TransmissionSampleSize=256
NormalSampleSize=256
; Terrain materials default to much higher resolution since each material typically covers a large area in world space
TerrainSampleScalar=4
DebugDiffuse=(R=0.500000,G=0.500000,B=0.500000)
DebugSpecular=(R=0.000000,G=0.000000,B=0.000000)
DebugSpecularPower=64
EnvironmentColor=(R=0.00000,G=0.00000,B=0.00000)

[DevOptions.MeshAreaLights]
bVisualizeMeshAreaLightPrimitives=False
; Only emissive texels above .01 will be used to create mesh area lights
EmissiveIntensityThreshold=.01
MeshAreaLightGridSize=100
MeshAreaLightSimplifyNormalAngleThreshold=25
MeshAreaLightSimplifyCornerDistanceThreshold=.5
MeshAreaLightSimplifyMeshBoundingRadiusFractionThreshold=.1
MeshAreaLightGeneratedDynamicLightSurfaceOffset=30

[DevOptions.PrecomputedDynamicObjectLighting]
bVisualizeVolumeLightSamples=False
bVisualizeVolumeLightInterpolation=False
SurfaceLightSampleSpacing=200
FirstSurfaceSampleLayerHeight=50
SurfaceSampleLayerHeightSpacing=210
NumSurfaceSampleLayers=2
DetailVolumeSampleSpacing=300
VolumeLightSampleSpacing=2000
; Clamp the number of volume samples generated to ~3mb
MaxVolumeSamples=50000

[DevOptions.PrecomputedVisibility]
bVisualizePrecomputedVisibility=False
bCompressVisibilityData=True
NumCellDistributionBuckets=400
CellRenderingBucketSize=5
NumCellRenderingBuckets=5
PlayAreaHeight=220
MeshBoundsScale=1.2
bSpreadVisibilityToNeighbors=True
MinMeshSamples=8
MaxMeshSamples=50
NumCellSamples=16

[DevOptions.PrecomputedVisibilityModeratelyAggressive]
MeshBoundsScale=1
bSpreadVisibilityToNeighbors=True

[DevOptions.PrecomputedVisibilityMostAggressive]
MeshBoundsScale=1
bSpreadVisibilityToNeighbors=False

[DevOptions.StaticShadows]
; Using area shadows by default instead of filtering in texture space
bUseZeroAreaLightmapSpaceFilteredLights=False
NumShadowRays=8
NumPenumbraShadowRays=8
NumBounceShadowRays=1
bFilterShadowFactor=True
ShadowFactorGradientTolerance=0.5
bAllowSignedDistanceFieldShadows=True
MaxTransitionDistanceWorldSpace=50
ApproximateHighResTexelsPerMaxTransitionDistance=50
MinDistanceFieldUpsampleFactor=3
DominantShadowTransitionSampleDistanceX=100
DominantShadowTransitionSampleDistanceY=100
DominantShadowSuperSampleFactor=10
; Clamp the number of dominant shadow samples generated to ~3mb
DominantShadowMaxSamples=1536000
MinUnoccludedFraction=.01

[DevOptions.ImportanceTracing]
bUsePathTracer=False
bUseCosinePDF=False
bUseStratifiedSampling=True
NumPaths=128
NumHemisphereSamples=64
NumBounceHemisphereSamples=64
MaxHemisphereRayAngle=89

[DevOptions.PhotonMapping]
bUsePhotonMapping=True
bUseFinalGathering=True
bUsePhotonsForDirectLighting=False
bUseIrradiancePhotons=True
bCacheIrradiancePhotonsOnSurfaces=True
bOptimizeDirectLightingWithPhotons=False
bVisualizePhotonPaths=False
bVisualizePhotonGathers=True
bVisualizePhotonImportanceSamples=True
bVisualizeIrradiancePhotonCalculation=False
bEmitPhotonsOutsideImportanceVolume=False
ConeFilterConstant=1
; 400 gives a smooth enough result without requiring a very large search
NumIrradianceCalculationPhotons=400
; Allocating most final gather samples towards importance samples gives a good result as long as there are enough first bounce photons
FinalGatherImportanceSampleFraction=.6
; 10 degrees is a good tradeoff between capturing high frequency incident lighting at final gather points and covering the whole incident lighting domain with a limited number of importance directions
FinalGatherImportanceSampleConeAngle=10
IndirectPhotonEmitDiskRadius=200
IndirectPhotonEmitConeAngle=30
MaxImportancePhotonSearchDistance=2000
MinImportancePhotonSearchDistance=20
; Preview uses a very small number of importance directions
NumImportanceSearchPhotons=10
OutsideImportanceVolumeDensityScale=.0005
DirectPhotonDensity=350
; Same as DirectPhotonDensity, since currently direct photons are only used to create irradiance photons
DirectIrradiancePhotonDensity=350
DirectPhotonSearchDistance=200
IndirectPhotonPathDensity=5
; Need a very high indirect photon density since first bounce photons are used to guide the final gather
IndirectPhotonDensity=600
IndirectIrradiancePhotonDensity=300
IndirectPhotonSearchDistance=200
CausticPhotonDensity=0
CausticPhotonSearchDistance=100
PhotonSearchAngleThreshold=.5
IrradiancePhotonSearchConeAngle=10
MaxDirectLightingPhotonOptimizationAngle=80
CachedIrradiancePhotonDownsampleFactor=2
OutsideVolumeIrradiancePhotonDistanceThreshold=2000

[DevOptions.IrradianceCache]
bAllowIrradianceCaching=True
bUseIrradianceGradients=False
bShowGradientsOnly=False
bVisualizeIrradianceSamples=True
RecordRadiusScale=.4
InterpolationMaxAngle=20
PointBehindRecordMaxAngle=10
; Increase distance and angle constraints by a factor of 2 in the shading pass, which filters the interpolated result without losing too much detail.
DistanceSmoothFactor=2
AngleSmoothFactor=2
RecordBounceRadiusScale=.3
; Avoid record clustering in corners
MinRecordRadius=16
; Enforce a minimum sample rate on surfaces with no nearby occluders
MaxRecordRadius=1024

[DevOptions.StaticLightingMediumQuality]
NumShadowRaysScale=2
NumPenumbraShadowRaysScale=4
ApproximateHighResTexelsPerMaxTransitionDistanceScale=3
MinDistanceFieldUpsampleFactor=3
NumHemisphereSamplesScale=2
NumImportanceSearchPhotonsScale=1
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=1
NumIndirectPhotonsScale=2
NumIndirectIrradiancePhotonsScale=2
NumCausticPhotonsScale=1
RecordRadiusScaleScale=.75
InterpolationMaxAngleScale=.75
MinRecordRadiusScale=.5

[DevOptions.StaticLightingHighQuality]
NumShadowRaysScale=4
NumPenumbraShadowRaysScale=8
ApproximateHighResTexelsPerMaxTransitionDistanceScale=6
MinDistanceFieldUpsampleFactor=5
NumHemisphereSamplesScale=4
NumImportanceSearchPhotonsScale=2
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=2
NumIndirectPhotonsScale=4
NumIndirectIrradiancePhotonsScale=2
NumCausticPhotonsScale=1
RecordRadiusScaleScale=.5
InterpolationMaxAngleScale=.5
MinRecordRadiusScale=.5

[DevOptions.StaticLightingProductionQuality]
NumShadowRaysScale=8
NumPenumbraShadowRaysScale=32
ApproximateHighResTexelsPerMaxTransitionDistanceScale=6
MinDistanceFieldUpsampleFactor=5
NumHemisphereSamplesScale=8
NumImportanceSearchPhotonsScale=3
NumDirectPhotonsScale=4
; Decrease direct photon search distance so that we will have more accurate shadow transitions.  This requires a higher density of direct photons.
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=2
; Need a lot of indirect photons since we have increased the number of first bounce photons to use for final gathering with NumImportanceSearchPhotonsScale
NumIndirectPhotonsScale=8
NumIndirectIrradiancePhotonsScale=2
NumCausticPhotonsScale=1
; Decreasing the record radius results in more records, which increases quality
RecordRadiusScaleScale=.25
InterpolationMaxAngleScale=.5
; Decreasing the min record radius allows more records in corners for a higher quality result
MinRecordRadiusScale=.5
