Considerando todo o trabalho feito pelo Emotion Engine, falta alguma coisa? Na verdade, o último passo: a visualização dos gráficos!
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).

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
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
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:
- RGBA: correspondente ao gradiente de vermelho (Red), verde (Green), azul (Blue) e Alfa (transparência).
- Z-value: usado para testes de profundidade em estágios seguintes.
- Fog: opcional, usado para simular névoa no ambiente.
- Propriedade de texturas: contém o endereço de DRAM da textura dentre outras propriedades (coordenadas, nível de detalhe, filtro, etc.) que serão usadas no estágio seguinte.
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

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
Aqui certos pixels serão descartados se eles não atenderem a vários requisitos. Dito isso, os seguintes testes são realizados:
- Teste de Alfa: compara o valor de alfa (transparência) de um pixel com o valor 'padrão'. O motivo disso é que em alguns casos o valor de alfa precisa estar dentro de um determinado intervalo ou maior/menor que um valor arbitrário.
- Teste de Alfa do destino: verifica o valor de alfa do pixel novamente antes de desenhá-lo no frame buffer.
- Teste de Profundidade: compara o valor de Z do pixel com o valor de Z correspondente ao Z-buffer. Isso evita o processamento de pixels que ficariam ocultados atrás de outros pixels.
Pós-Processamento
O último estágio pode aplicar alguns efeitos sobre nossos novos pixels usando o frame buffer anterior localizado na DRAM local:
- Alpha Blending: Mescla cores do buffer atual com o anterior na memória.
- Dithering: Altos valores RGBA precisam ser cortados, então o dithering pode ser aplicado para suavizar a perda de precisão.
- Colour Clamping: Após aplicar operações como o Alpha Blending, o novo valor RGB pode exceder o intervalo válido (0-255), então o clamping determina um valor dentro do intervalo.
- Formatação: Converte o frame buffer final gerado no pipeline em um formato que pode ser guardado em memória.
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':

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

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:

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

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) :
- PAL: envia até 640x512 pixels a 50 Hz, tanto em modo progressivo (576p) quanto em entrelaçado (576i).
- Nenhum jogo encontrado no mercado usa 576p. Embora alguns suportam modo progressivo, eles o fazem em modo 480p.
- NTSC: até 640x448 pixels a 60 Hz, tanto em modo progressivo (480p) quanto em entrelaçado (480i).
- VESA: Até 1280x1024 pixels.
- DTV: até a enorme quantidade de 720x480 pixels em modo progressivo ou 1920x1080 em modo entrelaçado.
- Ajustando as configurações do PCRTC, um jogo também pode forçar a saída de vídeo em 1080p. Porém, este modo não está documentado e, portanto, está sujeito a comportamentos imprevisíveis.
- Isso significa que o PS2 consegue fornecer uma 'imagem HD'? Tecnicamente... sim, mas não acredito que a maior parte dos estúdios de jogos arriscaram a perda de desempenho por um formato que ainda não era popular.

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.




