Digital Foundry Article Technical Discussion [2023]

Status
Not open for further replies.
The extra headroom was for visual fidelity and they are not all related to gpu compute. For example the texture streaming pool is going to be vram dependent and the developer says PS5 has advantage here so asset quality can be pushed higher. And of course async compute is another PS5 advantage he mentions. Also, as I explained in my first reply, developers will have their own specific tolerance levels for fidelity vs performance trade-off. Remember far more often than not PS5 and Series X are running at 60fps, while PS5 higher settings are always in effect. In the most heavy situations where PS5 reveals the framerate discrepancy vs Series X, it may be the developer's willingness to accept the lower framerate for the sake of keeping the increased visual bells and whistles of PS5 activated.

I hope this explanation is clear. Not sure why this has to be contentious it's great that the developer is sharing how the sauce was made in great detail. We're learning much more than we bargained for and with all due respect to DF (it was still great coverage), it goes much further than their reporting in some significant ways.
You didn’t teach anyone anything new and just parroted the same thing over and over again.

The dev isn’t even aware of his own performance metrics. The moment there is even too much action (and even outside of combat) the fps drops. It can go as low as in the 30s on PS5 and low 40s on Xbox. If that’s fine for a dev that scrapped a 30fps mode because it didn’t feel good, there’s a lot of work to be done.
 
Last edited:
Intriguing that Alex got to see Neon Giant's new game. I ultimately bounced of The Ascent but it looked incredible. They tech arted the hell put of it. Doubly impressive from such a small team. It put their next game on my watchlist.

The new game's a UE5 cyberpunk fps, maybe a bit Deux Ex-ish. Alex was impressed. Hope they show something off in public soon.
 
The dev definitely looks legit to me but despite his hand in writing the performance tool his hardware knowledge seems a bit shakey.

For example he describes the PS5 as a 6700XT because they have roughly the same base clocks but fails to account for the 6700XT's higher CU's and also describes the PS5 as having an advantage in memory bandwidth without accounting for the infinity cache.

Here's the thread itself if anyone's interested:


He's posted the config ini's from both consoles for comparison now although as I'm on a phone I can't easily compare them.
 
For the PS5 here are some of the changes we have in the device profile.

; Baseline

+CVars=r.SecondaryScreenPercentage.GameViewport=50 +CVars=r.PostProcessing.QuarterResolutionDownsample=1 +CVars=r.RenderTargetPoolMin=600 +CVars=r.LumenScene.SurfaceCache.CardMaxResolution=256 +CVars=r.Bloom.ScreenPercentage=25 +CVars=r.Lumen.Reflections.DownsampleFactor=3 +CVars=r.FreeSkeletalMeshBuffers=1 +CVars=r.SupportReversedIndexBuffers=0 +CVars=r.SupportDepthOnlyIndexBuffers=0

; Scalability Groups +CVars=sg.GlobalIlluminationQuality=2 +CVars=sg.AtmosphereQuality=2 ; CVars here used to be part of GI quality

+CVars=r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead +CVars=r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently +CVars=r.Bloom.AsyncCompute=1

+CVars=r.LocalExposure=1 +CVars=r.LightShaftQuality=1

; Newly added skylight resolution CVar +CVars=ASC.SkylightMaxCubemapResolution=512

For the X we have

; Baseline

+CVars=r.SecondaryScreenPercentage.GameViewport=50 +CVars=r.PostProcessing.QuarterResolutionDownsample=1 +CVars=r.LumenScene.SurfaceCache.CardMaxResolution=256 +CVars=r.Bloom.ScreenPercentage=25 +CVars=r.Lumen.Reflections.DownsampleFactor=3 +CVars=r.FreeSkeletalMeshBuffers=1 +CVars=r.SupportReversedIndexBuffers=0 +CVars=r.SupportDepthOnlyIndexBuffers=0 +CVars=r.SSR.HalfResSceneColor=0 ; This can cause a crash if set to 1 +CVars=r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead +CVars=r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently +CVars=r.Bloom.AsyncCompute=1 +CVars=r.FidelityFX.FSR2.Sharpness=0 ; To avoid artifacts

; Newly added skylight resolution CVars +CVars=ASC.SkylightMaxCubemapResolution=512

as well as the X specific overrides

[XSX_Anaconda DeviceProfile]

DeviceType=XSX BaseProfileName=XSX +CVars=r.SecondaryScreenPercentage.GameViewport=50 ; We want a 1080p secondary screen viewport +CVars=sg.ViewDistanceQuality=3 +CVars=sg.AntiAliasingQuality=3 +CVars=sg.PostProcessQuality=3 +CVars=sg.TextureQuality=3 +CVars=sg.EffectsQuality=3 +CVars=sg.FoliageQuality=3 +CVars=sg.ShadowQuality=2 +CVars=sg.ShadowResolutionQuality=2 +CVars=sg.ShadowMeshQuality=2 +CVars=sg.ShadingQuality=3 +CVars=sg.GlobalIlluminationQuality=2 +CVars=sg.AtmosphereQuality=2 +CVars=r.Streaming.MaxEffectiveScreenSize=1080 +CVars=r.Streaming.PoolSize=4096 ; Overkill but necessary to avoid pool overflow (perf hit) and has not been known to cause emergency memory pressure ; Virtual texture pools in XSXEngine.ini are scaled to XSS ; Here we make sure to configure the pool scalability to better fit the XSX +CVars=r.VT.PoolSizeScale.Group0=4 ; x4 because she's worth it +CVars=r.VT.PoolSizeScale.Group1=4 +CVars=r.VT.PoolSizeScale.Group2=4 ; There are only 3 groups that we can scale

+CVars=r.LocalExposure=1 +CVars=r.LightShaftQuality=1
 
What a sweet little bitts of info here, what can be deciphered

Console context

1 still punching above its weight

2 Another clear hint from devs that since One/series consoles, Playstation software stack/enviroment/tools are more tuned for reaching hardware max performance. As dedicated platform should be.


Middle size dev using Unreal engine context

1 You have to scratch a head wondering if everything indeed was measured checked and decided optimally in the heat of the blueprints XD
 
For the PS5 here are some of the changes we have in the device profile.

; Baseline

+CVars=r.SecondaryScreenPercentage.GameViewport=50 +CVars=r.PostProcessing.QuarterResolutionDownsample=1 +CVars=r.RenderTargetPoolMin=600 +CVars=r.LumenScene.SurfaceCache.CardMaxResolution=256 +CVars=r.Bloom.ScreenPercentage=25 +CVars=r.Lumen.Reflections.DownsampleFactor=3 +CVars=r.FreeSkeletalMeshBuffers=1 +CVars=r.SupportReversedIndexBuffers=0 +CVars=r.SupportDepthOnlyIndexBuffers=0

; Scalability Groups +CVars=sg.GlobalIlluminationQuality=2 +CVars=sg.AtmosphereQuality=2 ; CVars here used to be part of GI quality

+CVars=r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead +CVars=r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently +CVars=r.Bloom.AsyncCompute=1

+CVars=r.LocalExposure=1 +CVars=r.LightShaftQuality=1

; Newly added skylight resolution CVar +CVars=ASC.SkylightMaxCubemapResolution=512

For the X we have

; Baseline

+CVars=r.SecondaryScreenPercentage.GameViewport=50 +CVars=r.PostProcessing.QuarterResolutionDownsample=1 +CVars=r.LumenScene.SurfaceCache.CardMaxResolution=256 +CVars=r.Bloom.ScreenPercentage=25 +CVars=r.Lumen.Reflections.DownsampleFactor=3 +CVars=r.FreeSkeletalMeshBuffers=1 +CVars=r.SupportReversedIndexBuffers=0 +CVars=r.SupportDepthOnlyIndexBuffers=0 +CVars=r.SSR.HalfResSceneColor=0 ; This can cause a crash if set to 1 +CVars=r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead +CVars=r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently +CVars=r.Bloom.AsyncCompute=1 +CVars=r.FidelityFX.FSR2.Sharpness=0 ; To avoid artifacts

; Newly added skylight resolution CVars +CVars=ASC.SkylightMaxCubemapResolution=512

as well as the X specific overrides

[XSX_Anaconda DeviceProfile]

DeviceType=XSX BaseProfileName=XSX +CVars=r.SecondaryScreenPercentage.GameViewport=50 ; We want a 1080p secondary screen viewport +CVars=sg.ViewDistanceQuality=3 +CVars=sg.AntiAliasingQuality=3 +CVars=sg.PostProcessQuality=3 +CVars=sg.TextureQuality=3 +CVars=sg.EffectsQuality=3 +CVars=sg.FoliageQuality=3 +CVars=sg.ShadowQuality=2 +CVars=sg.ShadowResolutionQuality=2 +CVars=sg.ShadowMeshQuality=2 +CVars=sg.ShadingQuality=3 +CVars=sg.GlobalIlluminationQuality=2 +CVars=sg.AtmosphereQuality=2 +CVars=r.Streaming.MaxEffectiveScreenSize=1080 +CVars=r.Streaming.PoolSize=4096 ; Overkill but necessary to avoid pool overflow (perf hit) and has not been known to cause emergency memory pressure ; Virtual texture pools in XSXEngine.ini are scaled to XSS ; Here we make sure to configure the pool scalability to better fit the XSX +CVars=r.VT.PoolSizeScale.Group0=4 ; x4 because she's worth it +CVars=r.VT.PoolSizeScale.Group1=4 +CVars=r.VT.PoolSizeScale.Group2=4 ; There are only 3 groups that we can scale

+CVars=r.LocalExposure=1 +CVars=r.LightShaftQuality=1



Code:
; Baseline
r.SecondaryScreenPercentage.GameViewport=50
r.PostProcessing.QuarterResolutionDownsample=1
r.RenderTargetPoolMin=600
r.LumenScene.SurfaceCache.CardMaxResolution=256
r.Bloom.ScreenPercentage=25
r.Lumen.Reflections.DownsampleFactor=3
r.FreeSkeletalMeshBuffers=1
r.SupportReversedIndexBuffers=0
r.SupportDepthOnlyIndexBuffers=0

; Scalability Groups
sg.GlobalIlluminationQuality=2
sg.AtmosphereQuality=2

; CVars here used to be part of GI quality
r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently
r.Bloom.AsyncCompute=1
r.LocalExposure=1
r.LightShaftQuality=1

; Newly added skylight resolution CVar ASC.SkylightMaxCubemapResolution=512

For the X we have

; Baseline

r.SecondaryScreenPercentage.GameViewport=50
r.PostProcessing.QuarterResolutionDownsample=1
r.LumenScene.SurfaceCache.CardMaxResolution=256
r.Bloom.ScreenPercentage=25
r.Lumen.Reflections.DownsampleFactor=3
r.FreeSkeletalMeshBuffers=1
r.SupportReversedIndexBuffers=0
r.SupportDepthOnlyIndexBuffers=0
r.SSR.HalfResSceneColor=0 ; This can cause a crash if set to 1
r.Lumen.Reflections.TraceMeshSDFs=0 ; Trace the global SDF instead
r.LumenScene.FastCameraMode=1 ; use less texel density, but update more frequently
r.Bloom.AsyncCompute=1
r.FidelityFX.FSR2.Sharpness=0 ; To avoid artifacts

; Newly added skylight resolution CVars ASC.SkylightMaxCubemapResolution=512

as well as the X specific overrides

[XSX_Anaconda DeviceProfile]
DeviceType=XSX BaseProfileName=XSX
r.SecondaryScreenPercentage.GameViewport=50 ; We want a 1080p secondary screen viewport
sg.ViewDistanceQuality=3
sg.AntiAliasingQuality=3
sg.PostProcessQuality=3
sg.TextureQuality=3
sg.EffectsQuality=3
sg.FoliageQuality=3
sg.ShadowQuality=2
sg.ShadowResolutionQuality=2
sg.ShadowMeshQuality=2
sg.ShadingQuality=3
sg.GlobalIlluminationQuality=2
sg.AtmosphereQuality=2
r.Streaming.MaxEffectiveScreenSize=1080
r.Streaming.PoolSize=4096 ; Overkill but necessary to avoid pool overflow (perf hit) and has not been known to cause emergency memory pressure ; Virtual texture pools in XSXEngine.ini are scaled to XSS ; Here we make sure to configure the pool scalability to better fit the XSX
r.VT.PoolSizeScale.Group0=4 ; x4 because she's worth it
r.VT.PoolSizeScale.Group1=4
r.VT.PoolSizeScale.Group2=4 ; There are only 3 groups that we can scale
r.LocalExposure=1
r.LightShaftQuality=1

cleaned it a bit for readibility
 
Sorry I'm not really following. Doesn't XSX have better throughput in terms of the specs he posted? I remember XSX has 10GBs of fast GDDR6 memories (320bit bus, 560GB/s). Obviously you not gonna use that 6GBs of slow rams for graphics, so how is it "higher bandwidth GDDR6"?
I'm just kinda confused here.

I think he is suggesting the combination of effective SSD throughput and GPU memory bandwidth. We already understand the PS5 advantage for SSD. For gpu memory bandwidth, it might be a situation where the game desires faster memory in excess of the Series X 10gb. Maybe because all 16gb of PS5 memory runs at 448gb makes the hardware easier and more advantageous to execute UE5 feature set. Of course all speculation but it makes sense.
 
This is not what I'd call an indy developer. They spent 5 years on this with over 100 people.
Well, they are an independent developer and required funding from EA to publish their game. I guess I should have said "larger" independent developer.
 
Status
Not open for further replies.
Back
Top