Ponto V!

Home OpenGL Cores
Vinícius Godoy de Mendonça
CoresImprimir
Escrito por Vinícius Godoy de Mendonça

Em vários artigos anteriores, falamos de maneira simples sobre cores, sempre com a promessa de que o assunto seria visto em mais detalhes no futuro. Bem, chegou o momento de cumprirmos essa promessa e utilizaremos mais de um artigo para isso! Manipular corretamente as cores, permite-nos criar efeitos de iluminação e adicionar realismo em nossa cena.

Neste primeiro artigo, vamos entender o que são cores, como nós a percebemos e como o hardware de vídeo chegou até a qualidade de hoje.

A cor como uma onda


Antes de iniciarmos o estudo das cores na OpenGL, vamos relembrar um pouco nossas aulas de ciências, e entender como o olho humano as enxerga. Assim, ficará mais fácil de entender a abstração desses conceitos criada pelos projetistas da OpenGL e será mais fácil programar cores em nossos jogos.

A cor é simplesmente um comprimento de onda de luz que é visível ao olho humano. Em física, aprendemos que a luz é formada não só por uma onda, mas também por uma partícula, chamada fóton. A luz que você enxerga vinda de qualquer origem é, na verdade, formada pela combinações de vários tipos diferentes de cores.

A distância de duas cristas da onda é chamada comprimento de onda. Os comprimentos de onda da luz visível variam de 390 nanômetros (um bilionésimo de metro) com coloração violeta até 720 nanômetros para a luz vermelha. Esse é o chamado espectro visível da luz. Luzes além desse espectro, chamadas ultra-violeta e o infra-vermelho, não são mais visíveis ao olho humano.

Onda

Quando a luz do sol bate em gotículas de água, vemos as cores desse espectro divididas no céu e em forma de um arco, que chamamos de arco-íris. Nós só conseguimos enxergar objetos coloridos porque a luz é formada de diversas cores, mas apenas algumas delas são refletidas pelo objeto.

A cor como uma partícula

Certo… mas e de onde vem o preto?!? E o branco?!? Afinal essas cores definitivamente não estão no arco-íris. Em primeiro lugar, precisamos entender que o preto não é uma cor… e nem o branco. Na verdade, o preto é a ausência total da luz, e o branco, a presença de todas as cores misturadas. Assim, objetos pretos absorvem toda a cor da luz imposta a eles, enquanto os objetos brancos a refletem totalmente.

Mas… e o marrom?!? Bom, o marrom é mesmo uma cor. Mas não uma cor simples, e sim, uma cor composta. Ele é criado pela combinação de várias cores puras do espectro. Para entender como esse conceito funciona, pense na luz como uma série de partículas. Qualquer objeto atingido pela luz é bombardeado por bilhões de fótons. O objeto, por sua vez, é formado de átomos. A reflexão dos fótons depende do tipo de átomos do objeto, sua ordenação no espaço (e de seus elétrons) e do tipo de átomos se combinando. Muitos arranjos absorvem alguns fótons, geralmente transformando-os em calor (é por isso que carros e roupas pretas esquentam tanto), enquanto outros são refletidos, nem sempre no exato sentido em que chegaram.

Reflexão dos Fótons

O olho – Um detector de fótons

Toda luz refletida que chega ao seu olho é interpretada como cor. Os bilhões de fótons que entram no olho são focados na sua retina, que age como uma espécie de filme fotográfico. Na retina, milhares de células em formato de cone são excitadas quando atingidas pelos fótons, e isso faz com que uma rede de neurônios dispare energia para o seu cérebro, que interpreta a informação como cor e luz. Quanto mais fótons atingem as os cones, mais excitadas ficam as células, e mais brilhante a luz parecerá.

Existem três tipos de células cone no olho. Todas elas respondem a presença de fótons, mas cada uma reage melhor a um determinado tipo de comprimento de onda. Um tipo dessas células as torna mais excitadas por fótons de cor avermelhada, outro por fótons de cor esverdeada e outros de cor azulada. Uma combinação de comprimentos de ondas diferentes, ao mesmo tempo, excitará grupos diferentes de células, criando misturas de cor. Quanto todas as células são excitadas juntas, percebemos a cor branca e, se nenhuma célula é excitada, veremos a cor preta.

É por isso que o padrão de cores usado no computador é chamado RGB, que significa Vermelho, Verde e Azul (Red, Green, Blue). Por exemplo, uma possível combinação de marrom poderia ser formada uma combinação de fótons 10% azul, 30% verdes e 60% vermelhos, como demonstrado abaixo:

A cor marrom

Como no final das contas quem interpreta as cores é o cérebro, a cor que vemos é também sujeita a falhas de interpretação. Isso porque nosso cérebro é capaz de fazer correções, de acordo com o contexto, para nos garantir um entendimento correto da imagem. Assim, estamos sujeitos também as famosas ilusões de ótica, como na figura abaixo, onde os quadrados A e B são exatamente da mesma cor! Se ainda duvida, cole essa imagem no seu paint, recorte um pedaço de um dos quadrados, arraste até o outro e confirme!

Ilusão de ótica - As casas A e B são do mesmo tom de cinza!

A ilusão desse tabuleiro é criada porque seu cérebro, por conhecer a imagem que está tentando enxergar entende o cinza debaixo como um “branco na sombra”, enquanto o de cima é uma casa “preta na luz”. O contraste das casas pretas na sombra e na luz, além do escurecimento gradual das casas adjacentes também ressalta esse conceito.

O computador como um gerador de fótons

Agora que você já é capaz de compreender como seu olho trabalha, faz sentido imaginar que para especificar as cores num computador, você usa intensidades separadas de vermelho, verde e azul. Por anos, os monitores de tubos de raios catódicos (CRTs) dominaram a indústria. Na parte de trás desses monitores existe um canhão de elétrons, que atingem um pequeno ponto com três cores de fósforos (adivinhem quais?), e cada cor brilha de acordo com a intensidade do raio que a atingiu. A tela é formada por milhares desses pequenos pontos.

Tubo de raios catódicos

Como visto o canhão é capaz de atingir apenas um único pixel por tiro. Mas ele faz isso rapidamente, sendo capaz de percorrer a tela inteira dezenas de vezes em apenas um único segundo. A velocidade com a qual o canhão faz esse percurso é chamada de refresh rate (taxa de atualização) e é medida em hertz. Quanto mais rápida for essa taxa, menos “piscante” será a imagem apresentada e mais confortável será a visualização da tela.

Hoje existem também muitos amantes da tecnologia de display de cristal liquido (LCD). As maiores razões disso são as dimensões dos equipamentos e uma taxa de atualização de tela mais rápida. O princípio da geração das cores no LCD não muda. Ele também combina as cores verde, vermelha e azul. Porém, nesse tipo de monitor, existe uma lâmpada branca continuamente acesa e na tela e milhares de polarizadores de cristal liquido, que são capazes de filtrar rapidamente essa luz, deixando passar só a cor desejada.

O hardware de PC

Em 1981, surgiu no mercado a placa de vídeo conhecida como Color Graphics Adapter (CGA), sendo a primeira a suportar resoluções de 320×200 pixels e colocar 4 de 16 cores disponíveis ao mesmo tempo numa tela. Também era possível atingir uma resolução mais alta (640×200) usando apenas 2 cores, mas não era nem efetivo e nem tinha um preço tão bom quanto as placas Hércules (pretas e brancas). A placa CGA é deplorável, se comparada as placas de hoje, e era vencida até mesmo pelo Comodore 64 e pelo Atari da época. A placa foi usada principalmente para jogos simples de PC (como Castle Master e Alley Cat, mostrados na figura abaixo) e para aplicações comerciais que se utilizassem das cores. Na verdade, como não era possível exibir um modelo que servisse para alguma coisa, era muito difícil justificar comercialmente o seu custo, mesmo numa grande empresa.

Castle Master e Alley Cat

A próxima grande evolução dos hardwares de PC veio em 1984, quando a IBM introduziu uma placa conhecida como Enhanced Graphics Adapter, ou simplesmente, EGA. No modo de texto, ela podia exibir até 25 linhas coloridas e no modo gráfico tinha uma resolução máxima de 640×350 em até 16 cores simultâneas! Algumas melhorias técnicas eliminaram problemas de flickering das placas anteriores e forneceram uma animação mais suave. Agora, jogos arcade, gráficos comerciais reais e até modelos 3D simples não só eram possíveis, como passaram a efetivamente ser desenvolvidos pela indústria. Esse avanço estava muito a frente do CGA, mas ainda representa a infância das placas gráficas.

Ski or die

A linha seguinte foi a da placa Video Graphics Array (VGA), introduzida em 1987, também pela IBM, e que era muito mais rápida do que a EGA , suportando 16 cores em alta resolução (640×480) e 256 cores em baixa resolução (320×200). Essas 256 eram selecionadas de uma paleta com mais de 16 milhões de cores possíveis. Foi aí que abriu-se as porteiras para os gráficos de PC. Gráficos praticamente foto realísticos se tornaram possíveis, software de edição de fotos e jogos 3D tornaram-se populares no mercado.

Em 1987 a IBM também lançou uma placa de vídeo “topo de linha”, com capacidade de 1024×768 em 256 cores e equipada com a impressionante quantia de 1 MB de memória! Ela pensou que a placa poderia ser usada apenas para CAD e aplicações científicas! Mas os consumidores estavam satisfeitos e queriam mais. Foi essa visão curta que retirou a IBM como principal produtora de placas de vídeo, quando outros fornecedores começaram a anunciar placas conhecidas como Super VGA, com resoluções cada vez maiores, inicialmente com 256 cores, então com 32.000, 65.000. Hoje, mesmo as placas de vídeo onboard podem mostrar 16 milhões de cores simultâneas com resoluções superiores a 1024×768, em praticamente qualquer computador caseiro.

As placas também evoluíram de simples exibidoras de mapas de bit para processadoras de gráficos vetoriais. O hardware foi otimizado para fazer desenho de polígonos inteiros, o que permitiu a geração de imagens em tempo real. Hoje, a tecnologia de shaders foi ainda um passo adiante, retirando o pipeline programável e introduzindo o conceito de hardware programável.

Modos de display

Os modos de display definem a qualidade máxima da imagem vista por seu usuário. Os limites máximos são dados tanto pela placa de vídeo, quanto pelo monitor. Os modos de display são formados por 3 elementos: resolução da tela, profundidade de cores e taxa de atualização.

  • Resolução da tela: A resolução da tela hoje pode variar de 640×480 pixels até muito mais do que 1024×768. Você sempre deve levar em consideração a resolução da tela e as configurações do seu viewport. Ao fazer a escala do tamanho do desenho para o tamanho da tela, você pode cobrir facilmente todas as combinações de resolução e tamanho da tela possíveis. Aplicações gráficas bem escritas vão exibir imagens de tamanho aproximado sempre, não interessando o hardware de quem as vê.
  • Profundidade de cores: Indica quantos bits serão gastos para representar um único pixel da imagem. Imagens com profundidade de cor de 8 bits (256 cores) são muito menos realísticas do que imagens de 32 bits, mas ocupam muito menos espaço na memória.
  • Taxa de atualização: Define o quão rápido o monitor atualiza a tela. Geralmente, quanto maior, melhor. Utilizando a sincronização de display, essa taxa também interfere na velocidade do jogo. A taxa máxima de FPS é dada por ela (se você obter maior, seu monitor simplesmente não irá desenhar e passará a ignorar quadros).

Em resumo

  • Você viu que as cores são combinações de diferentes fótons, em diferentes comprimentos de luz;
  • Que branco é a mistura de todas as cores, e preto é a ausência de cor;
  • Que seus olhos tem células especiais, chamadas de cones, capazes de perceber as cores verde, vermelha e azul;
  • Acompanhou a história das placas de vídeo;
  • E entendeu que os modos de display é que definem a qualidade final da imagem vista pelo usuário.

Comentários (7)
  • Adriano
    avatar

    :0 A e B realmente tem a mesma cor. Cacildes!

  • Vinícius Godoy de Mendonça  - Mágica? Não, pura ciência!
    avatar

    Confesso que eu também demorei a acreditar...

  • Neto  - Maluco....
    avatar

    Realmente esse lance de A e B foi %$$#! Tive que editar no GIMP pra acreditar e ainda sim fiquei imaginando que a coloração era mudada em Runtime.....kkkkkk.

  • Anônimo
    avatar

    :( :( :( TENHO UM PROJETO PARA APRESENTAR AGORA NA SEGUNDA DIA 29/11, E NÃO CONSIGO CRIAR NADA.É SÓ UM SENÁRIO SOBRE AS OLIMPÍADAS OU A COPA DE 2014...
    PELO O AMOR DE DEUS ALGÉM PODE ME AJUDAR???

  • Bruno Crivelari Sanches
    avatar

    Se seu projeto for mesmo algo relacionado a jogos, sugiro procurar um forum de desenvolvedores, lá você deve conseguir uma ajuda mais especializada, alguns bons fóruns são:
    http://www.unidev.com.br
    http://www.pdj.com.br

    T+

  • Anônimo
    avatar

    :( Nossa estou perplexo com esse A e B ... E muito assustado... :woohoo: ta e quando vamos aprender sobre a criação de particulas e efeitos especiais kkkkk.

    Adorei o artigo =) parabéns

  • Vinícius Godoy de Mendonça
    avatar

    Estou pensando em fazer um artigo de partículas há algum tempo. Também quero iniciar uma série sobre shaders.

    O demo de partículas eu até já fiz, está aqui mesmo, no site:
    http://www.pontov.com.br/files/outros/vinigodoy/particles/particles.ht ml

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter