05-09-2020, 12:59 PM
Metroid prime de gamecube/Wii era um inferno de emular porque ele tem "muitos" shaders.
Pra ser mais específico, no gamecube/Wii, o "sistema de shader" dele é uma lista fixa de 16 comandos, ai o que o dolphin normalmente faz é pegar, esperar uma combinação nova de comandos aparecer e converter pra shader normal moderno e compilar etc..
Porem como o shader é minusculo, é estupidamente rápido de trocar a configuração no hardware real, e metroid prime abusa disso pra ficar dinamicamente mudando os comandos, o que trucida o esquema acima.
A solução foi criar um shader gigantesco que emula o sistema de shader inteiro do gamecube, o ubershader.
O ubershader é mais lento do que shaders compilados, mas ele só precisa ser usado enquanto o dolphin não terminou de compilar o flood.
Pra ser mais específico, no gamecube/Wii, o "sistema de shader" dele é uma lista fixa de 16 comandos, ai o que o dolphin normalmente faz é pegar, esperar uma combinação nova de comandos aparecer e converter pra shader normal moderno e compilar etc..
Porem como o shader é minusculo, é estupidamente rápido de trocar a configuração no hardware real, e metroid prime abusa disso pra ficar dinamicamente mudando os comandos, o que trucida o esquema acima.
A solução foi criar um shader gigantesco que emula o sistema de shader inteiro do gamecube, o ubershader.
O ubershader é mais lento do que shaders compilados, mas ele só precisa ser usado enquanto o dolphin não terminou de compilar o flood.