Serie gratuita de libros en línea que enseña a crear un trazador de rayos desde cero en C++, con el código fuente completo de cada etapa.
ssloy/tinyrenderer
Curso paso a paso para aprender renderizado 3D creando un renderizador por software en unas 500 líneas de C++ puro, sin bibliotecas de terceros.
- Estrellas
- 24,450
- Forks
- 2,311
- Issues abiertos
- 4
- Último commit
- hace 3 meses
¿Qué es?
Tinyrenderer es una serie de tutoriales que explica cómo funcionan internamente las API de gráficos 3D, como OpenGL, Vulkan, Metal y DirectX. En lugar de llamar a una API de GPU, crea desde cero un renderizador simplificado por software y aborda el trazado de líneas, la rasterización de triángulos, las coordenadas baricéntricas, el z-buffer, el manejo de la cámara, el sombreado, el mapeado de texturas y normales, el mapeado de sombras y la oclusión ambiental.
El código es intencionalmente pequeño: unas 500 líneas de C++ sin dependencias gráficas externas. Su único componente auxiliar es una clase para leer y escribir archivos de imagen TGA. El proyecto es un recurso didáctico: las notas del curso, que constituyen el contenido principal, recorren cada etapa en orden, y el código fuente está pensado para estudiarse, no para reutilizarse como biblioteca.
El programa recibe un modelo 3D triangulado con texturas y genera una imagen renderizada, sin interfaz gráfica. Se compila con CMake.
Funciones clave
- 01Crea desde cero un renderizador por software en unas 500 líneas de C++.
- 02Aborda paso a paso la rasterización, el z-buffer, la configuración de la cámara y el sombreado.
- 03Incluye temas como el mapeado de texturas y normales, el mapeado de sombras y la oclusión ambiental.
- 04No utiliza bibliotecas gráficas de terceros; solo incluye un pequeño lector y escritor de imágenes TGA.
- 05Está organizado como una serie numerada de artículos del curso.
Casos de uso
- Aprender cómo funcionan internamente los pipelines de OpenGL o Vulkan.
- Impartir un curso o taller de gráficos sobre los fundamentos de la rasterización.
- Entender las coordenadas baricéntricas, los z-buffers y el mapeado de normales antes de usar API de GPU.
Inicio rápido
- 1
Clona el repositorio
git clone https://github.com/ssloy/tinyrenderer.git - 2
Entra en el directorio del proyecto
cd tinyrenderer - 3
Configura y compila con CMake
cmake -Bbuild && cmake --build build -j - 4
Ejecuta el renderizador con los modelos de ejemplo; la salida se guarda en framebuffer.tga
build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
Antes de usarlo
- El código es un ejercicio didáctico y el README indica que no debe usarse directamente.
- Es un renderizador por software y no muestra cómo crear aplicaciones para GPU.
- La licencia no está especificada claramente (NOASSERTION).
Temas
Preguntas frecuentes
- ¿Qué es tinyrenderer?
- Curso paso a paso para aprender renderizado 3D creando un renderizador por software en unas 500 líneas de C++ puro, sin bibliotecas de terceros. Tinyrenderer es una serie de tutoriales que explica cómo funcionan internamente las API de gráficos 3D, como OpenGL, Vulkan, Metal y DirectX. En lugar de llamar a una API de GPU, crea desde cero un renderizador simplificado por software y aborda el trazado de líneas, la rasterización de triángulos, las coordenadas baricéntricas, el z-buffer, el manejo de la cámara, el sombreado, el mapeado de texturas y normales, el mapeado de sombras y la oclusión ambiental.
- ¿tinyrenderer es gratuito? ¿Qué licencia tiene?
- tinyrenderer es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿tinyrenderer sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de tinyrenderer fue el 29 jul 2026.
- ¿Para qué puedo usar tinyrenderer?
- Aprender cómo funcionan internamente los pipelines de OpenGL o Vulkan. Impartir un curso o taller de gráficos sobre los fundamentos de la rasterización. Entender las coordenadas baricéntricas, los z-buffers y el mapeado de normales antes de usar API de GPU.
- ¿Cómo se instala tinyrenderer?
- Clona el repositorio: git clone https://github.com/ssloy/tinyrenderer.git Entra en el directorio del proyecto: cd tinyrenderer Configura y compila con CMake: cmake -Bbuild && cmake --build build -j Ejecuta el renderizador con los modelos de ejemplo; la salida se guarda en framebuffer.tga: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
- ¿Dónde consigo tinyrenderer?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ssloy/tinyrenderer
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Blender es una suite gratuita y de código abierto para crear contenido 3D, que abarca modelado, rigging, animación, simulación, renderizado, composición, seguimiento de movimiento y edición de video.
Motor de renderizado en tiempo real basado en física para Android, iOS, Linux, macOS, Windows y WebGL2, diseñado para ser pequeño y eficiente en Android.
Libro y sitio web gratuitos y de código abierto que explican las características de C++ moderno, desde C++11 hasta C++26, organizadas por tema.
Reconstruye un objeto a partir de una imagen de referencia como código TypeScript procedural de Three.js, listo para animar, en lugar de un archivo de malla.
Base de conocimiento en chino para desarrolladores de videojuegos y líderes técnicos, que abarca fundamentos, ingeniería de juegos, producción, gestión de equipos y operaciones en vivo.