Epic Games Japan hold a meeting named "Lightmass Deep Dive" on July 30, 2016.
A Japanese architectural artist, Kenichi Makaya, created Casa Barragan on UE4. the architecture is a house of Mexican Architect, Luis Barragan. And he gave a presentation about making of the scene. .
CASA BARRAGAN Unreal Engine4
https://www.youtube.com/watch?v=Y7r28nO4iDU&feature=youtu.be
EGJ translated the slide for the presentation to English and published it.
6. Scene Data Used in this Presentation
Forum Sample
Reference Resources
https://forums.unrealengine.com/showthread.php?
88952-Lets-make-Lightmass-EPIC-(and
-understandable)&p=413678&viewfull=1#post413678
Casa Barragan
House of Mexican Architect,
Luis Barragan
7. Test PC Specs
• CPU Core i7 4790K 4.0GHZ x 4 core
• Memory 16GB
• GPU GTX770
56. Main Lights Used in Casa Barragan
• Directional Light
• Sky Light
• Koola Bounce Card
Decided to try the above settings first
Stationary
Static
Static Spot Light
66. PostProcess Off
• Auto Exposure
• Causes exposure changes
• Bloom
• Overly bright screen and poor results
• Screen Space Ambient Occlusion (AO)
Difficult to tell if results are from the light bake or from
AO
67. Compress LightMaps off
UMAP size 63MB
Not sure whether noise is caused by insufficient number of samples during
light bake or by compression noise. Be careful of increase in Light map size!
UMAP size 90MB
81. 1. Higher Lightmap Resolution
• Details lower than or equal to minimum texel of light map can not be captured
LightmapResolution = 64LightmapResolution = 512
82. 2. Decrease Static Lighting Level Scale
(Decrease RecordRadiusScale of Irradiance caching)
• Details smaller than RecordRadius can not be captured
StaticLightingLevelScale = 0.1StaticLightingLevelScale = 1
83. This means...
1. Decrease Static Lighting Level Scale until
required detail is present
2. Increase lightmap resolution until
detail can be captured
85. Details of shadows
and bokeh around here
need to be reproduced
in our scene.
Details in photograph
Reference source http://motokimokito.blogspot.jp/
152. What are the Lighting Quality and
Lightmass settings doing?
In BaseLightmass.ini, we already
mentioned:
• Static Lighting Level Scale,
• Num Indirect Lighting Bounces,
and other settings including:
Indirect Lighting Quality,
Indirect Lighting Smoothness
155. ; These are tweaked defaults for various lightmass solver and export settings
; Artist-oriented lightmass settings are in the editor UI
; Documentation for all of these is in UnrealLightmass/Public/SceneExport.h
; This ini is reloaded every time a lighting build begins, no need to restart
[DevOptions.StaticLighting]
bAllowMultiThreadedStaticLighting=True
ViewSingleBounceNumber=-1
bUseBilinearFilterLightmaps=True
bCompressLightmaps=True
bUseConservativeTexelRasterization=True
bAccountForTexelSize=True
bUseMaxWeight=True
MaxTriangleLightingSamples=8
MaxTriangleIrradiancePhotonCacheSamples=4
bAllow64bitProcess=True
DefaultStaticMeshLightingRes=32
bAllowCropping=False
bGarbageCollectAfterExport=True
bRebuildDirtyGeometryForLighting=True
bUseEmbree=true
bVerifyEmbree=false
[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
AutomaticImportanceVolumeExpandBy=500
MinimumImportanceVolumeExtentWithoutWarning=10000.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)
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
NumHemisphereSamplesScale=2
SurfaceLightSampleSpacing=300
FirstSurfaceSampleLayerHeight=50
SurfaceSampleLayerHeightSpacing=250
NumSurfaceSampleLayers=2
DetailVolumeSampleSpacing=300
VolumeLightSampleSpacing=3000
; Clamp the number of volume samples generated to ~15mb
MaxVolumeSamples=250000
bUseMaxSurfaceSampleNum=True
; Approximately clamp the number of surface samples generated to ~30mb (only for Landscape currently)
MaxSurfaceLightSamples=500000
[DevOptions.PrecomputedVisibility]
bVisualizePrecomputedVisibility=False
bCompressVisibilityData=True
bPlaceCellsOnOpaqueOnly=True
NumCellDistributionBuckets=800
CellRenderingBucketSize=5
NumCellRenderingBuckets=5
PlayAreaHeight=220
MeshBoundsScale=1.2
VisibilitySpreadingIterations=1
MinMeshSamples=14
MaxMeshSamples=40
NumCellSamples=24
NumImportanceSamples=40
[DevOptions.PrecomputedVisibilityModeratelyAggressive]
MeshBoundsScale=1
VisibilitySpreadingIterations=1
[DevOptions.PrecomputedVisibilityMostAggressive]
MeshBoundsScale=1
VisibilitySpreadingIterations=0
[DevOptions.VolumeDistanceField]
VoxelSize=75
VolumeMaxDistance=900
NumVoxelDistanceSamples=800
; Clamp the size of the volume distance field generated to ~15mb
MaxVoxels=3992160
[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
MinUnoccludedFraction=.005
StaticShadowDepthMapTransitionSampleDistanceX=100
StaticShadowDepthMapTransitionSampleDistanceY=100
StaticShadowDepthMapSuperSampleFactor=2
; Clamp the number of shadow samples generated to ~8mb for huge levels
StaticShadowDepthMapMaxSamples=4194304
[DevOptions.ImportanceTracing]
bUseCosinePDF=False
bUseStratifiedSampling=True
NumHemisphereSamples=16
MaxHemisphereRayAngle=89
bUseAdaptiveSolver=true
NumAdaptiveRefinementLevels=2
AdaptiveBrightnessThreshold=1
AdaptiveFirstBouncePhotonConeAngle=4
[DevOptions.PhotonMapping]
bUsePhotonMapping=True
bUseFinalGathering=True
bUsePhotonDirectLightingInFinalGather=False
bVisualizeCachedApproximateDirectLighting=False
bUseIrradiancePhotons=True
bCacheIrradiancePhotonsOnSurfaces=True
bVisualizePhotonPaths=False
bVisualizePhotonGathers=True
bVisualizePhotonImportanceSamples=False
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
PhotonSearchAngleThreshold=.5
IrradiancePhotonSearchConeAngle=10
CachedIrradiancePhotonDownsampleFactor=2
[DevOptions.IrradianceCache]
bAllowIrradianceCaching=True
bUseIrradianceGradients=False
bShowGradientsOnly=False
bVisualizeIrradianceSamples=True
RecordRadiusScale=.8
InterpolationMaxAngle=20
PointBehindRecordMaxAngle=10
; Increase distance and angle constraints in the shading pass, which filters the interpolated result without
losing too much detail.
DistanceSmoothFactor=4
AngleSmoothFactor=4
; Sky occlusion has less noise than normal GI, don't blur away details
SkyOcclusionSmoothnessReduction=.5
; Enforce a minimum sample rate on surfaces with no nearby occluders
MaxRecordRadius=1024
CacheTaskSize=64
InterpolateTaskSize=64
[DevOptions.StaticLightingMediumQuality]
NumShadowRaysScale=2
NumPenumbraShadowRaysScale=4
ApproximateHighResTexelsPerMaxTransitionDistanceScale=3
MinDistanceFieldUpsampleFactor=3
NumHemisphereSamplesScale=2
NumImportanceSearchPhotonsScale=1
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=1
NumIndirectPhotonsScale=2
NumIndirectIrradiancePhotonsScale=2
RecordRadiusScaleScale=.75
InterpolationMaxAngleScale=1
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.5
AdaptiveFirstBouncePhotonConeAngleScale=1
[DevOptions.StaticLightingHighQuality]
NumShadowRaysScale=4
NumPenumbraShadowRaysScale=8
ApproximateHighResTexelsPerMaxTransitionDistanceScale=6
MinDistanceFieldUpsampleFactor=5
NumHemisphereSamplesScale=4
NumImportanceSearchPhotonsScale=2
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=2
NumIndirectPhotonsScale=4
NumIndirectIrradiancePhotonsScale=2
RecordRadiusScaleScale=.75
InterpolationMaxAngleScale=.75
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.25
AdaptiveFirstBouncePhotonConeAngleScale=2
[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
; Decreasing the record radius results in more records, which increases quality
RecordRadiusScaleScale=.5625
InterpolationMaxAngleScale=.75
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.25
AdaptiveFirstBouncePhotonConeAngleScale=2.5
157. When Lighting Quality is set to Production:
[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
; Decreasing the record radius results in more records, which increases quality
RecordRadiusScaleScale=.5625
InterpolationMaxAngleScale=.75
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.25
AdaptiveFirstBouncePhotonConeAngleScale=2.5
178. Static Lighting Level Scale×Indirect Lighting Quality =1.0
Artifacts can be reduced to an acceptable
level when the above multiplication results
in 1.0
With Lighting Quality set to Production Level
0.1 10
0.2 5
0.5 2
X
X
X
179. Lightmass Settings Final Settings
Static Lighting Level Scale= 0.1
Num Indirect Lighting Bounces=20
Indirect Lighting Quality = 10
Indirect Lighting Smoothness=1.0
Lighting Quality = Production
184. ; These are tweaked defaults for various lightmass solver and export settings
; Artist-oriented lightmass settings are in the editor UI
; Documentation for all of these is in UnrealLightmass/Public/SceneExport.h
; This ini is reloaded every time a lighting build begins, no need to restart
[DevOptions.StaticLighting]
bAllowMultiThreadedStaticLighting=True
ViewSingleBounceNumber=-1
bUseBilinearFilterLightmaps=True
bCompressLightmaps=True
bUseConservativeTexelRasterization=True
bAccountForTexelSize=True
bUseMaxWeight=True
MaxTriangleLightingSamples=8
MaxTriangleIrradiancePhotonCacheSamples=4
bAllow64bitProcess=True
DefaultStaticMeshLightingRes=32
bAllowCropping=False
bGarbageCollectAfterExport=True
bRebuildDirtyGeometryForLighting=True
bUseEmbree=true
bVerifyEmbree=false
[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
AutomaticImportanceVolumeExpandBy=500
MinimumImportanceVolumeExtentWithoutWarning=10000.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)
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
NumHemisphereSamplesScale=2
SurfaceLightSampleSpacing=300
FirstSurfaceSampleLayerHeight=50
SurfaceSampleLayerHeightSpacing=250
NumSurfaceSampleLayers=2
DetailVolumeSampleSpacing=300
VolumeLightSampleSpacing=3000
; Clamp the number of volume samples generated to ~15mb
MaxVolumeSamples=250000
bUseMaxSurfaceSampleNum=True
; Approximately clamp the number of surface samples generated to ~30mb (only for Landscape currently)
MaxSurfaceLightSamples=500000
[DevOptions.PrecomputedVisibility]
bVisualizePrecomputedVisibility=False
bCompressVisibilityData=True
bPlaceCellsOnOpaqueOnly=True
NumCellDistributionBuckets=800
CellRenderingBucketSize=5
NumCellRenderingBuckets=5
PlayAreaHeight=220
MeshBoundsScale=1.2
VisibilitySpreadingIterations=1
MinMeshSamples=14
MaxMeshSamples=40
NumCellSamples=24
NumImportanceSamples=40
[DevOptions.PrecomputedVisibilityModeratelyAggressive]
MeshBoundsScale=1
VisibilitySpreadingIterations=1
[DevOptions.PrecomputedVisibilityMostAggressive]
MeshBoundsScale=1
VisibilitySpreadingIterations=0
[DevOptions.VolumeDistanceField]
VoxelSize=75
VolumeMaxDistance=900
NumVoxelDistanceSamples=800
; Clamp the size of the volume distance field generated to ~15mb
MaxVoxels=3992160
[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
MinUnoccludedFraction=.005
StaticShadowDepthMapTransitionSampleDistanceX=100
StaticShadowDepthMapTransitionSampleDistanceY=100
StaticShadowDepthMapSuperSampleFactor=2
; Clamp the number of shadow samples generated to ~8mb for huge levels
StaticShadowDepthMapMaxSamples=4194304
[DevOptions.ImportanceTracing]
bUseCosinePDF=False
bUseStratifiedSampling=True
NumHemisphereSamples=16
MaxHemisphereRayAngle=89
bUseAdaptiveSolver=true
NumAdaptiveRefinementLevels=2
AdaptiveBrightnessThreshold=1
AdaptiveFirstBouncePhotonConeAngle=4
[DevOptions.PhotonMapping]
bUsePhotonMapping=True
bUseFinalGathering=True
bUsePhotonDirectLightingInFinalGather=False
bVisualizeCachedApproximateDirectLighting=False
bUseIrradiancePhotons=True
bCacheIrradiancePhotonsOnSurfaces=True
bVisualizePhotonPaths=False
bVisualizePhotonGathers=True
bVisualizePhotonImportanceSamples=False
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
PhotonSearchAngleThreshold=.5
IrradiancePhotonSearchConeAngle=10
CachedIrradiancePhotonDownsampleFactor=2
[DevOptions.IrradianceCache]
bAllowIrradianceCaching=True
bUseIrradianceGradients=False
bShowGradientsOnly=False
bVisualizeIrradianceSamples=True
RecordRadiusScale=.8
InterpolationMaxAngle=20
PointBehindRecordMaxAngle=10
; Increase distance and angle constraints in the shading pass, which filters the interpolated result without
losing too much detail.
DistanceSmoothFactor=4
AngleSmoothFactor=4
; Sky occlusion has less noise than normal GI, don't blur away details
SkyOcclusionSmoothnessReduction=.5
; Enforce a minimum sample rate on surfaces with no nearby occluders
MaxRecordRadius=1024
CacheTaskSize=64
InterpolateTaskSize=64
[DevOptions.StaticLightingMediumQuality]
NumShadowRaysScale=2
NumPenumbraShadowRaysScale=4
ApproximateHighResTexelsPerMaxTransitionDistanceScale=3
MinDistanceFieldUpsampleFactor=3
NumHemisphereSamplesScale=2
NumImportanceSearchPhotonsScale=1
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=1
NumIndirectPhotonsScale=2
NumIndirectIrradiancePhotonsScale=2
RecordRadiusScaleScale=.75
InterpolationMaxAngleScale=1
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.5
AdaptiveFirstBouncePhotonConeAngleScale=1
[DevOptions.StaticLightingHighQuality]
NumShadowRaysScale=4
NumPenumbraShadowRaysScale=8
ApproximateHighResTexelsPerMaxTransitionDistanceScale=6
MinDistanceFieldUpsampleFactor=5
NumHemisphereSamplesScale=4
NumImportanceSearchPhotonsScale=2
NumDirectPhotonsScale=2
DirectPhotonSearchDistanceScale=.5
NumIndirectPhotonPathsScale=2
NumIndirectPhotonsScale=4
NumIndirectIrradiancePhotonsScale=2
RecordRadiusScaleScale=.75
InterpolationMaxAngleScale=.75
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.25
AdaptiveFirstBouncePhotonConeAngleScale=2
[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
; Decreasing the record radius results in more records, which increases quality
RecordRadiusScaleScale=.5625
InterpolationMaxAngleScale=.75
IrradianceCacheSmoothFactor=.75
NumAdaptiveRefinementLevels=3
AdaptiveBrightnessThresholdScale=.25
AdaptiveFirstBouncePhotonConeAngleScale=2.5
195. Improving Final Gathering
Increasing Indirect Lighting Quality increases
rays even where unnecessary
↓
Use adaptive sampling to increase rays only
where necessary
↓
Increase level of adaptive sampling refinement
or
Decrease threshold of intensity when increasing
the level
216. Adjust the number of rays in Lightmass.ini
Adjust “NumHemisphereSamplesScale” for each
Lighting Quality level
Or
[DevOptions.ImportanceTracing] NumHemisphereSamples
can scale the number of rays as well.
218. Lets make Lightmass Epic
Talented artists including Koola study Lightmass
https://forums.unrealengine.com/showthread.php?88952-Lets-
make-Lightmass-EPIC-(and-understandable)
220. Emit Photons
• Directional Light
• Point Light
• Spot Light
• Koola Bounce Card
Emit No Photon
• Sky Light
• Use Emissive For
Static Lighting
Understanding differences in the behaviors of
various lights is important. Especially Sky light!
221. Lighting Quality
What does each setting influence?
Shadow
Photon Mapping
Irradiance Caching
Final Gathering
Overall Quality Settings
Setting Influence on
Influence on Build
time
High
222. Static Lighting Level
Scale
Num Indirect Lighting
Bounces
Indirect Lighting Quality
Indirect Lighting
Smoothness
What each setting influences on?
Details of Lightmass
(Irradiance Caching
recording radius)
Brightness of Scene
(Number of photon reflections)
Decreases artifact noise
(Number of rays for final
gathering)
Blurs indirect light component in
Lightmap
(Irradiance Caching
Interpolation Ratio)
Setting Influence on
Influence on Build
time
Medium
Low
High
Low
At Production setting,the number of rays in final gathering increases by four times compared to the Medium setting, so it will be fine.
Increasing Indirect Lighting Quality
increases rays even where unnecessary
Increase rays only where necessary by applying adaptive sampling
Increase level of
adaptive sampling refinement
or
Decrease threshold of intensity when increasing level
Note that NumAdaptiveRefinementLevel increases one level when ILQ = 11 or more. Increasing level without consideration increases build time substantially. For Casa Barragan, after 8 hours the build was only at 3% so I cancelled it…
Note that NumAdaptiveRefinementLevel increases one level when ILQ = 11 or more. Increasing level without consideration increases build time substantially. For Casa Barragan, after 8 hours the build was only at 3% so I cancelled it…
Note that NumAdaptiveRefinementLevel increases one level when ILQ = 11 or more. Increasing level without consideration increases build time substantially. For Casa Barragan, after 8 hours the build was only at 3% so I cancelled it…