Este é um projeto de brinquedo/experimental mostrando como começar a renderizar os glifos com o algoritmo Slug de Eric Lengyel nas CPUs e nas GPUs.
Eu recomendo ler pelo menos os slides vinculados na seção de referência antes de qualquer código.
| Sub-projeto | Propósito |
|---|---|
| Gerador de fonte | Lê um arquivo de fonte .ttf trueType e sai um arquivo .sluggish |
| Renderizador de software | Lê um arquivo. Ruggish e produz uma imagem .tga por ponto de código especificado |
| Renderizador de hardware | Lê um arquivo .sluggish e renderiza até 6 glifos especificados usando o OpenGL |
| Recurso | Apoiar |
|---|---|
| Textura de curvas (fp32) | SIM |
| Textura das bandas (U16) | SIM |
| Cortando glifos em bandas (performance) | SIM |
| Curvas de classificação (desempenho) | SIM |
| Implementação de alta qualidade de qualquer coisa | NÃO |
| Alto desempenho | NÃO |
| Codificação de ponto flutuante de 16 bits | NÃO |
| Desduplicação e compactação de dados | NÃO |
| Layouting de texto | NÃO |
| Formas coloridas | NÃO |
| Super amostragem adaptativa | NÃO |
| Correção gama | NÃO |
| Polígonos delimitadores | NÃO |
O objetivo era manter as coisas bem simples, sem ter um desempenho terrível . Por exemplo, cortar os glifos em bandas foi implementado porque é simples e melhora o desempenho massivamente .
Por padrão, o Target Executável do Depurador não está no diretório de saída, mas um caminho de diretório especificado pela variável de ambiente SLUGGISH_APP_DIR .
Os arquivos .exe e .pdb são copiados para esse diretório após cada compilação.
Para facilitar esse processo, você pode iniciar o Visual Studio por meio de um script em lote simples:
:: This file would sit next to the Sluggish directory
cd Sluggishmakefilesvs2013
set SLUGGISH_APP_DIR=C:important_stuffsluggish
Sluggish.sln
Para saber mais sobre como funciona o algoritmo SLUG, consulte:
A fonte centrada na GPU, renderizando diretamente de esboços de Glyph por Eric Lengyel
Journal of Computer Graphics Techniques (JCGT), vol. 6, não. 2, 31-47, 2017
Papel: http://jcgt.org/published/0006/02/02
Slides: http://terathon.com/i3d2018_lengyel.pdf
| Projeto/arquivo | Licença (s) | Arquivos de licença (s) |
|---|---|---|
| Este projeto | Unlicense (domínio público) | Unlicense.md |
| SDL 2 | zlib | libs/sdl2/copying.txt |
| Glew | Licença BSD modificada Licença Mesa 3-D (MIT) Licença Khronos (MIT) | libs/glew/licencie.txt |
| Premake 5 | Premake 5 | makefiles/premake_license.txt |
| stb_truetype.h | Pick-a-license: Unlicense (domínio público) Mit | código/gerador/stb_truetype.h |
| stb_image_write.h | Pick-a-license: Unlicense (domínio público) Mit | Code/Renderer_SW/STB_IMAGE_WRITE.H |
Embora não haja patente no algoritmo da lesma até o momento da redação, Eric Lengyel fez um pedido de um e o processo ainda está em andamento ...