Home » Mobile » Renderizando texto via GPU

Renderizando texto via GPU

Ah, o bom e velho espírito hacker. Não satisfeito com a forma com que texto é renderizado em GPUs, um sujeito resolveu contornar o modelo tradicional. Resultado? Um PDF de 162 páginas é renderizado em menos de 1 segundo, com direito a zoom suave. Clique e veja, se seu hardware aguentar, claro.

4 anos atrás

NVIDIA-Pascal-GPU-Chip-Module

Uma das coisas mais legais do espírito hacker é fazer as coisas funcionarem de forma diferente da que foram projetadas. Rodar Quake em uma torradeira não é feito pelo Quake, ou pela torradeira, mas para o sujeito descobrir se é possível. Parafraseando o xkcd, Perdido em Marte fez sucesso por ser um filme inteiro igual àquela cena em Apollo XIII onde os engenheiros tentam fazer um filtro quadrado se encaixar em um buraco redondo. 

Algumas vezes essa busca por quebrar as regras para aprender como as coisas funcionam rende resultados muito legais. É o caso de um sujeito que resolveu descobrir se poderia otimizar a forma com que texto é renderizado em computadores.

As placas de vídeo possuem ferramentas para isso, mas o método comum tem limitações. Usam um mapeamento onde as fontes são renderizadas e convertidas em texturas. Isso é ótimo para o dia-a-dia mas como é bitmap, na hora de um zoom você tem que renderizar de novo a fonte, o que é lento.

O que o sujeito fez foi jogar todo o trabalho para a GPU, um chip que por projeto é excelente realizando tarefas simples, repetitivas e em paralelo. Em vez de a CPU gerar uma textura em bitmap a GPU recebe os dados vetoriais da fonte, cria um shader que baseado nas informações de tamanho e tipo da fonte, então gera uma textura. Com isso você tem todo o poder da GPU exibindo texto, podendo dar zoom em tempo real sem perda de qualidade.

O trabalho em detalhes pode ser lido aqui.

Quer ver o resultado? Se você tiver um navegador moderno com aceleração por hardware e uma placa de vídeo decente, acesse este link. Na minha máquina ele renderizou o PDF, com 162 páginas, em menos de 1 segundo.

Leia mais sobre: , , , , .

relacionados


Comentários