
Sempre que pensamos no Game Boy Color (GBC), a nostalgia leva-nos para os clássicos sprites 2D coloridos de Pokémon ou Zelda. O que certamente não nos vem à cabeça é a renderização de objetos tridimensionais com iluminação dinâmica. Contudo, um programador astuto decidiu desafiar as limitações do hardware da Nintendo e criou algo que, tecnicamente, não deveria ser possível.
Danny Spencer desenvolveu uma demonstração interativa que coloca o GBC a correr um shader 3D em tempo real, controlado pelo utilizador. O projeto, apelidado de "gbshader", exibe um bule (o famoso Utah Teapot) com sombreamento Lambert, que pode ser rodado e iluminado de diferentes ângulos instantaneamente.
A "magia" matemática num processador de 8 bits
Para quem percebe de programação retro, este feito é impressionante devido às restrições severas da consola. O GBC utiliza um SoC Sharp SM83. Embora Spencer tenha utilizado o "modo de dupla velocidade" da consola (que empurra o relógio para pouco mais de 8 MHz), o processador continua a ser extremamente limitado para cálculos 3D.
O maior obstáculo? O SM83 não possui uma instrução de multiplicação nativa. Para contornar isto e conseguir a velocidade necessária para uma animação fluida, Spencer teve de recorrer a truques matemáticos inteligentes. Em vez de multiplicações diretas, o programador utilizou logaritmos e tabelas de consulta (lookup tables). Para reduzir ainda mais a carga no processador, os vetores foram convertidos para coordenadas esféricas, permitindo implementar o shader Lambert através de produtos escalares esféricos.
Experimenta tu mesmo no browser
O melhor desta notícia é que não precisas de desenterrar o teu velho Game Boy para veres o resultado. Danny Spencer disponibilizou não só o código-fonte e as ROMs para download, como também incorporou um emulador diretamente na sua página.
Através do emulador online, qualquer pessoa pode usar as setas do teclado para ajustar a posição da fonte de luz e o ângulo do objeto em simultâneo, comprovando a fluidez da renderização. Para os curiosos e programadores que queiram mergulhar nos detalhes técnicos e matemáticos desta proeza, toda a documentação e ficheiros estão disponíveis, conforme detalhado no blog de Danny Spencer.












Nenhum comentário
Seja o primeiro!