« Arquitetura do PlayStation 2 (index)

Arquitetura do PlayStation 2

Chapter 5: Gráficos


Índice

  1. Arquitetura e design
    1. Pré-processamento
    2. Rasterização
    3. Texturização
    4. Testes
    5. Pós-Processamento
  2. Ainda mais pós-processamento
  3. Modelos melhores
  4. Saída de Vídeo

Considerando todo o trabalho feito pelo Emotion Engine, falta alguma coisa? Na verdade, o último passo: a visualização dos gráficos!

Image
Final Fantasy X (2001).

Existe um simples porém rápido chip especializado nisso: O Sintetizador Gráfico ou 'GS' (Graphics Synthesizer) rodando a ~147,46 MHz. Ele contém 4 MB de DDRAM embutido para realizar todo o processamento internamente. Assim, eliminando a necessidade de acesso à memória principal. A RAM embutida é conectada utilizando diferentes barramentos dependendo do tipo de dado exigido.

O GS possui menos recursos que outros sistemas gráficos analisados anteriormente neste site. No entanto, é muito rápido no que se propõe a fazer.

Arquitetura e design

Essa GPU só faz rasterização e isso inclui... Gerar pixels, mapear texturas, aplicar iluminação e alguns outros efeitos. Isso significa que não há transformações de vértices (estas são feitas pelas VPUs). Além disso, trata-se de um pipeline de função fixa, então não há modificações sofisticadas nem shaders, estamos restritos a um modelo de sombreamento fixo (ex: Gouraud).

Image
Design do pipeline do Graphics Synthesizer

Parece bem simples né? Bem, vamos nos aprofundar mais e ver o que acontece em cada estágio.

Pré-processamento

Image
Estágio pré-processamento.

O Emotion Engine inicia o Sintetizador Gráfico preenchendo sua DRAM com os materiais exigidos (Bitmaps de texturas e Lookup tables de cores, sendo o último também chamado 'CLUT'), atribuindo valores nos registradores do 'GS' para configurá-lo e, finalmente, emitindo os comandos de desenho (Display Lists) que vão instruir o GS a desenhar primitivas (pontos, linhas, triângulos, sprites, etc.) em lugares específicos da tela.

Adicionalmente, o GS irá pré-processar alguns valores que serão necessários para cálculos futuros. Um desses números em especial é o valor do Algoritmo Diferencial Digital, que será usado para interpolações durante o processo de desenho.

Rasterização

Image
Estágio de rasterização.

Usando os valores calculados anteriormente, o renderizador gera pixels a partir das primitivas. Essa unidade pode gerar 8 pixels (com texturas) ou 16 pixels (sem texturas) simultaneamente, e para cada pixel as seguintes propriedades são calculadas:

Também são feitos testes de corte (Scissoring Tests) que descartam polígonos fora do quadro (baseado nos seus valores X/Y), e algumas propriedades de pixel são encaminhadas a um estágio de 'teste de pixel' para verificações adicionais. A Iluminação é também fornecida ao selecionar uma das duas opções disponíveis, Gouraud e Flat.

O pacote é então entregue ao motor de 'mapeamento de texturas', mas cada propriedade é operada por um 'submotor' especializado, o que permite o processamento de diferentes propriedades em paralelo.

Texturização

Image
Estágio de mapeamento de texturas

Esse estágio é movido por uma grande Unidade de Pixel que pode computar até 16 pixels de uma vez, e é aqui que as texturas serão mapeadas nos polígonos (que agora são pixels). Ademais, os efeitos de névoa e anti-aliasing são aplicados aqui.

Mapeamentos de textura são obtidos da DRAM em uma área definida como buffer de textura, embora isso seja interligada com uma área separada chamada buffer de paginação de texturas, que parece servir como um mecanismo de cache de texturas. CLUTs também são mapeados utilizando este sistema de paginação. Ambos os elementos são retirados com o uso de um barramento de 512 bits.

A unidade de pixel executa uma correção de perspectiva para mapear texturas nas primitivas (uma grande melhoria considerando a abordagem anterior de mapeamento afim). Adicionalmente, ela também fornece filtragem bilinear e trilinear, o último sendo usado junto com texturas MIP mapeadas.

Testes

Image
Estágio de teste de pixels

Aqui certos pixels serão descartados se eles não atenderem a vários requisitos. Dito isso, os seguintes testes são realizados:

Pós-Processamento

Image
Estágio pós-processamento

O último estágio pode aplicar alguns efeitos sobre nossos novos pixels usando o frame buffer anterior localizado na DRAM local:

Finalmente, o novo frame buffer, junto com o Z-buffer atualizado, são escritos na memória usando um barramento de 1024 bits.

Ainda mais pós-processamento

Existe um componente dedicado dentro do GS chamado Controlador CRT Programável ou 'PCRTC' (Programmable CRT Controller) que envia o frame buffer na memória para a saída de vídeo, para você poder ver o frame na TV. Mas isso não é tudo: ele também contém um bloco especial chamado Merge Circuit que permite o Alpha Blend de dois frame buffers separados (útil se os jogos querem reusar o frame anterior para formar o novo). O frame resultante pode ser enviado pelo sinal de vídeo e/ou escrito de volta à memória.

Modelos melhores

Com tudo o que foi dito, isso certamente trouxe designs melhores para atualizar personagens já famosos. Dê uma olhada neste 'Antes & Depois':

3D model 3D model 3D model
Modelo interativo disponível na edição moderna
Crash Bandicoot (1996) para o PS1.
732 triângulos.

3D model 3D model 3D model
Modelo interativo disponível na edição moderna
Crash Bandicoot: The Wrath of Cortex (2001).
2226 triângulos.

Aqui estão personagens de novas séries de jogos. Estes foram modelados com altos níveis de detalhe desde o início:

3D model 3D model 3D model
Modelo interativo disponível na edição moderna
Kingdom Hearts (2002).
2744 triângulos.

3D model 3D model 3D model
Modelo interativo disponível na edição moderna
Dragon Quest VIII (2004).
2700 triângulos.

Vale a pena mencionar que jogos como Dragon Quest implementaram um modelo de iluminação personalizado chamado Cel Shading (um termo que eu já mencionei antes), porém, nos meus artigos anteriores eu expliquei que a GPU era a principal responsável por isso. No caso do PS2, os cálculos de cores exigidos são presumivelmente feitos pelo Emotion Engine, dado que o GS não é tão flexível quanto outras GPUs.

Saída de Vídeo

Como dito anteriormente, o PCRTC envia o frame buffer pelo sinal de vídeo. A interface pode transmitir vídeo utilizando uma ampla gama de formatos (para funcionar com TVs de qualquer região geográfica) :

Image
Lado direito do console , visto de trás. Exibindo a porta A/C, porta de áudio digital e saída Multi AV.

Há muitos modos para escolher, porém, tudo se resume ao formato adotado durante o início dos anos 2000, o que diminui as opções para PAL e NTSC. Além disso, embora o padrão PAL tenha fornecido uma resolução maior que o NTSC, algumas versões europeias de jogos NTSC recorreram ao letterboxing para mascarar as linhas horizontais não utilizadas e diminuíram a taxa de atualização da imagem do jogo para encaixar no limite de 50 Hz (Eu os chamo de 'más adaptações'!).

A porta da saída de vídeo (Multi A/V) é muito conveniente. Ela carrega os sinais RGB, Componente, S-Video e Composto. Logo, todos os sinais importantes estão disponíveis sem a necessidade de adaptadores proprietários ou modificações internas.


Previous: 4. Co-CPUs

Next: 6. Áudio


Rodrigo Copetti © 2026 RSS Feed

Mudar para a edição moderna

Início · Artigos · Suporte · Sobre o autor · Sobre o site