ShaderUI : Fix poor scaling in _ShaderPath #5894
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
ShaderNetwork.shaders()
function builds a Python dictionary containing copies of all the shaders in the network. And in several places, we were calling that at least once per shader, giving us extremely poor scaling for certain large production networks with around 700 individual shaders. This was bad enough that some users reported avoiding the dialogue entirely.This commit replaces calls to
shaders()
with individual calls togetShader()
. That gives around a 300x speedup when walking the entire _ShaderPath hierarchy for a problematic network and querying theshader:inputs
property for each parameter found. This makes the shader dialogues for ShaderTweaks and ShaderQuery usable again.