Ray tracing é um dos termos da moda quando se imagina o futuro dos games. Desde a chegada das placas de vídeo Geforce RTX, o algoritmo de simulação de luz é a grande cartada na busca de gráficos mais realistas. Jogos modernos vão se aproximar cada vez mais do fotorrealismo.
Viram os cenários de Nova Iorque em Marvel's Spider-Man: Miles Morales no PS5, por exemplo? Ou o espetáculo visual do remaster de Spider Man? E estamos no início da geração...
Veja também → Escolhendo uma placa de vídeo com seu perfil
Mas tem sempre um cientista "maluco beleza" olhando para o passado. E um desses resolveu tentar ray tracing no SNES. Sim, no Super Nintendo. E conseguiu, trabalhando sozinho – ou quase, com ajuda de outros desenvolvedores aqui e ali – implementar a tecnologia no console de 1990. Ou quase isso.
Olha essa demo cheia de reflexos em tempo real. A qualidade é baixa porque foi gravada filmando a tela.
O autor da façanha, Ben Carter, conta na página de seu projeto que a ideia nasceu ao ver um amigo que estava desenvolvendo uma GPU própria.
"Um pouco depois – porque às vezes meu cérebro me odeia e tem prazer em aparecer com ideias bobas – aquilo virou 'não seria interessante tentar fazer raytracing no SNES?' e assim nasceu a ideia do chip SuperRT".
O que é ray tracing mesmo?
Simplificando, é uma simulação de raios de luz agindo sobre elementos da cena. No mundo real, uma luz emitida por certa fonte atinge vários objetos e superfícies, é refletida, atinge outros objetos (e até o mesmo que já iluminou antes), etc, até chegar ao olho do observador. Simular tudo igual ao mundo real seria quase impossível por limitações de processamento.
O algoritmo simula o caminho dos raios de luz e assim são criados efeitos muito mais realistas de luz, sombra e reflexos. A tecnologia não é nova – renderização de vídeos e imagens estáticas usam há tempos, pois cada quadro pode ser produzido lentamente. Uma única cena de alta qualidade num software como Daz ou Blender pode levar horas renderizando.
Mas em videogames a história é outra: um jogo rodando a 60 FPS e 1080p, precisa renderizar mais de 2 milhões de pixels por segundo. SESSENTA VEZES. Agora coloque sobre isso o cálculo das diversas fontes de luz reagindo de acordo com os pixels de cada objeto e suas peculiaridades: distância, reflexos, opacidade, textura... Haja processamento.
Como disse antes, chips de vídeo modernos estão focando no ray tracing – a Nvidia tomou à frente em 2018, mas a AMD também começou sua caminhada na linha Radeon RX 6000 (além dos chips gráficos do PlayStation 5 e Xbox Series X/S). Então como alguém conseguiu algo tão hercúleo para o processador usando o hardware jurássico do Super Nintendo?
Naturalmente não é só o Super Nintendo. O sistema conectado ao console usa componentes como um Cyclone V FPGA, chip reprogramável mais ou menos em retroconsoles e carts tipo Everdrive, por exemplo. A base do brinquedinho é um DE10-Nano, mas o desenvolvedor não quis usar o núcleo ARM do bicho – um dual core de 800 MHz (contra os 3,58 MHz do SNES). Ele queria uma abordagem parecida com a do chip Super FX e isso arruinaria o propósito.
Tal como no SFX, o trabalho do SNES é rodar o software do jogo e passar as cenas para o trambolho, que as processa com ray tracing, entrega direto à memória de vídeo do SNES e de lá vai pra tela.
A imagem pode ter no máximo 200 x 160 pixels, com uma atualização da tela a cada 2 frames. O máximo possível é de 30 FPS, mas segundo o desenvolvedor, está rodando a cerca de 20 FPS por "gargalos na lógica no lado do SNES no momento".
Com limitações ou não, é interessante ver o resultado funcionando. Carter continua aperfeiçoando seu SuperRT.