Haven't tried the demo but I'd be surprised if you are seeing anything related to streaming Nanite meshes or virtual textures. More likely it's something non-nanite or not streaming related. People still seem to assume there's some significant amount of streaming that needs to happen here and it's just not the case. That's the magic of virtual geometry.Tried the Robocop demo. Similar to Talos there’s lots of visible pop-in of Nanite clusters and textures. It’s such a slow paced game that they should be able to load assets well in advance of when they’re needed especially on graphics cards with abundant VRAM. The streaming engine is trying to do too much here.
Agreed the comment doesn't really make sense to me, or at the very least doesn't seem to understand Nanite. Nanite is not "just" a system to free artists from generating classical LODs, it handles the culling and LOD problems fundamentally better at a finer granularity. The scaling it accomplishes is not really possible with classic mesh LODs even if you had infinite art time.No clue what he's talking about, you make things faster and they're faster.
Lords of the Fallen supports software and hardware Lumen. But like in other UE5 games the base performance is so bad that hardware Lumen does not really seem a practical option.
And like others UE5 games the lighting system is just not good enough for the performance. When there is no direct light source every (moving) object looks out of place with no shadows and even no AO:
Update - gave the demo a quick shot as I had an hour or so. Hot takes:Haven't tried the demo...
1) Can you point me to an area where you saw streaming/popping issues? Was it during the camera cuts in cutscenes? I didn't really see any geometry pop at all, and only one camera cut I saw a brief texture pop. Camera cuts do always require special attention in games; you can pre-stream both nanite and virtual texture data in cutscenes to avoid issues on cuts (the Matrix demo does this), but the developers may not have set that up here. Overall the game looks reasonable, but it's clearly not a large studio with AAA polish.
I think one of the reasons LotF is performing better than other UE5 titles is the fact that it doesn’t appear to be using virtual shadow maps. You can enable it with Unreal Engine Unlocker and it makes shadows look much better imo. There is a 10-30% performance penalty.
I feel like the added geometric detail from employing Nanite is wasted a bit with imprecise shadow maps. It would be good if they added VSMs as an option for the PC version.
Regarding IQ deltas Unreal documentation mentions Ray Traced shadows take precendence due to better quality.Looks like RT shadows equivalent from a IQ standpoint but 30% is a lot of deal with.
What I'd like to see at is UE5 based tech (VSM/Lumen/etc) vs hardware based RTX and see what the performance and IQ deltas are. I'm sure it'll happen at some point.
Ray-traced shadows still take precedence over VSMs as they generally provide the highest quality solution.
There still seems to be some confusion in regards to whether or not LotF uses HW RT (like in this TechPowerUp article from today or this YT vid) and I think by looking at the log files you can rule it out. The only mention of RT is in regards to it not being enabled in the project settings.I don't think Lords of the Fallen uses hardware RT Lumen. I messed around with Unreal Engine Unlocker and turning settings on and off in relation to HW RT made no difference in terms of fps or visual output.
[2023.10.16-12.31.04:255][ 0]LogRendererCore: Ray tracing is disabled. Reason: disabled through project setting (r.RayTracing=0).
Low to medium
Set CVar [[r.SkeletalMeshLODBias:1]]
Set CVar [[r.ViewDistanceScale:0.6]]
Set CVar [[r.FXAA.Quality:1]]
Set CVar [[r.TemporalAA.Quality:1]]
Set CVar [[r.TSR.History.UpdateQuality:1]]
Set CVar [[r.TSR.RejectionAntiAliasingQuality:1]]
Set CVar [[r.ShadowQuality:3]]
Set CVar [[r.Shadow.MaxResolution:1024]]
Set CVar [[r.Shadow.MaxCSMResolution:1024]]
Set CVar [[r.Shadow.RadiusThreshold:0.05]]
Set CVar [[r.Shadow.DistanceScale:0.7]]
Set CVar [[r.DistanceFieldAO:1]]
Set CVar [[r.CapsuleShadows:1]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountDirectional:4]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountLocal:4]]
Set CVar [[r.DFShadowQuality:2]]
Set CVar [[r.VolumetricFog.GridPixelSize:16]]
Set CVar [[r.LumenScene.Radiosity.ProbeSpacing:16]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.NumProbesToTraceBudget:150]]
Set CVar [[r.Lumen.TranslucencyVolume.RadianceCache.NumProbesToTraceBudget:75]]
Set CVar [[r.LumenScene.DirectLighting.UpdateFactor:64]]
Set CVar [[r.LumenScene.Radiosity.UpdateFactor:256]]
Set CVar [[r.Lumen.Reflections.DownsampleFactor:8]]
Set CVar [[r.MotionBlurQuality:3]]
Set CVar [[r.AmbientOcclusionMaxQuality:60]]
Set CVar [[r.AmbientOcclusionLevels:-1]]
Set CVar [[r.AmbientOcclusionRadiusScale:1.5]]
Set CVar [[r.DepthOfFieldQuality:1]]
Set CVar [[r.RenderTargetPoolMin:350]]
Set CVar [[r.Bloom.ScreenPercentage:35.355]]
Set CVar [[r.FastBlurThreshold:2]]
Set CVar [[r.Upscale.Quality:2]]
Set CVar [[r.Filter.SizeScale:0.7]]
Set CVar [[r.DOF.Gather.AccumulatorQuality:0 ; lower gathering accumulator quality]]
Set CVar [[r.DOF.Gather.PostfilterMethod:2 ; Max3x3 postfilering method]]
Set CVar [[r.DOF.Gather.RingCount:3 ; low number of samples when gathering]]
Set CVar [[r.DOF.Scatter.ForegroundCompositing:0 ; no foreground scattering]]
Set CVar [[r.DOF.Scatter.BackgroundCompositing:0 ; no foreground scattering]]
Set CVar [[r.DOF.Recombine.Quality:0 ; no slight out of focus]]
Set CVar [[r.DOF.TemporalAAQuality:0 ; faster temporal accumulation]]
Set CVar [[r.DOF.Kernel.MaxForegroundRadius:0.006 ; required because low gathering and no scattering and not looking great at 1080p]]
Set CVar [[r.DOF.Kernel.MaxBackgroundRadius:0.006 ; required because low gathering and no scattering and not looking great at 1080p]]
Set CVar [[r.Streaming.MipBias:2]]
Set CVar [[r.Streaming.MaxNumTexturesToStreamPerFrame:3]]
Set CVar [[r.Streaming.Boost:1]]
Set CVar [[r.MaxAnisotropy:2]]
Set CVar [[r.Streaming.PoolSize:600]]
Set CVar [[r.TranslucencyLightingVolumeDim:32]]
Set CVar [[r.DetailMode:1]]
Set CVar [[r.MaterialQualityLevel:2 ; Medium quality]]
Set CVar [[r.SSS.Scale:0.75]]
Set CVar [[r.SSGI.Quality:1]]
Set CVar [[r.EmitterSpawnRateScale:0.25]]
Set CVar [[r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution:16.0]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMin:4.0]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMax:32.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMin:4.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMax:32.0]]
Set CVar [[r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat:0]]
Set CVar [[fx.Niagara.QualityLevel:1]]
Set CVar [[foliage.DensityScale:0.25]]
Set CVar [[grass.DensityScale:0.25]]
Medium to high
Set CVar [[r.SkeletalMeshLODBias:0]]
Set CVar [[r.ViewDistanceScale:0.8]]
Set CVar [[r.FXAA.Quality:3]]
Set CVar [[r.TSR.History.UpdateQuality:2]]
Set CVar [[r.TSR.ShadingRejection.Flickering:1]]
Set CVar [[r.ShadowQuality:5]]
Set CVar [[r.Shadow.CSM.MaxCascades:4]]
Set CVar [[r.Shadow.MaxCSMResolution:2048]]
Set CVar [[r.Shadow.RadiusThreshold:0.04]]
Set CVar [[r.Shadow.DistanceScale:0.85]]
Set CVar [[r.Shadow.CSM.TransitionScale:0.8]]
Set CVar [[r.AOQuality:1]]
Set CVar [[r.VolumetricFog.GridSizeZ:64]]
Set CVar [[r.Shadow.Virtual.MaxPhysicalPages:2048]]
Set CVar [[r.Shadow.Virtual.ResolutionLodBiasDirectional:-0.5]]
Set CVar [[r.Shadow.Virtual.ResolutionLodBiasLocal:0.0]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountDirectional:8]]
Set CVar [[r.Shadow.Virtual.SMRT.SamplesPerRayDirectional:4]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountLocal:8]]
Set CVar [[r.Shadow.Virtual.SMRT.SamplesPerRayLocal:4]]
Set CVar [[r.DFShadowQuality:3]]
Set CVar [[r.LumenScene.Radiosity.ProbeSpacing:8]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.ProbeResolution:16]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.NumProbesToTraceBudget:300]]
Set CVar [[r.Lumen.TranslucencyVolume.GridPixelSize:64]]
Set CVar [[r.Lumen.TranslucencyVolume.RadianceCache.NumProbesToTraceBudget:200]]
Set CVar [[r.LumenScene.DirectLighting.UpdateFactor:32]]
Set CVar [[r.LumenScene.Radiosity.UpdateFactor:128]]
Set CVar [[hex.LumenGIMaxSurfaceCachePrimitiveTasks:0]]
Set CVar [[hex.LumenGIMaxMeshCardTasks:128]]
Set CVar [[r.Lumen.Reflections.DownsampleFactor:2]]
Set CVar [[r.MotionBlur.HalfResGather:0]]
Set CVar [[r.AmbientOcclusionMipLevelFactor:0.6]]
Set CVar [[r.AmbientOcclusionMaxQuality:100]]
Set CVar [[r.DepthOfFieldQuality:2]]
Set CVar [[r.RenderTargetPoolMin:400]]
Set CVar [[r.LensFlareQuality:2]]
Set CVar [[r.BloomQuality:5]]
Set CVar [[r.Bloom.ScreenPercentage:50.000]]
Set CVar [[r.FastBlurThreshold:3]]
Set CVar [[r.Tonemapper.GrainQuantization:1]]
Set CVar [[r.LightShaftQuality:1]]
Set CVar [[r.Filter.SizeScale:0.8]]
Set CVar [[r.DOF.Gather.RingCount:4 ; medium number of samples when gathering]]
Set CVar [[r.DOF.Scatter.ForegroundCompositing:1 ; additive foreground scattering]]
Set CVar [[r.DOF.Scatter.BackgroundCompositing:1 ; no background occlusion]]
Set CVar [[r.DOF.Scatter.EnableBokehSettings:0 ; no bokeh simulation when scattering]]
Set CVar [[r.DOF.Scatter.MaxSpriteRatio:0.04 ; only a maximum of 4% of scattered bokeh]]
Set CVar [[r.DOF.Kernel.MaxForegroundRadius:0.012 ; required because of AccumulatorQuality=0]]
Set CVar [[r.DOF.Kernel.MaxBackgroundRadius:0.012 ; required because of AccumulatorQuality=0]]
Set CVar [[r.Streaming.MipBias:0]]
Set CVar [[r.Streaming.MaxNumTexturesToStreamPerFrame:0]]
Set CVar [[r.MaxAnisotropy:4]]
Set CVar [[r.VT.MaxAnisotropy:8]]
Set CVar [[r.Streaming.PoolSize:800]]
Set CVar [[r.TranslucencyLightingVolumeDim:48]]
Set CVar [[r.RefractionQuality:2]]
Set CVar [[r.SSR.Quality:2]]
Set CVar [[r.TranslucencyVolumeBlur:1]]
Set CVar [[r.MaterialQualityLevel:1 ; High quality]]
Set CVar [[r.SSS.Scale:1]]
Set CVar [[r.SSS.SampleSet:1]]
Set CVar [[r.SSS.Quality:-1]]
Set CVar [[r.SSGI.Quality:2]]
Set CVar [[r.EmitterSpawnRateScale:0.5]]
Set CVar [[r.ParticleLightQuality:1]]
Set CVar [[r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice:2]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMax:64.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMax:64.0]]
Set CVar [[r.SkyLight.RealTimeReflectionCapture:1]]
Set CVar [[fx.Niagara.QualityLevel:2]]
Set CVar [[foliage.DensityScale:0.8]]
Set CVar [[grass.DensityScale:0.8]]
Set CVar [[r.HairStrands.Visibility.MSAA.SamplePerPixel:4]]
Set CVar [[r.AnisotropicMaterials:1]]
High to ultra
Set CVar [[r.ViewDistanceScale:1.0]]
Set CVar [[r.FXAA.Quality:4]]
Set CVar [[r.TemporalAA.Quality:2]]
Set CVar [[r.TSR.History.UpdateQuality:3]]
Set CVar [[r.TSR.History.GrandReprojection:1]]
Set CVar [[r.TSR.Velocity.Extrapolation:1]]
Set CVar [[r.TSR.RejectionAntiAliasingQuality:2]]
Set CVar [[r.Shadow.CSM.MaxCascades:10]]
Set CVar [[r.Shadow.MaxResolution:2048]]
Set CVar [[r.Shadow.RadiusThreshold:0.01]]
Set CVar [[r.Shadow.DistanceScale:1.0]]
Set CVar [[r.Shadow.CSM.TransitionScale:1.0]]
Set CVar [[r.Shadow.PreShadowResolutionFactor:1.0]]
Set CVar [[r.AOQuality:2]]
Set CVar [[r.VolumetricFog.GridPixelSize:8]]
Set CVar [[r.VolumetricFog.GridSizeZ:128]]
Set CVar [[r.Shadow.Virtual.MaxPhysicalPages:4096]]
Set CVar [[r.Shadow.Virtual.ResolutionLodBiasDirectional:-1.5]]
Set CVar [[r.LumenScene.Radiosity.ProbeSpacing:4]]
Set CVar [[r.LumenScene.Radiosity.HemisphereProbeResolution:4]]
Set CVar [[r.Lumen.TraceMeshSDFs.Allow:1]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.ProbeResolution:32]]
Set CVar [[r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal:1]]
Set CVar [[r.Lumen.ScreenProbeGather.DownsampleFactor:16]]
Set CVar [[r.Lumen.ScreenProbeGather.IrradianceFormat:0]]
Set CVar [[r.Lumen.ScreenProbeGather.StochasticInterpolation:0]]
Set CVar [[r.Lumen.ScreenProbeGather.TwoSidedFoliageBackfaceDiffuse:1]]
Set CVar [[r.Lumen.TranslucencyVolume.GridPixelSize:32]]
Set CVar [[r.Lumen.TranslucencyVolume.TraceFromVolume:1]]
Set CVar [[r.LumenScene.SurfaceCache.CardCaptureRefreshFraction:0.125]]
Set CVar [[r.LumenScene.Radiosity.UpdateFactor:64]]
Set CVar [[hex.LumenGIMaxMeshCardTasks:0]]
Set CVar [[r.Lumen.Reflections.DownsampleFactor:1]]
Set CVar [[r.Lumen.TranslucencyReflections.FrontLayer.Allow:1]]
Set CVar [[r.MotionBlurQuality:4]]
Set CVar [[r.AmbientOcclusionMipLevelFactor:0.4]]
Set CVar [[r.AmbientOcclusionRadiusScale:1.0]]
Set CVar [[r.Bloom.ScreenPercentage:70.711]]
Set CVar [[r.FastBlurThreshold:100]]
Set CVar [[r.Upscale.Quality:3]]
Set CVar [[r.Filter.SizeScale:1]]
Set CVar [[r.DOF.Gather.AccumulatorQuality:1 ; higher gathering accumulator quality]]
Set CVar [[r.DOF.Gather.PostfilterMethod:1 ; Median3x3 postfilering method]]
Set CVar [[r.DOF.Scatter.BackgroundCompositing:2 ; additive background scattering]]
Set CVar [[r.DOF.Scatter.EnableBokehSettings:1 ; bokeh simulation when scattering]]
Set CVar [[r.DOF.Scatter.MaxSpriteRatio:0.1 ; only a maximum of 10% of scattered bokeh]]
Set CVar [[r.DOF.Recombine.Quality:1 ; cheap slight out of focus]]
Set CVar [[r.DOF.TemporalAAQuality:1 ; more stable temporal accumulation]]
Set CVar [[r.DOF.Kernel.MaxForegroundRadius:0.025]]
Set CVar [[r.DOF.Kernel.MaxBackgroundRadius:0.025]]
Set CVar [[r.MaxAnisotropy:8]]
Set CVar [[r.Streaming.LimitPoolSizeToVRAM:0]]
Set CVar [[r.Streaming.PoolSize:1000]]
Set CVar [[r.TranslucencyLightingVolumeDim:64]]
Set CVar [[r.SSR.Quality:3]]
Set CVar [[r.SSR.HalfResSceneColor:0]]
Set CVar [[r.SceneColorFormat:4]]
Set CVar [[r.DetailMode:2]]
Set CVar [[r.SSS.SampleSet:2]]
Set CVar [[r.SSS.Quality:1]]
Set CVar [[r.SSS.HalfRes:0]]
Set CVar [[r.SSGI.Quality:3]]
Set CVar [[r.EmitterSpawnRateScale:1.0]]
Set CVar [[r.ParticleLightQuality:2]]
Set CVar [[r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice:4]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMax:128.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMax:128.0]]
Set CVar [[fx.Niagara.QualityLevel:3]]
Set CVar [[foliage.DensityScale:1.0]]
Set CVar [[grass.DensityScale:1.0]]
Ultra back to low
Set CVar [[r.SkeletalMeshLODBias:2]]
Set CVar [[r.ViewDistanceScale:0.4]]
Set CVar [[r.FXAA.Quality:0]]
Set CVar [[r.TemporalAA.Quality:0]]
Set CVar [[r.TSR.History.UpdateQuality:0]]
Set CVar [[r.TSR.History.GrandReprojection:0]]
Set CVar [[r.TSR.ShadingRejection.Flickering:0]]
Set CVar [[r.TSR.Velocity.Extrapolation:0]]
Set CVar [[r.TSR.RejectionAntiAliasingQuality:0]]
Set CVar [[r.ShadowQuality:2]]
Set CVar [[r.Shadow.CSM.MaxCascades:1]]
Set CVar [[r.Shadow.MaxResolution:512]]
Set CVar [[r.Shadow.MaxCSMResolution:512]]
Set CVar [[r.Shadow.RadiusThreshold:0.06]]
Set CVar [[r.Shadow.DistanceScale:0.6]]
Set CVar [[r.Shadow.CSM.TransitionScale:0.25;]]
Set CVar [[r.Shadow.PreShadowResolutionFactor:0.5]]
Set CVar [[r.DistanceFieldAO:0]]
Set CVar [[r.CapsuleShadows:0]]
Set CVar [[r.Shadow.Virtual.MaxPhysicalPages:512]]
Set CVar [[r.Shadow.Virtual.ResolutionLodBiasDirectional:0.0]]
Set CVar [[r.Shadow.Virtual.ResolutionLodBiasLocal:1.0]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountDirectional:0]]
Set CVar [[r.Shadow.Virtual.SMRT.SamplesPerRayDirectional:2]]
Set CVar [[r.Shadow.Virtual.SMRT.RayCountLocal:0]]
Set CVar [[r.Shadow.Virtual.SMRT.SamplesPerRayLocal:2]]
Set CVar [[r.DFShadowQuality:1]]
Set CVar [[r.VolumetricFog.GridPixelSize:32]]
Set CVar [[r.VolumetricFog.GridSizeZ:32]]
Set CVar [[r.LumenScene.Radiosity.ProbeSpacing:32]]
Set CVar [[r.LumenScene.Radiosity.HemisphereProbeResolution:3]]
Set CVar [[r.Lumen.TraceMeshSDFs.Allow:0]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.ProbeResolution:8]]
Set CVar [[r.Lumen.ScreenProbeGather.RadianceCache.NumProbesToTraceBudget:100]]
Set CVar [[r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal:0]]
Set CVar [[r.Lumen.ScreenProbeGather.DownsampleFactor:32]]
Set CVar [[r.Lumen.ScreenProbeGather.IrradianceFormat:1]]
Set CVar [[r.Lumen.ScreenProbeGather.StochasticInterpolation:1]]
Set CVar [[r.Lumen.ScreenProbeGather.TwoSidedFoliageBackfaceDiffuse:0]]
Set CVar [[r.Lumen.TranslucencyVolume.GridPixelSize:128]]
Set CVar [[r.Lumen.TranslucencyVolume.TraceFromVolume:0]]
Set CVar [[r.Lumen.TranslucencyVolume.RadianceCache.NumProbesToTraceBudget:50]]
Set CVar [[r.LumenScene.SurfaceCache.CardCaptureRefreshFraction:0]]
Set CVar [[r.LumenScene.DirectLighting.UpdateFactor:256]]
Set CVar [[r.LumenScene.Radiosity.UpdateFactor:1024]]
Set CVar [[hex.LumenGIMaxSurfaceCachePrimitiveTasks:256]]
Set CVar [[hex.LumenGIMaxMeshCardTasks:64]]
Set CVar [[r.Lumen.Reflections.DownsampleFactor:4]]
Set CVar [[r.Lumen.TranslucencyReflections.FrontLayer.Allow:0]]
Set CVar [[r.MotionBlurQuality:0]]
Set CVar [[r.MotionBlur.HalfResGather:1]]
Set CVar [[r.AmbientOcclusionMipLevelFactor:1.0]]
Set CVar [[r.AmbientOcclusionMaxQuality:0]]
Set CVar [[r.AmbientOcclusionLevels:0]]
Set CVar [[r.AmbientOcclusionRadiusScale:1.2]]
Set CVar [[r.DepthOfFieldQuality:0]]
Set CVar [[r.RenderTargetPoolMin:300]]
Set CVar [[r.LensFlareQuality:0]]
Set CVar [[r.BloomQuality:4]]
Set CVar [[r.Bloom.ScreenPercentage:25.000]]
Set CVar [[r.FastBlurThreshold:0]]
Set CVar [[r.Upscale.Quality:1]]
Set CVar [[r.Tonemapper.GrainQuantization:0]]
Set CVar [[r.LightShaftQuality:0]]
Set CVar [[r.Filter.SizeScale:0.6]]
Set CVar [[r.Streaming.MipBias:16]]
Set CVar [[r.Streaming.MaxNumTexturesToStreamPerFrame:1]]
Set CVar [[r.Streaming.Boost:0.3]]
Set CVar [[r.MaxAnisotropy:0]]
Set CVar [[r.VT.MaxAnisotropy:4]]
Set CVar [[r.Streaming.LimitPoolSizeToVRAM:1]]
Set CVar [[r.Streaming.PoolSize:400]]
Set CVar [[r.TranslucencyLightingVolumeDim:24]]
Set CVar [[r.RefractionQuality:0]]
Set CVar [[r.SSR.Quality:0]]
Set CVar [[r.SSR.HalfResSceneColor:1]]
Set CVar [[r.SceneColorFormat:3]]
Set CVar [[r.DetailMode:0]]
Set CVar [[r.TranslucencyVolumeBlur:0]]
Set CVar [[r.MaterialQualityLevel:0 ; Low quality]]
Set CVar [[r.SSS.Scale:0]]
Set CVar [[r.SSS.SampleSet:0]]
Set CVar [[r.SSS.Quality:0]]
Set CVar [[r.SSS.HalfRes:1]]
Set CVar [[r.SSGI.Quality:0]]
Set CVar [[r.EmitterSpawnRateScale:0.125]]
Set CVar [[r.ParticleLightQuality:0]]
Set CVar [[r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice:1]]
Set CVar [[r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution:8.0]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMin:2.0]]
Set CVar [[r.SkyAtmosphere.FastSkyLUT.SampleCountMax:16.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMin:2.0]]
Set CVar [[r.SkyAtmosphere.SampleCountMax:16.0]]
Set CVar [[r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat:1]]
Set CVar [[r.SkyLight.RealTimeReflectionCapture:0]]
Set CVar [[fx.Niagara.QualityLevel:0]]
Set CVar [[foliage.DensityScale:0]]
Set CVar [[grass.DensityScale:0]]
Set CVar [[r.HairStrands.Visibility.MSAA.SamplePerPixel:1]]
Set CVar [[r.AnisotropicMaterials:0]]
I'm obviously biased, but yeah it would be nice as a high end option . As a game that came from UE4 I imagine they didn't want to add more risk by switching shadow techniques but it does clean up the shadows and add a fair amount of lighting depth in your comparisons. In principle VSMs should work very well in this game as it is largely static geometry with a few dynamic parts, so VSM caching should work great. That said, if it hasn't been tested by the developers at all there are likely still edge cases that cause spurious invalidations and so on that contribute to the performance overhead; they do require a small amount of care to keep things working optimally, albeit less than previous shadow map techniques.It would be good if they added VSMs as an option for the PC version.
In this case the non-VSM shadows seem to be using a very short range and small number of cascades, presumably to keep performance high on lower end PCs. VSMs going out to the horizon instead are going to cost more, but in a game like this you could likely mitigate a lot of that with caching and scalability settings if desired.Looks like RT shadows equivalent from a IQ standpoint but 30% is a lot of deal with.
VSMs can often attain subpixel resolution similar to ray-traced shadows, but shadow-map-based techniques will always be limited in terms of area lights. VSMs with SMRT can do a plausible job of the first occluder with small to moderate-sized area lights but you can't push the area light size too far, and overlapping regions of soft and hard shadows are always going to have some artifacts with shadow maps, since they simply do not have the data required to do a physically accurate solution in those cases.Regarding IQ deltas Unreal documentation mentions Ray Traced shadows take precedence due to better quality.
Weird, I did look specifically at those areas and didn't see anything. Object count shouldn't really affect things on this front assuming they are Nanite. If it was longer distances it could be something like HLOD (also not related to Nanite, etc) but that shouldn't be a factor in the scenes you mention. Not sure what could be going on... is it possible to capture a video? I'm not sure why it doesn't repro for me here.It was most noticeable in indoor areas with lots of objects. The arcade and tv station. It might have happened in cutscenes too but don’t recall. It’s definitely pop-in and it’s both geometry and textures.
There's no doubt we'd all prefer to not use shadow maps anymore but even ignoring platform support, we are unfortunately still limited by the ray tracing BVH situation for the time being.
Can you share how you managed to enable VSM? Is UUU a must?I think one of the reasons LotF is performing better than other UE5 titles is the fact that it doesn’t appear to be using virtual shadow maps. You can enable it with Unreal Engine Unlocker and it makes shadows look much better imo. There is a 10-30% performance penalty.
I feel like the added geometric detail from employing Nanite is wasted a bit with imprecise shadow maps. It would be good if they added VSMs as an option for the PC version.
I haven't found another way of enabling it personally. Putting the command into .ini files didn't work. Here's the steps I use:Can you share how you managed to enable VSM? Is UUU a must?
Which games is this?
Which games is this?