It takes time to compile the shaders that represent the current Gamecube GPU pipeline configuration, and since this is done by the graphics driver, there's no direct way around it.
Possible solutions include:
1) Ishiruuka's solution: just don't display the object until its shader is compiled, causing potentially bad graphical glitches but avoiding stutters.
2) Ubershader solution: compile an ubershader (or a set of ubershaders) that can represent any Gamecube GPU pipeline configuration, and load that until the specialized one is finished compiling. Nobody's done this one yet, so it's not certain it would work effectively.
3) Partial ubershader: identify families of shaders which are similar but differ in small ways, and compile slightly more generic versions than currently (but not fully generic) so that a single shader can represent all those slight variations, thus dramatically reducing the number of shaders necessary (and much less stuttering). This would require analysis of how games configure the GPU pipeline and what sort of shaders are typically generated in games that generate very large numbers of shaders, like Metroid.
Possible solutions include:
1) Ishiruuka's solution: just don't display the object until its shader is compiled, causing potentially bad graphical glitches but avoiding stutters.
2) Ubershader solution: compile an ubershader (or a set of ubershaders) that can represent any Gamecube GPU pipeline configuration, and load that until the specialized one is finished compiling. Nobody's done this one yet, so it's not certain it would work effectively.
3) Partial ubershader: identify families of shaders which are similar but differ in small ways, and compile slightly more generic versions than currently (but not fully generic) so that a single shader can represent all those slight variations, thus dramatically reducing the number of shaders necessary (and much less stuttering). This would require analysis of how games configure the GPU pipeline and what sort of shaders are typically generated in games that generate very large numbers of shaders, like Metroid.
