[Artigo traduzido] EDGE: A brief History of 3D – Parte 4

Saudações aos manos e minas.

Mais uma parte do artigo da EGDE. Sem mais delongas, texto na continuação do link.

Ambient occlusion

Sombreamento e iluminação realistas são um grande desafio para os gráficos 3D. Considere um punho meio fechado. Se renderizado com luz direta, a palma seria clareada com tanta luz quanto a parte de trás da mão, se sombreada, a palma da mão estaria totalmente escura. Isso não acontece na vida real, porque a luz rebate em volta, iluminando indiretamente as superfícies (veja iluminação global) e objetos, lançando sombras sobre eles mesmos. Ambient occlusion é um método cru mas efetivo de simular a forma como a luz bate em volta de um objeto. Embora seja computacionalmente exigente, é raramente calculado em tempo real – ao invés, o desenvolvedor a calcula para cada personagem, cenário e objeto enquanto eles são criados, para ser combinados com a iluminação em tempo real quando renderizada. O processo lança um spray de raios a partir de cada polígono no hemisfério alinhado a superfície “normal”. Se o raio não cruza com outro polígono na malha, a superfície é feita mais clara, e então, em efeito, os polígonos cercados por muitos outros polígonos, receberão menos luz ambiente. Isso melhorou bastante os modelos de Half Life 2, de 2004, tornando-os visualmente críveis e naturais, para corresponder aos scripts em que eles atuavam.

Voxel Rendering

Sistemas voxel (ou pixel volumétrico), reproduzem cenas usando uma série de cubos. Enquanto uma imagem 2D é análoga a séries de pontos coloridos em uma folha de papel virtual, a imagem em 3D voxel é a mesma coisa extendida para a terceira dimensão, então seu espaço é representado em uma grade de pequenos cubos, que podem ser transparentes (ar) ou opacamente coloridos (matéria). Sistemas com volumes totalmente preenchidos são computacionalmente muito caros e atualmente reservados a geração de imagens médicas e científicas, mas uma simplificação dessa tecnologia obteve uma breve popularidade nos anos noventa com Comanche Maximum Overkill, simulador de helicóptero para PCs. Para reduzir o tempo de carregamento, Comanche usava imagem com altura de campo 2D, para representar o terreno. Em um sistema similar ao Ray Tracing de Doom, Comanche traçava raios para cada coluna de pontos de tela, então calculava quando os raios cruzavam com a altura de campo para renderizar uma linha vertical de voxels.

Anti-Aliasing

Enquanto o complex filtering pode ser considerado o “anti-alias” das texturas, uma técnica diferente é usada para remover as irregularidades das pontas dos polígonos. A forma mais comum é o anti-aliasing por amostragem múltipla (multi-sample anti-aliasing ou MSAA), que está disponível nas placas de vídeo mais modernas, é feita pegando os amostras em posições levemente diferentes dentro de cada ponto na tela (normalmente entre duas e trinta e duas vezes) calculando a média delas até chegar à cor final dos pontos. Quanto mais amostras são computadas, mais a fidelidade aumenta, assim como aumenta o custo de processamento. Um “anti-aliasing adaptável” é uma técnica que pode minimizar a amostragem ainda que mantendo a qualidade comparando as amostras enquanto as faz – se elas se diferem muito, a amostragem continua até o resultado se tornar estável ou o número máximo de amostras ser alcançado. Atualmente é um componente padrão de qualquer game 3D para PC, mas a primeira experiência dos jogadores dessa plataforma com o anti-aliasing se deu quando jogaram Tomb Rider com uma placa de video.

Normal Mapping

Enquanto o mapeamento de textura pode adicionar detalhe à superfície, não pode fazer tudo para dar um senso de materialidade, como as variações sutis de iluminação formadas por irregularidades e ranhuras. O Normal Map dedica-se a isso enquanto evita a necessidade de dar aos objetos maior contagem poligonal adicionando textura à superfície, que carrega a imagem “bump”. Um canal de cor na textura indica a irregularidade da superfície normal (sua variação a partir do normal) e outro canal armazena a irregularidade vertical. Essa textura é então mapeada sobre a superfície, mas os dois canais com as irregularidades são usados para ajustar a superfície normal ao cálculo de iluminação tipo Phong, ou de outro tipo. Em efeito, simula a iluminação nas ranhuras da superfície. O Normal Map é uma extensão da técnica mais antiga e simples do Bump Map, que também foi bastante usada nos jogos. Foi usada pela primeira vez, com efeito, (embora alguns digam que foi com exagero) significativo em Doom 3, que turbinou o alto detalhamento, apesar da geometria relativamente simples.

Parallax Mapping

O desenvolvimento das técnicas de renderização de superfície aconteceu em conjunto com o aumento constante do poder das GPUs. Parallax Mapping é uma dessas técnicas, uma extensão do Normal Mapping que dá uma ilusão adicional de profundidade à superfície. Usando um canal de cor sobressalente no normal map para armazenar a altura das ranhuras sobre a superfície, o jogo cria um efeito de parallax no interior da superfície, que é calculado deslocando as coordenadas em que a superfície é lida enquanto cada ponto é renderizado de acordo com o ângulo de visão e a altura do mapa. Então, enquanto o ângulo entre o polígono e a vista aumenta, o deslocamento do parallax também aumenta. Esses são os problemas dessa abordagem: notavelmente o efeito falha em ângulos muito oblíquos. Existem soluções para isso, mas elas exigem muito processamento. Alguns dos melhores exemplos de Parallax Mapping para se notar, são as paredes de pedra brilhantemente volumosas encontradas nas cidades de Oblivion.

Efeito parallax: efeito visual em que objetos próximos parecem se mover mais rápido do que os mais distantes de um observador. Em jogos 2D é geralmente simulado rolando as camadas dos cenários em diferentes velocidades.

Global Illuminations

A maioria das iluminações usadas em jogos de computador são criadas usando um modelo de iluminação direta, em que as superfícies são irradiadas por fontes diretas com um pré-ajuste de luz “ambiente”. Entretanto, luz ambiente não existe no mundo real. Ao invés disso, superfícies são iluminadas indiretamente pela luz refletida de outras superfícies, afetando-as tanto na intensamente quanto na tonalidade da luz. Nos gráficos 3D, a luz refletindo de superfície para superfície é muitas vezes impossível de ser processada em tempo real atualmente, e não será possível ainda por um bom tempo. Então, a idéia de “iluminação global” agora é calcular os valores das variações de luz e armazená-las em texturas que são levadas em consideração nos valores finais das cores quando a cena é renderizada em tempo real. Existem outras técnicas, mas em efeito, os resultados são geralmente muito similares – iluminação estática, ainda que realista com algumas influências limitadas da iluminação em tempo real. Mesmo assim, pode criar alguns resultados espetaculares – vista a evidente sutileza da iluminação de Halo 3.

Ufa! Agora só falta mais uma parte, que publicarei assim que possível. Até mais ver amiguinhos!

André V.C Franco/AvcF – Loading Time

Deixe um comentário

O seu endereço de e-mail não será publicado.