Série gratuita de livros online que ensina a criar um ray tracer do zero em C++, com o código-fonte completo de cada etapa.
ssloy/tinyrenderer
Um curso passo a passo sobre renderização 3D, que ensina a criar um renderizador por software em cerca de 500 linhas de C++ puro, sem bibliotecas de terceiros.
- Estrelas
- 24,450
- Forks
- 2,311
- Issues abertas
- 4
- Último commit
- há 3 meses
O que é?
Tinyrenderer é uma série de tutoriais que ensina como APIs de gráficos 3D, como OpenGL, Vulkan, Metal e DirectX, funcionam internamente. Em vez de chamar uma API de GPU, o projeto cria do zero um renderizador simplificado por software, abordando desenho de linhas, rasterização de triângulos, coordenadas baricêntricas, z-buffer, configuração de câmera, shading, mapeamento de textura e de normais, shadow mapping e oclusão de ambiente.
O código é propositalmente enxuto: são cerca de 500 linhas de C++, sem dependências externas de gráficos. O único recurso auxiliar é uma classe para ler e gravar arquivos de imagem TGA. O projeto é um material de aprendizado: as notas do curso, que são o conteúdo principal, explicam cada etapa em ordem, e a ideia é estudar o código, não reutilizá-lo como biblioteca.
O programa recebe um modelo 3D triangulado com texturas e gera uma imagem renderizada, sem interface gráfica. A compilação é feita com CMake.
Recursos principais
- 01Cria do zero um renderizador por software em cerca de 500 linhas de C++.
- 02Aborda passo a passo rasterização, z-buffer, configuração de câmera e shading.
- 03Inclui tópicos sobre mapeamento de textura e de normais, shadow mapping e oclusão de ambiente.
- 04Não usa bibliotecas gráficas de terceiros; conta apenas com um leitor e gravador de imagens TGA compacto.
- 05Organizado como uma série numerada de artigos do curso.
Casos de uso
- Aprender como os pipelines de OpenGL ou Vulkan funcionam internamente.
- Ensinar os fundamentos de rasterização em um curso ou workshop de gráficos.
- Entender coordenadas baricêntricas, z-buffers e mapeamento de normais antes de usar APIs de GPU.
Início rápido
- 1
Clone o repositório
git clone https://github.com/ssloy/tinyrenderer.git - 2
Acesse o diretório do projeto
cd tinyrenderer - 3
Configure e compile com CMake
cmake -Bbuild && cmake --build build -j - 4
Execute o renderizador nos modelos de exemplo; a saída será salva em framebuffer.tga
build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
Antes de usar
- O código é um exercício didático e o README diz para não usá-lo diretamente.
- É um renderizador por software e não ensina a criar aplicações para GPU.
- A licença não está claramente especificada (NOASSERTION).
Tópicos
Perguntas frequentes
- O que é tinyrenderer?
- Um curso passo a passo sobre renderização 3D, que ensina a criar um renderizador por software em cerca de 500 linhas de C++ puro, sem bibliotecas de terceiros. Tinyrenderer é uma série de tutoriais que ensina como APIs de gráficos 3D, como OpenGL, Vulkan, Metal e DirectX, funcionam internamente. Em vez de chamar uma API de GPU, o projeto cria do zero um renderizador simplificado por software, abordando desenho de linhas, rasterização de triângulos, coordenadas baricêntricas, z-buffer, configuração de câmera, shading, mapeamento de textura e de normais, shadow mapping e oclusão de ambiente.
- tinyrenderer é gratuito? Qual é a licença?
- tinyrenderer é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- tinyrenderer ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de tinyrenderer foi em 29 de jul. de 2026.
- Para que posso usar tinyrenderer?
- Aprender como os pipelines de OpenGL ou Vulkan funcionam internamente. Ensinar os fundamentos de rasterização em um curso ou workshop de gráficos. Entender coordenadas baricêntricas, z-buffers e mapeamento de normais antes de usar APIs de GPU.
- Como instalar tinyrenderer?
- Clone o repositório: git clone https://github.com/ssloy/tinyrenderer.git Acesse o diretório do projeto: cd tinyrenderer Configure e compile com CMake: cmake -Bbuild && cmake --build build -j Execute o renderizador nos modelos de exemplo; a saída será salva em framebuffer.tga: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
- Onde consigo tinyrenderer?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ssloy/tinyrenderer
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Blender é uma suíte gratuita e de código aberto para criação 3D, com ferramentas de modelagem, rigging, animação, simulação, renderização, composição, rastreamento de movimento e edição de vídeo.
Engine de renderização em tempo real com base física para Android, iOS, Linux, macOS, Windows e WebGL2, projetada para ser pequena e eficiente no Android.
Livro e site gratuitos e de código aberto que apresentam recursos do C++11 ao C++26, organizados por tópico.
Reconstrói um objeto a partir de uma imagem de referência em código procedural TypeScript para Three.js, pronto para animação, e não em um arquivo de malha.
Base de conhecimento em chinês para desenvolvedores de jogos e líderes técnicos, com conteúdo sobre fundamentos, engenharia de jogos, pipelines de produção, gestão de equipes e operações live.