Performance Issues? You won't BELIEVE how much fps is gained with this ONE TRICK!

Elite - Dangerous (CLIENT) 1_6_2022 3_31_00 PM.jpg
Excuse the clickbait title. I've finally got back to Odyssey after being on hiatus since the alpha, and am disappointed to see that performance hasn't really improved, at least not significantly - especially given that there is still so much low hanging fruit, of which this smoke effect is by far the lowest hanging and biggest performance killer in these offline settlements. To disable this effect I used 3DMigoto (I'm one of the authors of this tool) to skip the draw calls associated with this shader. Normally when people ask me if 3DMigoto can improve performance of a given game I answer "unlikely" (depends where the bottlenecks are, usually skipping an effect or two won't make much difference), but this is one case where the answer is a resounding "yes!".

I don't really intend to release the mod to do this - the point of this post is more to try to gain some attention on the issue. It would be dead simple for Frontier to add an option to the settings to disable this shader, and should be near the top priority of their optimisation efforts. And if they do go and tweak the shader, than any mod I release would break as the shader hash would change.

Edit: Please confirm/vote for this issue: https://issues.frontierstore.net/issue-detail/46882
 
Last edited:
But since people are definitely going to ask me anyway, you can learn to do it yourself by downloading 3DMigoto from github (or start with one of the other ED mods that use 3DMigoto, such as psychicEgg's hud colour mod EDHM) and add this to the end of the d3dx.ini. Also make sure that hunting is set to 0 in the d3dx.ini for release mode performance:

[ShaderOverrideBadPerformanceSmoke] hash = cb9b58ca58c6c572 handling = skip

If a future update tweaks the shader the hash will change - it's fairly easy to locate the new hash with 3DMigoto's hunting mode.
 
A huge number of effects are rolled into the game's "FX" quality setting. It would be nice if they added a sub menu so tinkering with xml attributes or third party tools wouldn't be necessary, but I don't really expect them to, especially not on the granularity of individual shaders.

I am still holding out hope that future updates result in more optimization that doesn't just involve stripping out effects or dialing back quality without addressing the underlying issues, but I have to temper my expectations here as well.
 
Those whoever wrote this shader should learn about clean code and why copypasting is bad
I can't speak for how Frontier / Elite handles it, but a lot of modern game engines abstract shaders so much that the terms "wrote" and "copypasting" don't really give an accurate idea of what is involved these days - in Unreal Engine and Unity you edit shaders by dragging nodes around, and have very little visibility (especially in UE) as to what code that generates or how much bloat the engine adds to handle their quirky way of doing materials, etc.
 
A huge number of effects are rolled into the game's "FX" quality setting
I have FX set to off (as it is set to when selecting the overall low quality preset), so this effect doesn't fall under that category. I woulnd't object to them adding it that category though, so that off would actually do something useful (as it is FX off/low/medium/high doesn't really make any meaningful performance difference for me).
 
Someone on Reddit asked if the issue also affected Horizons - it doesn't, but the question prompted me to find the equivelent shader used in Horizons to make some comparisons - this shader is used in the mail slot (the plumes of blue smoke), so I loaded up Horizons and located the pixel shader that it uses for that effect, which has:

33 instructions (2% the size of the Odyssey shader!)
0 loops (yay!)
2 uses of flow control (if/else blocks, and they skip a divide so they probably improve performance)
2 texture samples (quite reasonable)
0 buffer loads of any type (yay!)
Is only called 4 times/frame while looking at the mail slot (makes sense - I see four distinct smoke plumes)

Conclusion: Horizons uses a much leaner and way more efficient shader for the same effect, and calls it a reasonable number of times.
 

Deleted member 182079

D
Interesting yet also frustrating.

Why is the company who created this on their very own engine struggling to address these issues when a hobbyist player can work it out in a much shorter timeframe than over half a year?

Too many other issues so this one gets drowned in a sea of bugs? Looking at the seemingly significant performance gains wouldn't this have been quite high up the priority list?

I just don't get it.
 
Someone on Reddit asked if the issue also affected Horizons - it doesn't, but the question prompted me to find the equivelent shader used in Horizons to make some comparisons - this shader is used in the mail slot (the plumes of blue smoke), so I loaded up Horizons and located the pixel shader that it uses for that effect, which has:

33 instructions (2% the size of the Odyssey shader!)
0 loops (yay!)
2 uses of flow control (if/else blocks, and they skip a divide so they probably improve performance)
2 texture samples (quite reasonable)
0 buffer loads of any type (yay!)
Is only called 4 times/frame while looking at the mail slot (makes sense - I see four distinct smoke plumes)

Conclusion: Horizons uses a much leaner and way more efficient shader for the same effect, and calls it a reasonable number of times.

Massive difference comparing EDH and EDO in this aspect

I'm tempted to say that EDO is part of a massive ploy to have players shell out heavy cash for extremely powerful gfx cards.
And it It worked on me.

Even tho it's most probably not an applicable case here, still i cannot stop remember Hanlon's Razor.
 
I can't speak for how Frontier / Elite handles it, but a lot of modern game engines abstract shaders so much that the terms "wrote" and "copypasting" don't really give an accurate idea of what is involved these days - in Unreal Engine and Unity you edit shaders by dragging nodes around, and have very little visibility (especially in UE) as to what code that generates or how much bloat the engine adds to handle their quirky way of doing materials, etc.
in Ue4 and Ue5 you are always well aware about the instruction on the shader you are working on, not to mention the tons of debug tool (shader and quad visibility). Also, one material should be under 200 instruction to be considered as performat. 200-400 it0s ok... over 400 is bad.
Period.
 
Wow, as someone who's just recently been able to get odysee to work (macbook pro i9 5500m 4gb, bootcamp, undervolted)...

THANKYOU FOR THE 10FPS! Made me very happy. I spent a week over christmas crawling myself to something playable, this takes it well over the line.

Might even try the fps "gameplay".. errr, well, i enjoyed the tweaking :)

Also i can't believe they didn't know they made this shader. This could have single handledly saved brabes 20? 30? percent of steam negative reviews?

Wow, thank you again.!

EliteDangerous64_2022_01_06_20_17_52_844.jpg


MIND BLOWN AT THIS ONE. 33 its playable.
EliteDangerous64_2022_01_06_20_19_49_207.jpg


Thanks for the 10 fps here also.
EliteDangerous64_2022_01_06_20_21_10_581.jpg


And the 5 fps here.

EliteDangerous64_2022_01_06_20_24_30_451.jpg
 

Deleted member 182079

D
This effect can even make a 3090 struggle. This shader is a resource hog and should be remade.
I don't feel so bad anymore (2060S here) ... though in fact those settlements on fire are, apart from CZs, the one area where framerates still tank into the low 30s, sometimes even the red, whereas I get 50-60fps pretty much everywhere else now. Possibly a couple of settlement types also with some performance issues still (i.e. there's no fires but still performance drops).

Here's hoping they finally figured it out and it's in the next patch which is supposed to focus on performance (again :rolleyes:).
 
in Ue4 and Ue5 you are always well aware about the instruction on the shader you are working on, not to mention the tons of debug tool (shader and quad visibility). Also, one material should be under 200 instruction to be considered as performat. 200-400 it0s ok... over 400 is bad.
Period.
As a programmer I'd say it's not the number of lines that are the problem but the quality of the code, a badly coded loop can be worse than simply repeating a block of good code X number of times. Generally less code is better ( from memory overhead and instruction count etc ) - it's a balancing act between making working, readable and manageable code vs super efficient but only the author fully understands it and can maintain it properly.

I can't speak for how Frontier / Elite handles it, but a lot of modern game engines abstract shaders so much that the terms "wrote" and "copypasting" don't really give an accurate idea of what is involved these days - in Unreal Engine and Unity you edit shaders by dragging nodes around, and have very little visibility (especially in UE) as to what code that generates or how much bloat the engine adds to handle their quirky way of doing materials, etc.

Code generators and programming by drag-n-drop UI's have always generated inefficient code - I hate them simply because of this - I don't work in gaming but in business application world there is a strong pull for generated code and low-code/no-code solutions - the up side from management point of view is they think they think they can hire any one to drag-n-drop some programs together - the down side is the massive amount of inefficient code that's generated. Only winner if the hardware industry as everyone needs faster processors and more memory to run these Frankenstein programs.

There was a time when I'd reference Elite as a shining example of great code - the original PC Elite game on two floppy disks, but if you didn't like the music you could actually run the whole game from a single floppy ! Those days are gone, now Elite Dangerous is a stinking example of bad coding and bad management.
 
Interesting yet also frustrating.

Why is the company who created this on their very own engine struggling to address these issues when a hobbyist player can work it out in a much shorter timeframe than over half a year?

Too many other issues so this one gets drowned in a sea of bugs? Looking at the seemingly significant performance gains wouldn't this have been quite high up the priority list?

I just don't get it.

Bad morale? I can’t imagine the conditions where a developer who was working on this would not put their hand up and mention this while the expansion was blowing up in the first few months of release. Even keeping to a customers point of view it is a fair surprise.
 
Interesting yet also frustrating.

Why is the company who created this on their very own engine struggling to address these issues when a hobbyist player can work it out in a much shorter timeframe than over half a year?

Too many other issues so this one gets drowned in a sea of bugs? Looking at the seemingly significant performance gains wouldn't this have been quite high up the priority list?

I just don't get it.

Well, a hobbyist actually enjoys what they do and doesn't need any direction or permission to do it.

Someone on Reddit asked if the issue also affected Horizons - it doesn't, but the question prompted me to find the equivelent shader used in Horizons to make some comparisons - this shader is used in the mail slot (the plumes of blue smoke), so I loaded up Horizons and located the pixel shader that it uses for that effect, which has:

33 instructions (2% the size of the Odyssey shader!)
0 loops (yay!)
2 uses of flow control (if/else blocks, and they skip a divide so they probably improve performance)
2 texture samples (quite reasonable)
0 buffer loads of any type (yay!)
Is only called 4 times/frame while looking at the mail slot (makes sense - I see four distinct smoke plumes)

Conclusion: Horizons uses a much leaner and way more efficient shader for the same effect, and calls it a reasonable number of times.

What's it look like in the Odyssey mail slot?
 
Last edited:
This effect can even make a 3090 struggle. This shader is a resource hog and should be remade.
Can confirm. I noticed no improvement when upgrading from a GTX-1080 Ti to an RTX 3090. The 3090 is also pegged to >90% utilization when entering and leaving a station. Didn't try it on a settlement but it's likely worse there.
 
Back
Top Bottom