Pontifícia Universidade Católica do Rio de Janeiro PUC-RJ Fundamentos da Computação Gráfica Prof. Marcelo Gattass Aluno: Bruno Rodrigues Froz Terceiro Trabalho Ray Tracing Rio de Janeiro 2014 Sumário 1. INTRODUÇÃO .................................................................................................................... 3 2. PERCEPÇÃO DA IMAGEM E DA COR ............................................................................ 4 3. 1. Imagem ............................................................................................................................. 4 2. Cor .................................................................................................................................... 5 RAY TRACING .................................................................................................................... 6 3.1. Sombra ......................................................................................................................... 7 3.2. Luz ................................................................................................................................ 8 3.2.1 Luz Ambiente ........................................................................................................ 8 3.2.2 Difusa .................................................................................................................... 9 3.2.3 Luz Especular ...................................................................................................... 10 3.2.4 Modelo de Iluminação de Phong ......................................................................... 10 3.2.5 Reflexão .............................................................................................................. 11 3.3. 4. Objetos ....................................................................................................................... 12 3.4.1 Esfera................................................................................................................... 12 3.4.2 Triângulo ............................................................................................................. 14 ESTUDO DE CASO ........................................................................................................... 16 4.1. O primeiro raio .......................................................................................................... 16 4.2. Iluminação ambiente ................................................................................................. 17 4.3. Iluminação difusa ...................................................................................................... 17 4.4. Iluminação Especular ............................................................................................... 18 4.5. Modelo de Phong ....................................................................................................... 18 4.6. Triângulos .................................................................................................................. 19 4.7. Cenário ....................................................................................................................... 20 4.8. Sombra ....................................................................................................................... 20 4.9. Reflexão ...................................................................................................................... 21 4.10. Cena completa ............................................................................................................ 22 4.11. Profundidade .............................................................................................................. 23 CONCLUSÃO ............................................................................................................................ 25 1. INTRODUÇÃO O avanço da tecnologia e da ciência ao longo dos anos foi em grande parte responsabilidade da evolução da Ciência da Computação. Um dos motivos disso é a necessidade humana de reduzir o esforço de suas ações o máximo possível, automatizando processos do dia-a-dia. Uma forma de automatizar é prevendo o que acontecerá em uma situação antes que ela aconteça. Uma das áreas da Ciência da Computação que auxilia no desenvolvimento de formas de simulação e predição de situações reais em um espaço simulado é a Computação Gráfica. Além dessa função, a Computação Gráfica é bastante difundida no mundo do entretenimento, como em filmes e em jogos. A Computação Gráfica nada mais é do que uma forma de representar e estudar a geração de imagens a partir de dados. A geração das imagens – e possivelmente, de cenas contendo-as – é um dos problemas mais explorados da Ciência da Computação. Diversas técnicas de criação de imagens em ambientes 2D e 3D foram desenvolvidos, porém, ainda não há uma técnica perfeitamente genérica. A representação de uma imagem que corresponda a um ambiente 3D pode ser feita de diversas formas. Uma das técnicas de geração de imagens é o Ray Tracing. O Ray Tracing é um algoritmo que simula o caminho inverso da chegada da luz refletida dos objetos até os olhos do observador, gerando uma imagem 2D do objeto e do ambiente ao redor. A grande desvantagem desta técnica é sua performance. Porém principal vantagem do Ray Tracing é que ele pode gerar imagens com características muito realistas. A independência de cada raio lançado para gerar a imagem também é uma vantagem, por que facilita na paralelização do algoritmo, para melhora de performance. O objetivo deste trabalho é desenvolver um Ray Tracing simples, que mostre a geração das imagens e alguns efeitos básicos do algoritmo. O trabalho é dividido em 4 Seções. A primeira explica sucintamente a formação das imagens e das cores. A segunda mostra todo o conhecimento necessário para construir um Ray Tracing bem simples. A terceira Seção mostra o Ray Tracing básico construído e alguns objetos e cenas para exemplificar. Por fim, uma conclusão sobre o trabalho e alguns pontos que foram descobertos ao longo do desenvolvimento. 2. PERCEPÇÃO DA IMAGEM E DA COR Para entender como funciona o Ray Tracing, é necessário entender como é gerada uma imagem no ambiente real. 1. Imagem Ibn al-Haytham (c. 965-1039) foi o primeiro a perceber que nós enxergamos os objetos. Ele observou que através de partículas que viajam do sol até os objetos, refletem nos objetos e chegam aos nossos olhos, nos permitindo vê-los. A Figura 1 mostra como seria esse modelo. Figura 1 – Modelo de Haytham para a geração de imagens Sabemos atualmente que essas partículas se chamam Fótons []. O modelo de Haytham não está errado, porém, não é tão simples assim. Na verdade, vários fótons atingem o mesmo objeto e os mesmos pontos, e grupos vão ser refletido direções diferentes. A probabilidade de um deles alcançar os olhos humanos é alta somente por que estão em uma quantidade bem grande, no mundo real. A Figura 2 mostra como a situação real acontece. Figura 2 – Fótons atingindo a superfície do objeto. Além desse comportamento dos fótons, dependendo do material do objeto, eles podem ter três comportamentos distintos: O fóton pode ser transmitido, refratado ou refletido. 2. Cor A cor do objeto depende basicamente do material do objeto e da cor da fonte de luz transmitida. Quando um fóton de luz atinge a superfície do objeto, ele pode ser absorvido ou refletido pelo material. A combinação desses fótons refletidos e alcançando o olho humano que será a cor do ponto do objeto. Exemplificando, uma fonte de luz branca iluminando um objeto vermelho. Os fótons de cores vermelhas serão refletidos e os demais absorvidos pelo objeto. Os fótons vermelhos alcançarão os o observador, e o objeto será percebido pela cor vermelha. Com essas informações, concluímos que se não há luz em um ambiente, não enxergamos. Assim como se não há objetos no ambiente, não enxergamos a luz. 3. RAY TRACING O Ray Tracing é um algoritmo de renderização de objetos 3D descritos, representados em um plano 2D. A ideia por trás dessa técnica é simular a trajetória contrária dos raios de luz, enviando um raio na direção do objeto e descobrindo a direção da luz incidente logo em seguida. A Figura 3 mostra a trajetória do raio lançado pelo observador. Figura 3 – Demonstração do caminho oposto do raio de luz. De forma bem sucinta, a principal vantagem dessa técnica é que não é necessário calcular todas as direções do raio de luz para poder demonstrar os objetos, somente uma quantidade limitada por um plano 2D e um ponto de origem. A Figura 4 mostra os principais componentes desse algoritmo. Figura 4 – Ray Tracing detalhado. Um ponto de origem define o raio de origem (Ray Origin). Desse ponto, é definido um escopo de câmera (Virtual Camera), que limita o campo de visão do ponto de origem a um tamanho específico. Cada unidade desse tamanho será representada por um pixel de uma imagem. Tendo o campo de visão e o ponto de origem, um raio é atirado (Primary Ray), até interceptar um objeto. Ao intercepta-lo, o segundo raio é traçado a partir do ponto interceptado e com direção à fonte de luz (Secundary Ray). Caso não haja nenhum obstáculo entre o ponto interceptado e a luz, as características do objeto são representadas na imagem. Alguns elementos são necessários para adicionar realismo nos objetos, para representar o mundo real de forma mais efetiva. Alguns desses elementos são a iluminação global (fonte de luz), iluminação ambiente, difusa, especular, reflexão, refração e outros. 3.1. Sombra Onde há luz, há sombra, no mundo real. De forma semelhante, as sombras das cenas devem ser representadas no ambiente 3D. Uma forma de fazer isso no ray tracing é utilizar um segundo raio, chamado de raio de sombra (Shadow Ray), ou raio secundário (Secundary Ray), que traça a trajetória do ponto que houve interseção com um objeto até a fonte de luz. Caso haja uma interseção com outro objeto nessa trajetória, ali há sombra. A Figura 5 ilustra essa situação. Figura 5 – Shadow Ray. 3.2. Luz Como discutido na Seção 2, quando não há luz, não enxergamos a cena. A luz é a componente principal para mostrar um objeto em uma cena e definir todos os outros elementos de um ambiente 3D. A luz pode ser tratada em uma cena como um objeto, sendo definida então uma posição no espaço. Assim como pode ser tratada como um elemento abstrato, ou a combinação dos dois. A luz influencia também na cor dos objetos. Uma luz de cor branca é responsável apenas por mostrar as características descritas de um objeto. Porém, se a cor da luz for diferente, o objeto será mostrado com uma cor diferente. Há formas abstratas de luz – ou seja, que influenciam na cena, mesmo não sendo um objeto explícito - em uma cena. Três formas abstratas são a luz ambiente, difusa e especular. 3.2.1 Luz Ambiente A luz ambiente é uma forma de compensar a falta de iluminação em certas partes da cena. Assim, um os objetos sempre serão visíveis, mesmo não havendo incidência direta de luz nele. É o modelo mais simples de calcular luz indireta. A luz ambiente é calculada através da Equação 1. 𝐼𝐴 = 𝐼𝑎 ∗ 𝐾𝑎 (Equação 1) Onde 𝐼𝐴 é a luz ambiente incidida no objeto 𝐼𝑎 é a intensidade de luz ambiente, uma constante que influencia em todos os objetos da cena e é definida pelo usuário. O termo 𝐾𝑎 é o coeficiente de reflexão ambiente do objeto, que abrange um valor entre 0 e 1 e corresponde ao material do objeto. 3.2.2 Difusa A iluminação difusa coloca em prática um efeito que ilumina com mais intensidade as partes de um objeto que estão mais próximas – em outras palavras, mais visíveis – da fonte de luz. De forma mais algébrica, os pontos da superfície do objeto em que seus vetores Normal têm os menores ângulos com o vetor da direção da luz, ou seja, perto de 0º, são mais iluminados, e os que tem os maiores ângulos são menos iluminados, ou não iluminados (próximo de 90º). A Figura 6 demonstra a teoria da difusa. Figura 6 – Teoria da iluminação difusa. No Case 1, o ângulo entre a normal e o raio incidente é grande, havendo menos iluminação. No Case 2, há mais iluminação que no Case 1, por que o ângulo foi diminuído. No Case 3, a iluminação é quase perfeita, e mais evidente do que nos outros Cases. A iluminação difusa é calculada através da Equação 2. 𝐼𝐷 = 𝐼𝐿 ∗ 𝐾𝑑 ∗ cos(𝜃) = 𝐼𝐿 ∗ 𝐾𝑑 ∗ 𝑁. 𝐿 (Equação 2) Onde 𝐼𝐷 é a Iluminação Difusa, 𝐼𝐿 é a iluminação da fonte de luz, 𝐾𝑑 é a constante de reflexão difusa, um número entre 0 e 1 e que depende do material do objeto. Note que o cos(𝜃), onde θ é o ângulo entre a normal e o raio de luz, pode ser representado pelo produto escalar entre a Normal N e o raio de luz L. Se o produto escalar der um valor negativo, a fonte de luz está atrás do ponto que está sendo analisado, então o valor usado na equação deve ser 0. 3.2.3 Luz Especular A iluminação especular representa a reflexão da luz no objeto difuso. Esse efeito é observado no mundo real em objetos com material liso, que refletem em parte a luz incidida sobre ele nos pontos onde a direção da luz é mais próxima da normal. A Figura 7 mostra os vetores desse modelo de reflexão de luz. Figura 7 – Vetores da iluminação especular. L é o raio da fonte de luz, R é o raio refletido. V é o raio traçado pelo observador, onde α é o ângulo entre V e o raio refletido. N é a normal. Na prática, a especular mostra a direção da luz incidida sobre o objeto na própria superfície do objeto. A Equação 3 mostra como calcular essa iluminação especular. 𝐼𝑆 = 𝐼𝐿 ∗ 𝐾𝑠 ∗ cos(𝛼)𝑛 (Equação 3) Onde 𝐼𝑆 é a iluminação especular, 𝐾𝑠 é a constante de reflexão especular, um número entre 0 e 1 que depende do material do objeto e cos(𝛼)𝑛 é o cosseno do ângulo entre o raio traçado pelo observador e o raio refletido elevado por uma variável chamada “Specular Power” (em tradução livre, Poder Especular), que determina o tamanho do brilho especular. Essa variável é um valor que varia de 1 até valores muito grandes, e quanto maior, mais suave é o brilho da especular. 3.2.4 Modelo de Iluminação de Phong O modelo de iluminação de Phong é uma forma de representar os componentes citados acima e uni-los, de maneira a representar o objeto de forma mais realista. De acordo com o modelo de Phong, a iluminação total é a soma da iluminação ambiente com a difusa e com a especular. A Equação 4 mostra como ela é calculada, juntando as Equações 1, 2 e 3. 𝐼𝑇 = 𝐼𝑎 ∗ 𝐾𝑎 + 𝐼𝐿 ∗ 𝐾𝑑 ∗ 𝑁. 𝐿 + 𝐼𝐿 ∗ 𝐾𝑠 ∗ cos(𝛼)𝑛 (Equação 4) Onde 𝐼𝑇 é a intensidade total. O modelo de Phong será mostrado em prática no estudo de casos, na Seção 4. 3.2.5 Reflexão Dependendo do material do objeto, ele pode ter uma característica peculiar: a reflexão. Um objeto pode refletir outros objetos ao que incidem nele. A forma de fazer é um complemento do algoritmo do Ray Tracing, sendo bastante importante e difundida. Para fazer a reflexão, quando o raio traçado pela câmera atinge um objeto que reflete, a partir do ponto que houve a interseção é traçado outro raio, um raio secundário é atirado em na direção do raio refletido até interceptar outro objeto. A cor do primeiro objeto (o objeto espelho) será a cor do segundo objeto encontrado. A Figura 8 mostra essa trajetória. Figura 8 – Trajetória da reflexão. Através dessa explicação é possível perceber que o algoritmo do raio traçado é recursivo, pois se um objeto espelho encontrar outro objeto espelho nesse caminho, o algoritmo deve lançar mais um raio. O ponto de parada dessa recursão deve ser uma variável de controle extra, pois corre o risco da recursão ser infinita. Normalmente essa variável é chamada de Profundidade (Depth) e é escolhida pelo usuário. Quanto maior a profundidade, mais recursões serão utilizadas. Parte do raio traçado, quando atinge um objeto, pode ter outro comportamento. Esse comportamento é conhecido como Refração, e é um complemento da reflexão, pois alguns objetos se comportam como refletores e refratores. Um exemplo clássico é a água. Para equilibrar a quantidade de reflexão e a quantidade e refração em um objeto, é utilizado uma variável oriunda da Equação de Fresnel. Nesse trabalho, a refração será suprimida e apenas citada por conveniência. A reflexão foi implementada, devida a sua simplicidade. 3.3. Objetos As características dos objetos são muito importantes para a visualização em uma cena. Cada objeto tem uma característica própria, sendo elas principalmente baseadas nas suas formas. Conhecer o objeto é de extrema importância, pois suas características de forma deverão ser bem formalizadas, para o cálculo da interseção. Neste trabalho foram implementadas duas formas de objetos: A esfera e o triângulo. Ambos são suficientes para criar uma cena bem simples e testar as propriedades do Ray Tracing. 3.4.1 Esfera A esfera é considerada a forma mais simples de objetos na cena 3D, pois o cálculo de sua intercepção é bem simples, computacionalmente falando. Há duas formas simples de calcular a interseção de um Ray Tracing com uma esfera. Uma solução geométrica e uma solução analítica. Por ser mais simples e mais efetivo computacionalmente, a forma geométrica será descrita. A Figura 9 mostra os componentes algébricos de um raio incidindo em uma esfera. Figura 9 – Raio passando por dois pontos de uma esfera. Um raio disparado pelo Ray Tracing pode ser representado pela Equação 5. 𝑜 + 𝑡𝑟 (Equação 5) Onde o é o ponto de origem, r é o vetor de direção do raio e t é um parâmetro de distância, onde variando ele, percorremos por qualquer ponto do raio. Em outras palavras, podemos encontrar o ponto P e o P’ utilizando a Equação 6. 𝑃 = 𝑜 + 𝑡0 𝑟 𝑃′ = 𝑜 + 𝑡1 𝑟 (Equação 6) Onde t0 e t1 são as distâncias da origem o aos pontos que o raio passa pela esfera. Utilizando a Figura 9 como base, sabemos os valores de L e de r, sendo a distância da origem ao centro do objeto e a direção do raio, respectivamente. Podemos descobrir o valor de tca através do produto escalar entre L e r, de acordo com a Equação 7. 𝑡𝑐𝑎 = 𝐿 . 𝑟 (Equação 7) Sabemos que esse produto escalar representa duas situações: Ele é o valor da projeção de L no raio traçado e se ele for negativo, ambos estão apontando para direções diferentes. Se esse valor for negativo, não nos interessa, pois há interseção somente atrás da câmera, logo, descartamos. Utilizando o Teorema de Pitágoras, podemos descobrir o valor de d, como na Equação 8. 2 𝑑2 = 𝑡𝑐𝑎 + 𝐿2 (Equação 8) Desenvolvendo essa equação, podemos analisar o valor de d. Se ele for menor que 0 ou se d é maior que o raio da esfera, o raio traçado erra a esfera, não havendo interseção. Tendo o valor de d, temos todos os valores necessários para calcular thc. A Equação 9 mostra que é possível utilizar o teorema de Pitágoras novamente para descobrir esse valor e, consequentemente, os valores de t0 e t1.. 2 𝑑2 + 𝑡ℎ𝑐 = 𝑟𝑎𝑑𝑖𝑢𝑠 2 𝑡ℎ𝑐 = √𝑟𝑎𝑑𝑖𝑢𝑠 2 − 𝑑2 (Equação 9) 𝑡0 = 𝑡𝑐𝑎 − 𝑡ℎ𝑐 𝑡1 = 𝑡𝑐𝑎 + 𝑡ℎ𝑐 3.4.2 Triângulo O triângulo possivelmente é o objeto mais importante a ser renderizado. Ele é a base de todos os polígonos, que são divididos em triângulos para terem uma forma no Ray Tracing. Os triângulos são formas muito simples, definidos por 3 pontos (vértices) e um plano formado entre os três. Há várias formas de calcular a interseção do Ray Tracing com os triângulos. A forma utilizada nesse trabalho foi o algoritmo de Moller-Trumbore. O algoritmo de Moller-Trumbore é considerado uma das técnicas mais rápidas de se calcular a interseção com triângulos. Uma explicação sucinta da técnica será feita abaixo. Podemos calcular um ponto dentro de um triângulo através da Equação 10. 𝑃 = 𝑤𝐴 + 𝑢𝐵 + 𝑣𝐶 (Equação 10) Onde P é o ponto, A, B e C são os vértices do triângulo e w, u e v são oriundas da forma parametrizada da equação e são constantes que representam as distâncias dos vértices aos pontos dentro do triângulo. A soma desses três últimos termos é igual a 1. Sabendo que w pode ser representado por (1-u-w) e utilizando a Equação 5, do ponto na reta formada pelo raio traçado, podemos obter a Equação 11. 𝑜 − 𝐴 = −𝑡𝐷 + 𝑢(𝐵 − 𝐴) + 𝑣(𝐶 − 𝐴) (Equação 11) Essa Equação 11 pode ser representada como uma operação de matrizes. Por conveniência e para visar a simplicidade, essas operações serão omitidas nesse trabalho. A Figura 10 mostra algumas informações algébricas que podemos extrair dessa mudança de representação de bases. Figura 10 – Dependendo da direção do raio, o determinante da forma matricial do triângulo muda é positivo ou negativo. Os vértices do triângulo podem representar vetores. Dependendo dos vetores formados – ou seja, dos vértices utilizados, da ordem que foram utilizados e das direções encontradas – o vetor Normal do triângulo muda de direção. A regra da mão direita e da mão esquerda são apropriadas para descobrir para qual direção o vetor será calculado e depende do sistema de coordenadas do sistema. As variáveis u e v são calculadas através da Equação 12. 𝑢= (0−𝑣0) .(𝑟𝑎𝑦 𝑋 (𝑣2−𝑣0)) ) 𝑑𝑒𝑡 𝑢= (𝑟𝑎𝑦 . (𝑜−𝑣0 𝑋 (𝑣1−𝑣0))) ) 𝑑𝑒𝑡 (Equação 12) Onde v0, v1 e v2 são vértices do triângulo, o é a origem do raio traçado, ray é a direção do raio traçado e det é o determinante obtido na Equação 11. 4. ESTUDO DE CASO Para testar a teoria do Ray Tracing o algoritmo foi implementado. Os escopos dos códigos serão omitidos nesse trabalho. Porém, um passo a passo do algoritmo será mostrado através dos resultados alcançados. Nos passos a seguir, serão utilizados somente duas formas geométricas, a esfera e o triângulo. A imagem será definida com o tamanho de 800x600, e o campo de visão da câmera foi definido com o valor 50. A câmera está posicionada na posição (0,0,25) e os objetos descritos dentro ou fora do campo de visão. O exemplo a seguir contém somente uma fonte de luz. 4.1. O primeiro raio O primeiro passo do algoritmo é descrever o primeiro raio. A regra é simples: o raio traçado encontrou um objeto, o valor da cor da sua superfície é pintado na imagem. A Figura 11 mostra o primeiro resultado para uma esfera posicionada na origem (0,0,0). Figura 11 – Resultado dos primeiros raios traçados. 4.2. Iluminação ambiente Após encontrar o objeto, a iluminação ambiente foi isolada em um componente. O Resultado está na Figura 12. A iluminação, utilizando a equação para seu cálculo, representa 20% da iluminação original do objeto, valor alcançado por livre arbítrio. Figura 12 – Iluminação Ambiente 4.3. Iluminação difusa Semelhante à iluminação ambiente, o componente da iluminação difusa foi isolado e a Figura 13 mostra o resultado para o mesmo objeto utilizado. Figura 13 – Iluminação Difusa. 4.4. Iluminação Especular O componente da iluminação especular foi separado e a Figura 14 mostra o resultado. Figura 14 – Iluminação Especular. 4.5. Modelo de Phong Utilizando o modelo de iluminação de Phong, os 3 componentes previamente calculados são somados formando uma nova imagem, como mostrado na Figura 15. Figura 15 – Modelo de Phong para o objeto estudado. 4.6. Triângulos Assim como as esferas, alguns triângulos foram testados na cena. Como os triângulos são a base para qualquer polígono existente, podemos fazer praticamente qualquer forma de polígono não circular existente. A Figura 16 mostra um triângulo renderizado na cena. Figura 16 – Triângulo construído. Assim, podemos criar novas formas. A Figura 17 mostra um plano formado por dois triângulos e será utilizada na cena. Figura 17 – Dois triângulos coplanares. 4.7. Cenário Utilizando os triângulos, um cenário foi construído e colocado no ambiente. A Figura 18 mostra esse cenário com os triângulos. Figura 18 – Cenário construído. Por escolha, o fundo da imagem é da cor branca. 4.8. Sombra Outro componente importante a ser colocado em uma cena é a sombra. A Figura 19 mostra a sombra formada no cenário. Nesse caso, a sombra tem uma compensação de iluminação global, como discutido na Seção 3. Figura 19 – Objeto e sombra calculados na cena. 4.9. Reflexão Objetos com reflexão são a base principal da ideia por trás da recursão do Ray Tracing, então esses objetos devem ser demonstrados na cena. A Figura 20 mostra um objeto reflexivo na cena construída. Figura 20 – Objeto com reflexão adicionado na cena. Além da reflexão na esfera, os triângulos também podem conter essa propriedade. Na Figura 21 é mostrado a reflexão nos triângulos que representam uma das paredes na cena. Figura 21 – Parede refletindo. 4.10. Cena completa A cena finalmente é construída com vários objetos. Ela é demonstrada na Figura 22. Figura 22 – Cena completa. Objetos colocados na frente e atrás da câmera. 4.11. Profundidade Um ponto importante a discutir a partir desse momento são os efeitos da recursão da reflexão. Como discutido na Seção 3, quanto maior a variável de controle da profundidade da recursão, mais reflexos serão vistos na cena, enquanto elas existirem. A importância desse atributo no Ray Tracing é o fato de que quanto maior o valor, também é maior o custo computacional. Logo, é necessário conhecer a cena para escolher um bom valor para essa profundidade, de forma que não prejudique nem a performance e nem a aparência da cena. A Figura 23 mostra outra cena desenvolvida, onde outro objeto formado por triângulos e colocado em um ambiente com vários espelhos e com a profundidade com o valor 1 – ou seja, somente uma recursão. A Figura 24 e 25 são semelhantes, mas com os valores de profundidade sendo 2 e 5, respectivamente. Figura 23 – Ray Tracing com o valor 1 na profundidade. Figura 24 – Ray Tracing com o valor 2 na profundidade. Figura 25 – Ray Tracing com o valor 5 na profundidade. CONCLUSÃO O Ray Tracing é um algoritmo bastante explorado e difundido na Computação Gráfica. Ele contém componentes que podem representar um mundo 3D com muita fidelidade com a realidade. Apesar de ser sua maior vantagem, o ponto fraco desta técnica consiste na complexidade computacional: ele ainda é um algoritmo que requer muito processamento para ser executado em tempo real. Este trabalho explicou com detalhes as técnicas básicas que compõe o Ray Tracing, e foi desenvolvido um programa para executar um algoritmo bem simples. Apesar da sua fraqueza em relação à performance (dependendo da cena, o programa demorava de 5 à 14 segundos para renderizar a cena), sua implementação é bem fácil de ser reproduzida. Os programadores de Computação Gráfica almejam executar esse algoritmo com os componentes necessários para representar o maior realismo possível e em tempo real. Esse objetivo ainda está engatinhando, mas a otimização do algoritmo e incremento do poder computacional no futuro podem permitir isso.