Sobre o projeto
Graphics Foundations é um recurso de aprendizado autossuficiente, tópico por tópico, para os fundamentos da computação gráfica, cobrindo a matemática, o pipeline de renderização e os algoritmos por trás de imagens em tempo real e traçadas por raios. Surgiu de seis trimestres de seções de discussão para o CS 174A da UCLA (Introdução à Computação Gráfica, 2019–2021) e foi reescrito como um recurso independente; o autor afirma que não é material oficial do curso.
Estrutura e conteúdo
O material está organizado como um percurso de aprendizado de 13 capítulos (numerados de 0 a 12), que devem ser lidos em ordem. Cada capítulo declara o que você aprenderá, explica com figuras, fornece links para uma demonstração e termina com perguntas de autocorreção e respostas ocultas.
- Capítulo 0: configuração e JavaScript para gráficos (ferramentas, módulos, classes, closures, arrays tipados, o loop de quadros)
- Capítulo 1: o pipeline de renderização e GLSL (shaders de vértice/fragmento, rasterização, espaço de recorte)
- Capítulo 2: pontos, vetores e sistemas de coordenadas (espaços afins, coordenadas homogêneas e baricêntricas, produto escalar e vetorial)
- Capítulo 3: modelagem de formas com triângulos (discretização, malhas indexadas, tiras, winding, normais planas vs. suaves)
- Capítulo 4: transformações (translação, rotação, escala, cisalhamento, reflexão; ordem; hierarquias; animação)
- Capítulo 5: mudança de base (frames, conversão de coordenadas, a câmera como um frame)
- Capítulo 6: visualização e projeção (look-at, derivações ortográfica e em perspectiva, clipping, z-buffer)
- Capítulo 7: iluminação e sombreamento (Phong e Blinn–Phong, tipos de luz, sombreamento flat/Gouraud/Phong, matriz normal)
- Capítulo 8: mapeamento de texturas (mapeamento uv, filtragem, mipmaps, interpolação com correção de perspectiva, bump/normal/displacement)
- Capítulo 9: detecção de colisão (volumes limitadores, teorema do eixo separador, fase ampla, passo de tempo)
- Capítulo 10: sombras, espelhos e transparência (shadow mapping, espelhos planares, alpha blending, alfa pré-multiplicado)
- Capítulo 11: ray tracing (geração de raios, interseções, raios recursivos, árvores de raios, aceleração)
- Capítulo 12: construindo um projeto gráfico interativo (planejamento, temporização e máquinas de estado, partículas, skyboxes, picking, composição, cor)
Dois conjuntos de exercícios acompanham as notas: Problems I (fundamentos, transformações, visualização) e Problems II (iluminação, texturas, colisões, ray tracing), cada um com soluções completas passo a passo. Os pré-requisitos são programação em qualquer linguagem e álgebra linear no nível de vetores, matrizes, produto escalar e vetorial; o Capítulo 0 cobre o JavaScript necessário.
Demonstrações
Sete demonstrações interativas no navegador acompanham os capítulos, com links a partir de um site GitHub Pages ativo: "hello triangle" (WebGL puro), transformações, câmera e projeção, iluminação e sombreamento, mapeamento de texturas, ray tracing e volumes limitadores. As demonstrações 02–07 são construídas sobre TinyGraphics.js, uma pequena biblioteca de ensino de Garett Ridge, carregada a partir de sua cópia publicada em vez de incluída localmente. As demonstrações são destinadas a um navegador desktop com WebGL 2. Um script de servidor local (node tools/serve.mjs) é fornecido, com uma opção para desenvolver contra um clone local de TinyGraphics.js.
Organização do repositório e verificações de qualidade
O repositório está organizado em notes/, exercises/, figures/ (figuras SVG geradas por tools/figures.py), demos/ (um arquivo HTML por demonstração mais helpers compartilhados) e tools/. Notavelmente, as notas são testadas como código: scripts recalculam cada número trabalhado nas notas e exercícios, verificam links, âncoras, originalidade das figuras e ausência de logística do curso, carregam cada demonstração em Chromium headless pressionando todos os controles e tirando capturas de tela, e auditam como a matemática é renderizada no github.com. Um script fix_math.py reescreve construções LaTeX (como \mathbf, \boxed, \tag, \operatorname) que são renderizadas incorretamente como MathML nativo no GitHub. A verificação das demonstrações requer um Chromium local com WebGL 2 e grava capturas de tela para revisão humana.
Créditos e licenciamento
As notas começaram como material de seção de discussão para o CS 174A da UCLA, apoiando cursos ministrados pelo Prof. Asish Law e pelo Prof. Demetri Terzopoulos; a escolha e a ordem dos tópicos seguem esses cursos. Slides de aula, figuras de livros-texto e tarefas não estão incluídos. Os materiais semanais originais de discussão permanecem disponíveis em uma tag de arquivo e em repositórios por trimestre. As notas, exercícios, figuras e demonstrações são © Yunqi Guo e licenciados sob CC BY-NC-ND 4.0: ler, estudar e compartilhar cópias não modificadas para fins não comerciais com crédito é permitido, enquanto distribuir versões modificadas ou uso comercial não é. TinyGraphics.js é um projeto separado com seus próprios termos.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.