Esta é a codebase do projeto de renderizador softengine (sem acelerador grafico; apenas CPU) do blog http://tomatofractal.io/category/rasterizer.html
Atualmente implementado:
- Biblioteca basica vetores/Matrizes
- Rasterizador de triangulos
- Bresenhan para linhas
- Backface culling
- Matriz de projeção
- Projecao > Viewport > Canvas pipeline
- Flat-shading
- Gourad shading
- Phong shading
- Mapeamento de texturas
- Bilinear filtering
- Mipmapping
- Stencil shadows
O objetivo deste repositorio é com fins didaticos, futuras melhorias vao incluir:
- Melhoramento da biblioteca de Algebra linear (usando closures)
- Adicionar à biblioteca de Algebra Linear Quaternions
- Implementaçao de um rasterizador com WebGL2
- Implementaçao de shadow map
- Algoritmos de flocking apenas para benchmark
- Refatoraçao da codebase com Typescript
- Refatoraçao da codebase para usar melhores padrões de projeto com melhores design patterns
- Parser de arquivos wavefront
.obj
A meta deste blog é a partir dos conceitos basicos de rasterização construir, do zero, um simples motor grafico para jogos 3D para browser. A intenção é ir do 0 à uma ferramenta capaz de criar jogos simples, sem animaçoes de bones.
Apos clonar o projeto, basta rodar:
yarn
para instalar as dependencias
e para rodar:
yarn dev
This is the codebase for the rasterizer being developed at tomatofractal.io