Mini3d
O tutorial de renderização de software 3D não possui otimização de desempenho e explica principalmente às pessoas como escrever um renderizador de software de pipeline fixo. Embora o código principal seja de apenas 700 linhas, o pardal é pequeno e possui todos os órgãos internos.
【Leia em inglês】
característica
- Arquivo único: o código -fonte tem apenas um mini3d.c, e um único arquivo implementa tudo e é fácil de ler.
- Compilação independente: nenhuma dependência da biblioteca de terceiros, sem diretórios de engenharia complexos.
- Modelo Padrão: Modelo de Coordenada D3D padrão, sistema canhoto Plus World / View / Projeção Três Matriz
- Implementando Cropping: Cropping simples de CVV
- Suporte de textura: suporte máximo para 1024 x 1024 texturas
- Cache de profundidade: use o cache de profundidade para determinar a imagem antes e depois
- Mapa de perspectiva: mapeamento de textura em perspectiva e preenchimento de cores em perspectiva
- Computação de borda: cálculo preciso da cobertura da borda de polígono
- Implementação simplificada: o mecanismo de renderização possui apenas 700 linhas, os módulos são claros e a espinha dorsal é proeminente.
- Comentários detalhados: comentários detalhados sobre o código principal
Compilação
- Mingw: gcc -o3 mini3d.c -o mini3d.exe -lgdi32
- MSVC: Cl -O2 -nologo mini3d.c
- Versão compilada: https://github.com/skywind3000/mini3d/releases
Demonstração
Preenchimento de textura: render_state_texture
Preenchimento de cores: render_state_color
Desenho de Wireframe: render_state_wireframe
Aumentar a iluminação e a interpolação linear quadrática (captura de tela do efeito de iluminação adicionado por um amigo ao mini3D)
Lição de casa básica
- Adicione a remoção de volta
- Adicione luz simples
- Forneça mais modos de renderização
- Implementar a leitura de textura da diferença linear quadrática
Lição de casa avançada
- Deduzir e provar todo o conhecimento geométrico usado no programa
- Otimize o desempenho da computação de vértice
- Otimize Draw_Scanline Desempenho
- Carregando textura do arquivo BMP/TGA
- Carregue o cenário BSP e implemente o roaming
Explicação de princípios
- Wei Yixiao: Como o OpenGL e o DirectX obtêm locais de pixel quando apenas os vértices são conhecidos?
- Wei Yixiao: Como o computador acessa a placa gráfica?
Projetos relacionados
- Renderhelp: Outra implementação simplificada do renderizador suave que suporta pipelines de renderização programável, consulte a introdução para obter detalhes.
Doações são bem -vindas
Sua doação é a maior afirmação deste tutorial. A doação será usada para melhorar a documentação e o legendas do tutorial, além de me ajudar a escrever tutoriais mais interessantes.
Bem -vindo a seguir
Blog: https://skywind.me/blog
Zhihu: https://www.zhihu.com/people/skywind3000