Este es un proyecto de juguete/experimental que muestra cómo comenzar a representar los glifos con el algoritmo de Slug de Eric Lengyel en CPU y GPU.
Recomiendo leer al menos las diapositivas vinculadas en la sección de referencia antes de cualquiera del código.
| Subproyecto | Objetivo |
|---|---|
| Generador de fuentes | Lee un archivo de fuente .ttf trueType y emite un archivo .slugh |
| Renderizador de software | Lee un archivo .slugh y emite una imagen .tga por punto de código especificado |
| Renderista | Lee un archivo .slugh y representa hasta 6 glifos especificados usando OpenGL |
| Característica | Apoyo |
|---|---|
| Textura de las curvas (FP32) | SÍ |
| Textura de las bandas (U16) | SÍ |
| Cortar glifos en bandas (rendimiento) | SÍ |
| Curvas de clasificación (rendimiento) | SÍ |
| Implementación de alta calidad de cualquier cosa | NO |
| Rendimiento alto | NO |
| Codificación de punto flotante de 16 bits | NO |
| Desduplicación de datos y compresión | NO |
| Diseño de texto | NO |
| Formas de color | NO |
| Super-muestreo adaptativo | NO |
| Corrección gamma | NO |
| Polígonos delimitadores | NO |
El objetivo era mantener las cosas bastante simples sin dejar de tener un rendimiento horrible . Por ejemplo, se ha implementado cortar los glifos en bandas porque es simple y mejora el rendimiento masivamente .
Por defecto, el ejecutable de destino del depurador no está en el directorio de salida, sino en una ruta de directorio especificada por la variable de entorno SLUGGISH_APP_DIR .
Los archivos .exe y .pdb se copian a ese directorio después de cada compilación.
Para facilitar este proceso, puede iniciar Visual Studio a través de un script de lotes simple:
:: This file would sit next to the Sluggish directory
cd Sluggishmakefilesvs2013
set SLUGGISH_APP_DIR=C:important_stuffsluggish
Sluggish.sln
Para obtener más información sobre cómo funciona el algoritmo de Slug, consulte:
Fuente centrada en GPU Renderización directamente de los contornos de glifo por Eric Lengyel
Journal of Computer Graphics Techniques (JCGT), vol. 6, no. 2, 31-47, 2017
Documento: http://jcgt.org/published/0006/02/02
Slides: http://terathon.com/i3d2018_lengyel.pdf
| Proyecto/archivo | (S) licencia (s) | Archivo (s) de licencia |
|---|---|---|
| Este proyecto | Unicenso (dominio público) | Unicense.md |
| SDL 2 | zlib | libs/sdl2/coping.txt |
| Glew | Licencia BSD modificada Licencia MESA 3-D (MIT) Licencia de Khronos (MIT) | libs/glew/licencia.txt |
| Premgo 5 | Premgo 5 | Makefiles/Premake_License.txt |
| stb_truetype.h | Pick-a License: Unicenso (dominio público) MIT | código/generador/stb_truetype.h |
| stb_image_write.h | Pick-a License: Unicenso (dominio público) MIT | código/renderer_sw/stb_image_write.h |
Si bien no hay patente en el algoritmo de Slug hasta el momento de escribir, Eric Lengyel ha presentado una solicitud para uno y el proceso aún está en curso ...