Repolode
ssloy

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. 1

    Clone o repositório

    git clone https://github.com/ssloy/tinyrenderer.git
  2. 2

    Acesse o diretório do projeto

    cd tinyrenderer
  3. 3

    Configure e compile com CMake

    cmake -Bbuild && cmake --build build -j
  4. 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