3D por software: transforms, rasterização e depth¶
Pipeline geométrica¶
Coordenadas homogêneas permitem representar translation e perspective com matrizes. Clipping precisa acontecer no espaço correto antes de divisões problemáticas.
Triângulos¶
Barycentric coordinates determinam cobertura e interpolação:
Depth, cor e varyings podem ser interpolados. Texturas sob perspectiva exigem interpolação perspective-correct.
Z-buffer¶
Cada pixel guarda depth mais próximo. Fragmento novo compara e atualiza conforme depth function. Paralelização precisa impedir races de color/depth no mesmo tile.
Renderer do ChrisOS¶
Software 3D continua como referência/fallback. math3d.c implementa matrizes; tri.c e unidades relacionadas rasterizam; scene.c organiza cenas. Mine Chris ainda utiliza esse caminho na revisão documentada.
Convenção de matrizes¶
Mat4f usa armazenamento row-major e vetores coluna. GLSL/CSIR usam layout column-major para uniforms, então mat4f_to_glsl converte antes do upload.
Erros de convenção podem produzir transformações plausíveis porém erradas; por isso testes de ABI comparam CPU e shader.
Software como oracle¶
Renderer por CPU fornece referência independente de GPU, testes determinísticos e fallback. Desempenho máximo e função de oracle são objetivos diferentes.