Felipe Augusto Rieck. Implementação e Otimização de uma Técnica de Ray Tracing

Tamanho: px
Começar a partir da página:

Download "Felipe Augusto Rieck. Implementação e Otimização de uma Técnica de Ray Tracing"

Transcrição

1 Felipe Augusto Rieck Implementação e Otimização de uma Técnica de Ray Tracing Joinville 2008

2 UNIVERSIDADE DO ESTADO DE SANTA CATARINA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Felipe Augusto Rieck IMPLEMENTAÇÃO E OTIMIZAÇÃO DE UMA TÉCNICA DE RAY TRACING Trabalho de conclusão de curso submetido à Universidade do Estado de Santa Catarina como parte dos requisitos para a obtenção do grau de Bacharel em Ciência da Computação Orientador: Doutora, Daniela G. Trevisan Joinville 2008

3 Felipe Augusto Rieck IMPLEMENTAÇÃO E OTIMIZAÇÃO DE UMA TÉCNICA DE RAY TRACING Este Trabalho de Conclusão de Curso foi julgado adequado para a obtenção do título de Bacharel em Ciência da Computação e aprovado em sua forma nal pelo Curso de Ciência da Computação do CCT/UDESC. Banca Examinadora: Orientador: Doutora, Daniela G. Trevisan Membro: PhD., Marcelo da Silva Hounsell Membro: PhD., Roberto Silvio Ubertino Rosso Jr. Joinville, 3 de dezembro de 2008

4 Agradecimentos Agradeço a Deus por seu amor inndável, pelo novo ânimo soprado a cada dia e por poder conar tudo a Ele. Aos meus pais, Rolf e Beatriz, a quem eu amo muito, pela dedicação, ensinamentos e pelo apoio em todas os momentos da minha vida. Aos meus irmãos Paulo e João, que me animavam, alegravam, questionavam, e com quem pude aprender e ensinar muito. Minha professora orientadora, Dra. Daniela Gorski Trevisan pela orientação, apoio e contribuição nesta monograa, auxiliando e, sobretudo, defendendo minhas idéias. À minha amiga Ariane Böge, que esteve junto em todos esses anos de faculdade e amizade, e que me contagiava com sua alegria e diversão. Todos os colegas e amigos, que me ajudaram não somente durante o curso, mas também no decorrer da vida. À Universidade do Estado de Santa Catarina - UDESC pela oportunidade de ensino de qualidade e gratuito. Ao professor Msc. Rogério Eduardo da Silva, que me incentivou na realização deste trabalho fornecendo auxílio na implementação do Ray Tracer na disciplina de Computação Gráca.

5 É melhor tentar e falhar, que preocupar-se e ver a vida passar; é melhor tentar, ainda que em vão, que sentar-se fazendo nada até o nal. Eu prero na chuva caminhar, que em dias tristes em casa me esconder. Prero ser feliz, embora louco, que em conformidade viver... Martin Luther King

6 Resumo Este trabalho buscou o melhoramento de um Ray Tracer desenvolvido na disciplina de CGR - Computação Gráca. O algoritmo do Ray Tracer permite simular um fotorrealismo muito semelhante ao vivenciado no mundo real, permitindo que cenas das mais diferentes complexidades, tanto em relação à quantidade de primitivas como à complexidade da texturização, simulem ambientes ou situações reais. Entretanto, o algoritmo do Ray Tracer despende de um elevado custo computacional, que não permite que ele seja utilizado para aplicações interativas sem que haja a otimização da forma como as imagens são geradas. Foram feitos estudos sobre a estrutura de aceleração KD-Tree, bem como a utilização do poder computacional da GPU, am de utilizá-los como métodos de aceleração do processo de render. O algoritmo estipulado permitiu que fossem utilizadas esferas e malhas de triângulo, podendo estas serem texturizadas, reexivas e/ou transparentes. Os resultados obtidos mostram que o algoritmo foi acelerado com o processo de otimização por divisão espacial, e levam à conclusão da real necessidade de otimização de um Ray tracer, sobretudo, quando este suporta malhas de triângulos de diversas complexidades. Palavras-chaves: Ray Tracer, aceleração, GPU, KD-Tree

7 Abstract This study is aimed to improve a Ray Tracer developed in the discipline of CGR - Computer Graphics. The algorithm of Ray Tracer is able to simulate a photorealism very similar with the real world, allowing scenes of dierent complexities, including the amount of primitive as the complexity of texturing, simulate real situations or environments. However, the algorithm of Ray Tracer spends a high computational cost, which does not allow it to be used for interactive applications without giving the optimization of how the images are generated. Studies were made on the KD-Tree acceleration structure, and the use of computational power of the GPU, in order to use them as methods for accelerating the entire render process. The algorithm stipulated here, allowed to spheres and triangle meshes, these can be of textured, reective and/or transparent materials. The results shows that the algorithm was accelerated with the space division optimization, and lead to the conclusion of the need for optimization of a Ray tracer, especially when it supports mesh of triangles of various complexities. Keywords: Ray Tracer, aceleration, GPU, KD-Tree

8 LISTA DE FIGURAS 1.1 Entidades básicas de um Ray Tracer. Adaptado de (GLASSNER, 1989) Etapa de uma divisão espacial por KD-Tree. (BIKKER, 2004b) O modelo de câmera pinhole Traçado de raios em uma cena normal Raios de sombra Raio de luz reetido três vezes até chegar ao plano de projeção Raio de luz refratado Ray Tracer recursivo O problema de aliasing Desempenho de Ponto-utuante nas GPUs Pipeline de uma GPU Mapeamento Bilinear Malha de triângulos texturizada sobre uma superfície plana reetiva Esfera texturizada ao centro de duas esferas reetivas Interface de seleção raio-cena na GPU Um Ray Tracer em streaming Cenas Renderizadas

9 4.4 Resultado das Cenas Imagens geradas a partir do volume de dados Cenas renderizadas Resultado em comparação à diferentes GPUs Resultado da Comparação de uma GPU com CPUs Arvore resultante da divisão de D Cena com os retângulos de divisão Encontrando a melhor divisão em uma cena contendo um triângulo Exemplo de nó de dados na textura Cena B1 com variação da profundidade de recursão de 1 a 5 raios recursivos Teste B1, cena composta de duas esferas Cena B2 com variação da profundidade de recursão de 1 a 5 raios recursivos (da esquerda para a direita) Teste B2 - KD-Tree, cena composta de 2604 triângulos Teste B2 - Normal, cena composta de 2604 triângulos Teste B2 - Ganho de desempenho, cena composta de 2604 triângulos Teste B3 - KD-Tree, cena com variação da quantidade de triângulos Teste B3 - Normal, cena com variação da quantidade de triângulos Teste B3 - Ganho de desempenho, cena com variação da quantidade de triângulos

10 A.1 4 Esferas A.2 8 Esferas A.3 Malha com 2600 triângulos A.4 Malha de 2600 triângulos suavizada, resultando em triângulos 91 A.5 Duas esferas com material reexivo A.6 Malha e plano com material reexivo, resultando em 2604 triângulos 92 A.7 Malha utilizada no teste com variação de complexidade por suavização da malha de polígonos

11 Lista de Abreviaturas API BVH CGR CPU GFLOPS GLSL GPU KD-Tree HLSL SAH SDK Application Programming Interface Bounding Volume Hierarchie Computação Gráca Central Processing Unit Giga Floating Points Operations per Seconds OpenGL Shading Language Graphics Processing Unit k-dimensional tree High Level Shader Language Surface Area Heuristic Software Development Kit

12 LISTA DE TABELAS 4.1 Comparação dos Trabalhos Relacionados Desempenho do Ray Tracer com KD-Tree

13 10 SUMÁRIO 1 INTRODUÇÃO OBJETIVOS Geral Especíco METODOLOGIA ESTRUTURA DO TRABALHO FUNDAMENTAÇÃO TEÓRICA RAY TRACER - CONCEITOS Modelo de Câmera Pinhole Traçado de Raios Ray Tracer Inverso Versus Tradicional Iluminação e Texturização Sombra Reexão Transparência Colorização Phong Ray Tracer Recursivo Aliasing e Anti-aliasing

14 2.1.5 Algoritmos de Intersecção GPU - CONCEITOS Pipeline de Processamento Linguagens para Colorização em Alto-Nível Cg HLSL GLSL AMPLIAÇÃO DAS FUNCIONALIDADES DO RAY TRACER NOVAS PRIMITIVAS Malhas de Triângulos Intersecções Raio-Triangulo TEXTURIZAÇÃO RESULTADOS OBTIDOS TRABALHOS RELACIONADOS TRABALHO 1: RAY TRACING COMPLEX SCENES ON GRAPHICS HARDWARE Descrição da Abordagem Testes e Resultados Obtidos TRABALHO 2: RAY TRACING ON PROGRAMMABLE GRAPHICS HARDWARE Descrição da Abordagem Testes e Resultados Obtidos

15 4.3 TRABALHO 3: A SINGLE-PASS GPU RAY CASTING FRAMEWORK FOR INTERACTIVE OUT-OF-CORE RENDERING OF MASSIVE VOLUMETRIC DATASETS Descrição da Abordagem Testes e Resultados Obtidos TRABALHO 4: RAY TRACING ON GPU Descrição da Abordagem Testes e Resultados Obtidos DISCUSSÃO DO CAPÍTULO OTIMIZAÇÃO POR SOFTWARE - DIVISÃO ESPACIAL KD-TREE Gerando a KD-Tree Percorrendo a KD-Tree Cenas Dinâmicas/Interativas Resultados Obtidos OTIMIZAÇÃO POR HARDWARE PASSANDO DADOS ATRAVÉS DE TEXTURAS O PROBLEMA DA RECURSIVIDADE A DIFICULDADE DE IMPLEMENTAÇÃO TESTES E RESULTADOS TESTE B1: COMPLEXIDADE DE MATERIAL EM CENAS SIMPLES 74 12

16 7.2 TESTE B2: COMPLEXIDADE DE MATERIAL EM CENAS COM- PLEXAS TESTE B3: VARIAÇÃO DA COMPLEXIDADE DA CENA DISCUSSÃO DOS RESULTADOS CONCLUSÃO TRABALHOS FUTUROS REFERÊNCIAS APÊNDICE A -- Cenas Renderizadas A.1 TESTE A A.2 TESTE A A.3 TESTE A A.4 TESTE A A.5 TESTE B A.6 TESTE B A.7 TESTE B APÊNDICE B -- Código Fonte GPU B.1 CARREGAMENTO DE TEXTURAS B.2 ESTRUTURA PARA PRIMITIVAS

17 1 Introdução Com o avanço da tecnologia empregada na síntese de imagens, tanto para visualizações grácas como para jogos, surgiu a necessidade de uma melhoria na qualidade do resultado apresentado ao usuário. Esta qualidade pode ser obtida através da técnica do Ray Tracing, que permite computar imagens baseando-se no traçado original da luz, da mesma forma como a vemos na natureza. Segundo (AZEVEDO; CONCI, 2003), os primeiros estudos sobre Ray Tracing são da década de 1960, a partir do estudo e busca de um algoritmo que simulasse a trajetória de projéteis balísticos e partículas nucleares. A empresa Apple foi a primeira a apresentar o Ray Tracer como uma forma de calcular sombras em computação gráca (AZEVEDO; CONCI, 2003). Entretanto, mesmo com pouca utilização, o avanço do hardware empregado nos computadores propiciou que a técnica do Ray Tracing passasse a ser aprimorada e implementada. Assim, em 1980 já se tornava possível criar imagens com sombras, reexões, transparência e refrações. Figura 1.1: Entidades básicas de um Ray Tracer. Adaptado de (GLASSNER, 1989). Um Ray Tracer consiste de três entidades principais (GLASSNER, 1989):

18 1 Introdução 15 a câmera (ou olho da imagem), o plano da imagem e a cena contendo primitivas e luzes. Na gura 1.1 pode ser visto um raio A sendo propagado através do olho em direção a um pixel do plano de imagem (quadrado pintado). Através da direção deste raio são computadas as intersecções com as primitivas da cena e, então, obtida a colorização para o pixel do plano de imagem. Dessa forma, basicamente, a técnica do Ray Tracing consiste em traçar raios que partem do olho do observador à cena, e, através de testes de intersecção, determinar se o raio intercepta ou não as primitivas nela contidas. Quando há uma intersecção raio-primitiva, calcula-se a cor nal do pixel através da normal no ponto de intersecção e das congurações do material da primitiva e luzes presentes na cena (GLASSNER, 1989). Para efeito de cálculo de reexão e/ou transparência, quando existem intersecções raio-primitiva, novos raios são gerados recursivamente como se o raio inicial fosse ricocheteado pela cena. A este efeito de ricochete dá se o nome de Ray Tracer Recursivo, e é através dele que se tornou possível computar efeitos mais complexos como refração e reexão. Vale ressaltar que este tipo de cálculo não é computado em primitivas opacas e não reetoras, sendo utilizado sempre que existe uma primitiva transparente e/ou espelhada. Costuma-se estabelecer um limite de profundidade de recursão para que o algoritmo não entre em um ciclo innito de raios. Quanto maior a profundidade de recursão, maior a qualidade da cena e signicativamente maior o tempo que a cena levará para renderizar. Além dos raios originários da recursividade do Ray Tracer existem outros tipos de raios gerados para a obtenção da iluminação no ponto de encontro raio-primitiva. Estes raios, designados raios de sombra (AZEVEDO; CONCI, 2003; GLASSNER, 1989), vericam se o ponto de encontro raio-primitiva é diretamente iluminado pelas fontes de luz presentes na cena ou não. Isto é feito através de análises que determinam se um raio originário no ponto de intersecção e direcionado a cada lâmpada, sofre ou não intersecção por outra primitiva. Caso haja esta intersecção, signica que essa outra primitiva bloqueia a passagem de luz para aquela lâmpada. Através dos raios de sombra torna-se possível determinar a existência, ou não, de umbras, penumbras, ou até mesmo escuridão nos objetos da cena. En-

19 1 Introdução 16 tretanto, da mesma forma como os raios recursivos tem um elevado custo, os raios de sombra também custam tempo de processamento, principalmente se o número de lâmpadas na cena for relativamente grande. Todavia, a qualidade das imagens de um Ray Tracer está diretamente relacionada ao tempo que este levará para renderizar uma cena. Assim, no quesito interatividade (que diz respeito à exibição da cena renderizada em um tempo relativamente curto - que favoreça a interação - ao usuário), se torna difícill criar um algoritmo que satisfaça o desejo de uma boa qualidade 1 de renderização em um tempo que satisfaça a interação (próximo ou equivalente ao real-time) sem que sejam utilizados métodos de aceleração, quer eles sejam através de software (técnicas de implementações e algoritmos ecientes) ou hardware. Entende-se por tempo de interação, por exemplo, os grácos 3D de um jogo de ação, que são gerados em tempo real através do hardware gráco de um computador. Isto signica que os grácos são atualizados de forma tão rápida sem que haja qualquer atraso perceptível ao usuário. De mesma forma, entendese por fotorrealismo a qualidade nal de imagens geradas de forma a simular uma fotograa de algo real, com texturização, iluminação e propriedades físicas semelhantes às encontradas no mundo real. Dentre as técnicas de aceleração por software, um dos algoritmos comumente utilizados é o de subdivisão espacial denominado KD-Tree, que visa reduzir o número de testes de intersecção do Ray Tracer. A utilização da técnica de KD- Tree é usual em algoritmos de Ray Tracing pois ela é a estrutura de aceleração mais eciente no momento, e a que mais se aplica a cenas de grande complexidade (HAVRAN, 2000). Segundo (AKENINE-MOLLER; HAINES, 2002) uma KD-Tree permite que espaços vazios da cena sejam eliminados dos testes de intersecção através da construção de uma árvore hierárquica dos objetos presentes da cena. Uma KD-Tree permite que cenas complexas sejam renderizadas mais rapidamente uma vez que os testes de intersecção serão limitados aos elementos pertencentes à cena e por sua vez a estrutura da KD-Tree. Para tanto, o espaço da cena é dividido em duas metades, e as duas metades são processadas recursi- 1 Qualidade que simule o foto-realismo

20 1 Introdução 17 vamente até que um semi-espaço não contenha mais de uma primitiva (BIKKER, 2004b). Figura 1.2: Etapa de uma divisão espacial por KD-Tree. (BIKKER, 2004b). Na gura 1.2 é ilustrado um processo de divisão da cena em blocos. Cada primitiva é guardada na árvore KD-Tree, fazendo com que o teste de intersecções seja reduzido aos objetos existentes na cena. Assim, a área grande da cena que não possui primitivas (quadrado de maior área), não poderá sofrer intersecção com nenhum raio, e por sua vez todos os raios que por ela passarem serão ignorados. Em relação à otimização por hardware, com o avanço da tecnologia empregada em processadores grácos - Graphics Processing Unit(GPU's) - e na taxa de transmissão de dados do sistema operacional para a placa de vídeo; utilizar estes dispositivos como auxiliares na computação de cores e intersecções torna-se uma medida para aliviar a sobrecarga de processamento na CPU. Assim, como uma maneira de acelerar o tempo de renderização, utilizar o desempenho gráco das placas de vídeo pode ser uma maneira viável para a otimização durante a síntese da imagem da cena, favorecendo ganho de desempenho da CPU para computar outras etapas da renderização (HORN et al., 2007). Motivado por um Ray Tracer desenvolvido pelo acadêmico para a dis-

21 1 Introdução 18 ciplina de Computação Gráca (CGR) 2, este trabalho tem por nalidade aplicar técnicas de otimização em Ray Tracer, as quais possibilitem juntar fotorrealismo com desempenho a m de obter resultados satisfatórios que favoreçam tanto qualidade como interatividade (ou um balanço entre estes fatores). A interatividade aliada à qualidade permitirá a obtenção de resultados favoráveis e inversamente proporcionais ao tempo necessário para a computação da imagem. Os resultados obtidos serão validados através de comparação com abordagens existentes, como, por exemplo, a apresentada em (HORN et al., 2007). 1.1 Objetivos Geral Desenvolver um Ray Tracer para planos, esferas, cubos e malhas de triângulos com suporte a texturas, que, aliado a técnicas de aceleração por software e hardware, permita interatividade, ou seja, que a técnica possa ser utilizada em aplicações interativas Especíco Aquisição de experiência em programação de hardware gráco; Aplicação do algoritmo do Ray Tracer implementado em GPU's com suporte a linguagem de Pixel Shader da NVidia 3 ; Avaliação de desempenho e análise comparativa das técnicas implementadas; 1.2 Metodologia Este trabalho será desenvolvido com base em pesquisa bibliográca na busca de algoritmos de aceleração KD-Tree aplicados à Ray Tracer bem como 2 Este Ray Tracer renderiza cenas com planos e esferas, computando a colorização de opacidade, reexões e transparências pelo método de texturização phong. 3

22 1 Introdução 19 técnicas de programação em GPU. Para isso, será implementado um Ray Tracer que sintetize malhas de triângulos, esferas, cubos e planos, o qual servirá de base para testes e implementações de algoritmos de otimização e futura transposição para GPU. A partir do conteúdo implementado será feita a validação do desempenho através do comparativo entre as técnicas implementadas, analisando cenas de diferentes complexidades e o tempo de rendering. Estas análises serão feitas utilizando, ou não, otimizações. 1.3 Estrutura do Trabalho Este trabalho está disposto na seguinte estrutura: o capítulo 1 aborda a fundamentação teórica dos conceitos envolvidos no algoritmo do Ray Tracer e na computação em GPU, o capítulo 2 aborda as novas funcionalidade adicionadas ao Ray Tracer desenvolvido para a disciplina de CGR. No capítulo 3 são abordados os trabalhos relacionados à esta pesquisa. No capítulo 4 são abordados os conceitos sobre a otimização por divisão espacial, e no capítulo 5 é abordada a otimização por hardware. Finalmente, no capítulo 6 são abordados os testes e os resultados obtidos neste trabalho.

23 20 2 Fundamentação Teórica Este capítulo aborda a fundamentação teórica levantada para a base de conhecimento utilizada na elaboração e aprimoração do Ray Tracer. São apresentados os conceitos do algoritmo do Ray Tracing e os conceitos de programação em GPU - Graphic Processing Unit, ou Unidade Gráca de Processamento. 2.1 Ray Tracer - Conceitos Ray Tracing é uma técnica de geração de imagens a partir do traçado original da luz (JENSEN; CHRISTENSEN, 2007). Como se sabe, a luz é propagada pelo meio em linhas retas e pode, ou não, sofrer alterações em seu percurso. Estas alterações vão desde fenômenos de absorção até fenômenos como reexão, sombra e refração. Para tanto, esta técnica consiste em propagar um raio e efetuar as devidas interações deste raio com o meio em que ele está. Como o Ray Tracing é uma técnica que busca simular de forma precisa as interações da luz com o meio, pode-se dizer que esta é uma técnica de fotorrealismo. Dessa forma pode-se dizer de antemão que o algorítmo do Ray Tracing simula a iteração de fontes primárias. A melhor maneira de denir a técnica de Ray Tracing e a forma em que os raios se propagam na cena é através do entendimento do modelo de câmera Pinhole, descrita a seguir Modelo de Câmera Pinhole Segundo (GLASSNER, 1989), talvez o modelo mais simples de câmera encontrado, o modelo pinhole consiste em uma caixa escura com um orifício para a passagem de luz em uma extremidade, e uma parede de projeção na extremidade oposta onde é colocado o lme fotográco. A luz que incide nos objetos que estão a frente do orifício sofre interação com os mesmos e, dependendo das características do

24 2 Fundamentação Teórica 21 material, pode ser reetida passando a tomar um novo rumo. Figura 2.1: O modelo de câmera pinhole Se esta nova direção adotada pelo raio de luz coincidir com o orifício, o raio de luz entra na câmera e é projetado na parede de projeção, conforme gura 2.1. Fica evidente que os demais raios de luz não serão captados pela câmera. Porém podem existir casos onde uma sequência de interações da luz pode desviar um raio e por conseguinte colocá-lo em direção ao orifício fazendo-o entrar na câmera. Se ao invés do orifício existisse um abertura, luzes de todas as direções seriam projetadas na parede de projeção ou lme, dessa forma a câmera não teria uma imagem direcionada ou focada em uma cena, e sim em todo o ambiente, provocando o embaralho dos raios de luz e gerando uma imagem desconexa, onde os raios seriam sobrepostos uns aos outros e a foto resultaria em uma imagem totalmente branca (exceto se não houver nenhum raio de iluminação, resultando então em uma imagem totalmente escura). Analogamente pode-se dizer que o orifício serve como um ltro de raios. Apenas os raios a ele direcionados serão projetados no lme. Quanto maior o orifício maior a quantidade de raios que poderão ser projetados no lme e consequentemente mais carregada de cor será a imagem. Todavia, na computação gráca, o modelo de câmera pinhole é modicado de forma que a parede de projeção é movida para a frente do orifício, e este passa a ser o olho da câmera, como pode ser visto na gura 1.1. Assim, para que um determinado objeto seja visível, não se faz mais necessário que ele passe pelo orifício e sim que ele passe pelo olho, ou seja, todo o raio que seria projetado no olho será projetado na parede de projeção e consequentemente fará parte da

25 2 Fundamentação Teórica 22 cena renderizada. A partir desse novo modelo, pode-se dizer que que a junção do olho e da parede de projeção forma-se uma pirâmide innita e todo raio nela contido e projetado em seu topo fará parte da imagem. A esta pirâmide dá-se o nome de frustum (AKENINE-MOLLER; HAINES, 2002) Traçado de Raios Um raio possui um ponto inicial (origem) e uma direção. A origem é o ponto de onde a câmera se apresenta na cena. No algoritmo do Ray Tracing a direção de um raio é calculada para cada pixel do plano de projeção. A partir disso pode-se calcular a direção em que determinado raio aponta. Como exemplo, tome-se um raio que parte do ponto (0, 0, 5) e se destina ao pixel (0, 0, 0). A sua direção é calculada por: Normalizando o vetor v teremos: v = (0, 0, 0) (0, 0, 5) (2.1) v = v = v = (0, 0, 5) (2.2) v (2.3) v = v 5 (2.4) v = (0, 0, 1) (2.5) Ray Tracer Inverso Versus Tradicional Existem basicamente duas formas de computar o traçado dos raios, a maneira tradicional e a maneira inversa. Embora as duas maneiras tenham o mesmo princípio e nalidade - traçar o caminho dos raios para renderizar a imagem - as duas técnicas possuem uma grande diferença: o desempenho (GLASSNER, 1989). Para isso se explicará o funcionamento das duas maneiras e posteriormente justicar-se-á a comum adoção da maneira inversa nos Ray Tracers existentes.

26 2 Fundamentação Teórica 23 Figura 2.2: Traçado de raios em uma cena normal. Retirado de (GLASSNER, 1989) Em uma câmera fotográca convencional, inúmeros raios sofrem interações com o meio e são posteriormente projetados em um lme fotográco. Embora para isso o ser-humano teve que aprender a dominar os fenômenos óticos, este processo é absolutamente natural. Os raios de luz, em sua natureza, tendem a propagar-se em linha reta, até que atinjam um objeto. Esse objeto pode simplesmente absorver esses raios bem como refratá-los ou reeti-los. Mas a câmera não precisa ter o conhecimento de exatos quantos raios serão projetados no lme fotográco, pois, bem se sabe, a grande maioria dos raios existentes na cena não será projetada no lme (ver gura 2.2). O mesmo não ocorre na técnica do Ray Tracing. Em uma simulação, deve se ter o conhecimento das principais variáveis existentes, nesse caso, em se tratando de uma simulação de raios de luz, na técnica do Ray Tracing deve se ter conhecimento de todos os raios que irão realmente passar pelo olho da câmera. Mas como determinar entre os inúmeros raios, quais serão úteis à cena? Isso pode ser feito através do Ray Tracing inverso. Na técnica de Ray Tracing inverso, um raio é disparado do olho da câmera e direcionado à um pixel da cena - o lme fotográco da cena renderizada - esse raio continua até interceptar, ou não, um objeto da cena. Para saber se um raio vai interceptar um objeto, utiliza-se algoritmos de detecção de colisões, que serão vistos mais a frente. Quando um raio colide com um objeto, as propriedades do objeto são processadas e a partir delas são calculadas as refrações, absorções e reexões.

27 2 Fundamentação Teórica 24 Entretanto, através da técnica de Ray Tracing inverso, não se faz necessário calcular os raios que jamais farão parte da cena, pois estes jamais passaram pelo frustum (AKENINE-MOLLER; HAINES, 2002). Assim, onde antes se tinham inúmeros de raios, agora ltrados, são conhecidos somente os raios pertinentes à renderização da cena, diminuindo consideravelmente o número de iterações do algoritmo. Assim, com base na técnica de Ray Tracing inverso, pode-se estabelecer um algoritmo que direcione os raios para cada pixel da cena e efetue as computações de intersecção e iluminação, este algoritmo é dado por (APPEL, 1963 apud BIKKER, 2008): para cada pixel da tela construir um raio da câmera para o pixel interceptar o raio com as primitivas da cena pintar o pixel com a cor resultante da intersecção Iluminação e Texturização Após ser visto como o raio se comporta quanto sua direção na cena, faz-se necessária uma abordagem quanto a forma como serão tratados os efeitos de iluminação e texturização dos objetos que compõem a cena renderizada. Nesta seção serão vistos os efeitos de sombra, reexão e texturização phong Sombra Na natureza, quando um raio proveniente de uma fonte luminosa encontra um objeto em seu caminho, ocorre uma interação com as propriedades do objeto em questão e, através dessas propriedades, se o objeto for opaco, tem-se um exemplo de sombra.

28 2 Fundamentação Teórica 25 Figura 2.3: Raios de sombra De forma análoga, pode-se dizer que quando um raio intersecta um objeto, um ponto de intersecção é obtido e a partir desse ponto é gerado um novo raio em direção à cada fonte de luz existente na cena, ou seja, o novo raio surge da intersecção do raio antigo ao objeto, e assim, quanto maior o número de fontes de luz, maior o custo computacional (WANG; SHIH; CHANG, 2001). Este novo raio percorre a cena até encontrar outro objeto ou simplesmente até chegar ao seu destino nal: a luz (gura 2.3, raio L a ). Caso esse raio encontre um objeto, as propriedades desse objeto são obtidas e analisadas. Se o objeto for opaco, o raio não atinge a luz e consequentemente projeta uma sombra (gura 2.3, raio L b ). Um raio enviado do objeto à luz é chamado de raio de sombra (GLASS- NER, 1989) e se ele colidir com um objeto antes de chegar à luz, ele é ignorado pois se trata de um raio sem informações adicionais. Já o raio que incide diretamente em uma luz é chamado de raio de iluminação e nele estarão contidas as informações da luz para o cálculo da iluminação daquela fonte luminosa no objeto Reexão Assim como nos raios de sombra, um raio de reexão surge da colisão de um raio com um objeto. Após a ocorrência dessa colisão, as propriedades do material que constitui o objeto são vericadas e a partir das mesmas é obtido o índice de reexão do material que compõe o objeto, ou seja, a capacidade do objeto retransmitir os raios nele colididos. Um raio reetido é calculado pela seguinte fórmula, adaptado de (AZE-

29 2 Fundamentação Teórica 26 VEDO; CONCI, 2003): R = V 2 ( V N) N (2.6) onde R é o vetor do raio reetido, V é o vetor do raio incidente e N é a normal calculada a partir da superfície do objeto e o ponto em que o raio incide nela. Figura 2.4: Raio de luz reetido três vezes até chegar ao plano de projeção Assim, quando um raio incide em um objeto reetor, um novo raio com a direção calculada pela fórmula 2.6 é gerado e propagado pela cena, até que ele atinja um objeto opaco. A cor desse objeto é então projetada no objeto inicial e este passa a reetir aquele. Obviamente, um raio pode ser reetido mais de uma vez. A gura 2.4 explica de forma mais detalhada a reexão em Ray Tracers, mostrando o comportamento de um raio reetido três vezes até ser projetado no plano de visão. Basicamente, o cálculo da cor nal de um ponto em um objeto reetor é determinado pela multiplicação de sua própria cor com a cor proveniente do raio por ele disparado (raio de reexão). A este valor ainda se multiplica o fator de reexão do objeto. Quando um raio de reexão não atinge outro objeto, esse raio possui cor neutra, logo, a cor para aquele ponto do objeto reetor será a cor denida para o ambiente da cena (usualmente a cor preta). Ainda quanto às reexões, existe a técnica chamada de reexão difusa, que cria uma reexão com aspecto rugoso. Nesta técnica é gerado um número X de raios aleatórios englobados por um cone imaginário. A média das cores resultantes dos raios é calculada e a partir dela é obtida uma cor correspondente. O custo computacional da reexão difusa é relativo ao número de raios aleatórios

30 2 Fundamentação Teórica 27 gerados e à qualidade nal da reexão, uma vez que quanto maior o número de raios aleatórios mais suavizada será a reexão difusa Transparência Quando um raio incide em um objeto transparente, ele passa pelo objeto e continua seu caminho até outra interação. Porém o raio sofre alterações em sua direção. Essas alterações são em função do índice de refração do material que compõe o objeto e constituem raios de transparência. Figura 2.5: Raio de luz refratado Na gura 2.5 pode-se observar que o raio R passa pelo objeto A e sofre uma alteração em sua direção. Em seguida, o raio sofre outra alteração ao sair do objeto e segue seu caminho até colidir com o objeto opaco B. A refração é calculada cada vez que o raio troca de meio, devido a diferença da velocidade de propagação da luz nos diferentes meios. A nova direção do raio refratado é calculada pela seguinte fórmula (GLASSNER, 1989): cos I = ( N D) (2.7) cos T 2 = 1 n 2 (1 cos I 2 ) (2.8) T = (n D) + n cos I cos T 2 ) N (2.9) onde: n representa o índice de refração do objeto; D é o vetor direção do raio incidente; N é o vetor normal da intersecção do raio com o objeto.

31 2 Fundamentação Teórica 28 Outro fenômeno envolvido na transparência é o da absorção da luz no meio que compõe o objeto, dado pela fórmula, (BIKKER, 2004b): d = (C 0.15 dist) (2.10) A = e d (2.11) onde: C é a cor do objeto transparente; dist é a distância percorrida internamente no objeto; e é a constante de absorção do objeto. Dessa forma, quanto maior a distância que o raio percorrer dentro do objeto, maior será a absorção que a luz sofrerá em seu interior Colorização Phong A texturização phong consiste em computar a iluminação para cada pixel ao invés de para cada vértice do objeto (AKENINE-MOLLER; HAINES, 2002). Dessa forma é possível construir uma suavização da iluminação em todo o objeto, tornando-o mais parecido com a realidade. Para calcular a colorização phong deve-se então obter o valor da normal para cada intersecção raio-primitiva e através dela calcular a iluminação Ray Tracer Recursivo Para que seja possível simular com maior realismo as interações sofridas por um raio de luz em um determinado ambiente, se faz necessário utilizar a recursividade. Dessa forma quando um raio colide com um objeto não opaco, um novo raio é gerado e calculado novamente. Assim um raio originalmente disparado pela câmera, pode gerar um raio de transparência que por sua vez pode gerar outro raio de transparência e nalmente terminar como um raio de iluminação. O mesmo também permite que um determinado objeto possa reetir o raio e simultaneamente refratá-lo.

32 2 Fundamentação Teórica 29 Figura 2.6: Ray Tracer recursivo, retirado de (GLASSNER, 1989) A gura 2.6 mostra um raio E inicialmente disparado pelo olho da câmera, e que sofre diversas (e até simultâneas) interações com os objetos que compõem a cena. Nesta gura, o raio E intersecta o plano 3. Para esta intersecção são gerados quatro novos raios: um raio de transparência (T 1 ), um raio de reexão (R 1 ) e dois raios de sombra, sendo que o raio com L A (S 1 ) é diretamente iluminado e o raio com L B (S 2 ) é um raio de sombra, pois, a esfera 4 é intersectada por (S1) antes que este chegue a L B. Entretanto, faz-se necessário limitar a profundidade da recursividade para que o algoritmo do Ray Tracing não entre em um loop, não chegando ao nal de sua execução. Quanto maior a profundidade da recursão, melhor serão tratados os efeitos como reexão e refração, pois suas simulações serão mais parecidas como as que ocorrem na natureza, onde não existe um limite para a recursividade de iterações Aliasing e Anti-aliasing Imagens geradas no computador, comumente apresentam um efeito desagradável de serrilhado. Este fenômeno, conhecido como aliasing, acontece principalmente porque os dispositivos de vídeo possuem uma resolução limitada. Por exemplo: quando desenha-se um círculo na tela, o que se está fazendo na verdade é aproximar

33 2 Fundamentação Teórica 30 por um conjunto limitado de pixels uma entidade geométrica que possui innitos pontos, ou seja, estamos fazendo uma discretização do círculo. Figura 2.7: O problema de aliasing Na verdade, segundo (GLASSNER, 1989), é impossível eliminar o problema de aliasing. Pois mesmo que se aumente a quantidade de pixels gerados para uma imagem, sempre é possível ampliar a imagem ao ponto dos pixels se tornarem visíveis novamente (GLASSNER, 1989). A gura 2.7 mostra um polígono (2.7 (a)) discretizado em uma grade de baixa resolução (2.7 (b)); na gura 2.7 (c), é exibido o mesmo polígono após passar por um tratamento de anti-aliasing. Existem técnicas para reverter o efeito do aliasing, chamadas de antialiasing, como por exemplo a técnica do supersampling, que consiste em basicamente aumentar o número de raios para cada pixel da imagem. Onde anteriormente era gerado apenas um raio por pixel (originado no centro de cada pixel) agora são gerados vários raios por pixel em posições ordenadas (grade). Como resultado, obtem-se uma suavização das cores dos pixels de borda suavizando por consequência o efeito de serrilhado da imagem Algoritmos de Intersecção A principal função em um algoritmo de Ray Tracer é detectar se determinado raio colide ou não com um objeto. Um algoritmo de intersecção, assim como os demais algoritmos, é considerado ótimo, quando ele chega a um resultado com o menor número possível de cálculos. Nesse sentido, para que um Ray Tracer seja considerado eciente utilizam-se algoritmos que através de um número pequeno de cálculos já conseguem prever se determinado raio pode vir a colidir com determinado objeto. Caso essa armação seja verdadeira, então são realizados cálculos

34 2 Fundamentação Teórica 31 mais complexos am de determinar com exatidão o ponto do objeto em que o raio colidiu (dado pela distância dessa colisão, uma vez que já se tem a equação da reta a partir do vetor direção do raio). É necessário garantir que o algoritmo retornará o objeto colidido mais próximo a seu ponto de origem, pois os demais objetos na rota de colisão não serão alcançados por um raio originado na câmera (raio primário), e sim, talvez, por raios originados em outros objetos (raios secundários). Para isso, a cada iteração do algoritmo, quando é vericado se o objeto realmente colide com tal raio, é vericado também se a distância em que esta colisão ocorre é menor do que a distância dos cálculos anteriores. Nos algoritmos, o tipo de retorno é comumente denido por constantes numéricas (GLASSNER, 1989): HIT - O Raio intercepta o objeto, MISS - O raio não intercepta o objeto e INPRIM - O raio está dentro do objeto. 2.2 GPU - Conceitos O hardware gráco, é talvez a parte mais poderosa, em termos de processamento, nos computadores para usuários comuns. Seus chips, conhecidos como Unidades Grácas de Processamento, ou GPUs - Graphics Processing Units, passaram de dispositivos periféricos à modernos, poderosos, e ecientes processadores programáveis. Muitos pesquisadores e desenvolvedores se mostraram interessados em estudar, aprimorar e, sobretudo, aproveitar o alto desempenho fornecido pelo hardware gráco (OWENS et al., 2005). O hardware gráco tem sido otimizado para a rasterização de triângulos, guardar informações de cor e profundidade de pixels etc. Mais recentemente, a computação de pixels e cores se tornou programável, dando liberdade ao programador, enquadrar as utilidades do hardware de acordo com suas necessidades. Com a criação de tais programas, os pixel shaders, sugiram modelos computacionais evoluídos, que suportam modelos sosticados de colorização e texturização. Com o avanço das técnicas de pixel shaders, combinados com a otimização da computação de triângulos, estão sendo alcançados realismos impressionantes em

35 2 Fundamentação Teórica 32 imagens sintetizadas em tempo real (LOOP; BLINN, 2006). Além do cálculo de colorização, os programas podem ser utilizados para o cálculo de diversos algoritmos, bastando que os dados a ele passados e retornados sejam mascarados através de texturas. Esta área de programação em GPU se denomina GPGPU (General-Purpose Computing on Graphics Processing Units ) e consiste em usar o alto processamento gráco para o processamento de dados não grácos. Figura 2.8: Desempenho de Ponto-utuante nas GPUs. Retirado de (OWENS et al., 2005) A gura 2.8 mostra a evolução da computação de pontos-utuantes por segundo das GPU's em relação aos processadores. Nesta gura pode-se observar que, mesmo com o ganho de desempenho com o surgimento dos processadores dual-core, seu poder de processamento de pontos-utuantes está muito aquém do apresentado pelas placas de vídeo, que sofreram um grande avanço em quatro anos. O grande avanço das GPUs em comparação com as CPUs não se dá em função do emprego de metais semicondutores de melhor qualidade nem da grande tecnologia empregada no processo de fabricação, uma vez que tanto os fabricantes de GPUs como de CPUs possuem tecnologia avançada e utilizam metais semicondutores de alta eciência. Tal avanço se dá em função da arquitetura utilizada nos processadores: CPUs são otimizados para alta performance em códigos seqüenciais, assim, muitos dos seus transistores são dedicados ao suporte de tarefas não compu-

36 2 Fundamentação Teórica 33 tacionais, como os utilizados para a memória cache. Em contrapartida, o elevado paralelismo do hardware gráco permite que GPUs utilizem mais transistores para a computação, alcançando assim, elevado grau de processamento aritmético com o mesmo número de transistores (OWENS et al., 2005) Pipeline de Processamento Todo o processamento de uma GPU é feito através de um pipeline. Este pipeline é desenvolvido para permitir um grande paralelismo entre as execuções das tarefas da GPU. Um pipeline é dividido em diferentes etapas, sendo que as primitivas geométricas passam por todas elas. Cada uma destas etapas é implementada de forma separada no hardware, constituindo tarefas processadas paralelamente (CHRISTEN, 2005). Figura 2.9: Pipeline de uma GPU A entrada do pipeline (gura 2.9) é a lista de geometrias expressas em vértices na coordenada do objeto; a saída é o próprio framebuer (conjunto de pixels que compõem a imagem). O primeiro estágio do pipeline, (vertex), transforma cada vértice do espaço do objeto para o espaço da tela e realiza cálculos de iluminação em cada vértice. A saída desta etapa são triângulos no espaço da cena. O próximo estágio (rasterização) consiste em rasterizar, ou seja, determinar a posição na tela de cada triângulo e interpolar os parâmetros de cada vértice do triângulo. Como resultado, esta etapa fornece cada pixel que compõe cada triângulo, este resultado é chamado de fragment. O terceiro estágio (fragment) computa a colorização para cada pixel, usando os valores de interpolação calculados no estágio

37 2 Fundamentação Teórica 34 vertex. Esta implementação pode utilizar valores da memória global, guardados no formato de texturas; tipicamente, o estágio fragment gera endereços na memória de textura, atribui seus valores de textura associados, e os usa para computar a cor nal do pixel. No estágio nal os pixels são guardados em um vetor bidimensional, concluindo a passada pelo pipeline (OWENS et al., 2005). Entretanto, em função da grande diculdade de se programar um hardware gráco em baixo nível, foram criadas linguagens que manipulam e implementam funções dentro do pipeline da GPU em alto nível de programação. Estas linguagens são abordadas na próxima seção Linguagens para Colorização em Alto-Nível As linguagens para a manipulação em GPU tem algo em comum: são desenvolvidas em torno da idéia de que GPUs produzem imagens. Por isso, tais linguagens são comumente chamadas de linguagens de colorização (shading languages). Assim, as linguagens de colorização são linguagens que, compiladas em um shader para vértices e um shader para colorização de pixels, produzem uma imagem descrita pelo programa. Tais linguagens são vantajosas devido aos seguintes aspectos (NVIDIA, 2005): Uma linguagem de alto-nível é mais fácil de manipular, facilitando ajustes nos, durante a construção do shader. Por ser de rápida prototipagem, o ajuste da linguagem de shader pode ser resumido a uma vericação se o resultado visual obtido é satisfatório ou não, e caso não seja, manipula-se o código am de obter o resultado desejado; Os compiladores otimizam o código automaticamente e efetuam tarefas de baixo nível, como a alocação de registradores, muito suscetíveis a erros e falhas; Códigos para shading são mais fáceis de serem lidos e entendidos. Eles também permitem que novos shaders sejam criados através de modicações em um outro shader;

38 2 Fundamentação Teórica 35 Shaders construídos em uma linguagem de alto nível são facilmente portados para uma ampla gama de plataformas de hardware, diferentemente dos shaders escritos em código Assembly. Atualmente um shader pode ser desenvolvido em HLSL, GLSL e Cg (ENGEL, 2003). Estas três linguagens serão descritas nas próximas subseções: Cg A linguagem Cg (C for Graphics) é baseada em C, se parecendo exatamente como um código em C, apresentando a mesma sintaxe de declaração de variáveis, chamadas de funções, e tipos de dados. Esta linguagem é elaborada pela Nvidia em colaboração com a Microsoft, e está na versão 2.0 ( ) 1. Esta linguagem permite a escrita de programas para os processadores de vértices e pixels. O código em Cg pode ser compilado em código Assembly entendido pela GPU, assim como executado na hora, de acordo com a demanda (um arquivo lido e interpretado) (NVIDIA, 2005). A Nvidia disponibiliza juntamente com a linguagem Cg uma especicação de shader denominada CgFX. Esta especicação é destinada à artistas grácos e desenvolvedores de aplicações em tempo real. Este formato fornece vários bene- cios, entre eles (NVIDIA, 2005): Encapsulamento de múltiplas técnicas de rendering, permitindo manipulação de níveis de detalhe, funcionalidades e desempenho; Suporte para linguagem Cg em Assembly, e shaders de função xa; Parâmetros editáveis e funções para a Interface Gráca de CgFX 2 embutidas no arquivo; Múltiplos shaders. Assim, em termos práticos, juntando shaders para vértices em Cg e shaders para pixels, desenvolvedores podem criar um efeito completo, através de 1 Documentação da linguagem: 2

39 2 Fundamentação Teórica 36 uma linguagem simples e bem difundida na literatura. O manual apresentado em (NVIDIA, 2005) aborda os formalismos e métodos de programação em Cg e CgFX HLSL A linguagem HLSL 3 (High Level Shader Language é uma linguagem proprietária desenvolvida pela Microsoft para uso com a API Direct3D. Esta linguagem é muito similar com a Cg, pois foi desenvolvida juntamente com ela, e foi incluída na versão nove da biblioteca do DirectX, fornecida pela Microsoft. A linguagem HLSL não possui uma versão atual especíca, uma vez que ela faz parte da biblioteca de manipulação gráca DirectX (ENGEL, 2003). A linguagem HLSL permite que seu código seja executado a partir da leitura (carregamento do aplicativo) ou a partir do código Assembly, compilado por um compilador incluído no pacote de desenvolvimento do DirectX (DirectX SDK) e suporta os shaders de vértice e pixel, além de um shader de geometria. O shader de geometria realiza um processamento por primitiva, permitindo seleção de material e detecção de silhuetas. Este shader pode gerar novas primitivas para, por exemplo, gerar volumes de sombra por extrusão, ou texturização multi-facial de um cubo com renderização de uma única passada (ENGEL, 2003) GLSL A GLSL 4 (OpenGL Shading Language) é uma linguagem de shader criada para a utilização no pipeline de render da bibliotéca gráca OpenGL. O pipeline do OpenGL permite que qualquer estado utilizado pelo shader seja automaticamente obtido e fornecido aos shaders. Isto permite que a aplicação use os estados do OpenGL para manipulação e utilização nos shaders (KESSENICH, 2006). A linguagem GLSL assim como a HLSL fornece os processadores de vértices e pixels, permitindo que sejam alteradas tanto as informações do posicionamento dos vértices que compõem uma primitiva como os dados resultantes da colorização da mesma. Suas variáveis, funções e tipos de dados são denidos de

40 2 Fundamentação Teórica 37 forma semelhante à linguagem C. Os shaders da linguagem GLSL são simplesmente um conjunto de strings que são passadas pelo driver do hardware da placa gráca para compilação. Dessa forma, os shaders podem ser criados em tempo de execução, ou lidos de uma arquivo (KESSENICH, 2006). Este trabalho utiliza a linguagem Cg (C for Graphics) pois ela apresenta ampla especicação, concentrada no site da Nvidia 5, e a existência de fóruns de discussão sobre o assunto. Assim, a partir do grande desempenho da computação pixel-a-pixel efetuada pelas GPUs, mesmo as destinadas à usuários domésticos, pretende-se utilizar aceleração por hardware gráco como maneira de aumentar o desempenho do Ray Tracer em questão. Utilizar a linguagem Cg para computar a colorização de um pixel nal pode vir a ser uma maneira simples (devido à facilidade de implementação de uma linguagem de alto-nível e ampla abordagem na literatura) em contrapartida a grande complexidade em se otimizar um Ray Tracer. 5

41 38 3 Ampliação das Funcionalidades do Ray Tracer Neste capítulo são abordadas as funcionalidade adicionadas ao Ray Tracer previamente desenvolvido. Entre as funcionalidades que foram adotadas encontra-se a malha de triângulos, sendo através dela que se pode testar o desempenho do algoritmo comparando o tempo de rendering de cenas complexas (muitos triângulos) para cenas mais simples (poucos triângulos). Outra funcionalidade abordada neste capítulo é a texturização das primitivas, que permite a elaboração de cenas com maior realidade, simulando efeitos e cores, além da reexão e transparência. Dessa forma, neste capítulo serão explanados os testes de intersecção raio-triângulos e a texturização das primitivas. Através da renderização de triângulos e esferas se torna possível a geração de primitivas mais complexas, aumentando assim a capacidade de representar diferentes modelos e objetos. 3.1 Novas primitivas Nesta seção são abordados os testes de intersecção para os triângulos. Testes de intersecção em Ray Tracers são calculados determinando se os raios partindo da câmera em direção à cena intersectam ou não com determinada primitiva. A equação de um raio é denida por: R(t) = P + t ˆd 0 t (3.1) onde, P é o ponto de origem e ˆd é o vetor direção ( d) normalizado. A nova primitiva adicionada ao Ray Tracer é a malha de triângulos. Para a malha de triângulos faz-se necessário especicar um modelo de arquivo que contenha as informações de topologia e geometria que denam o posicionamento dos triângulos na cena.

42 3 Ampliação das Funcionalidades do Ray Tracer Malhas de Triângulos Um objeto pode ser representado de várias formas possíveis, seja por equações matemáticas que o dena (utilizado nas esferas e planos renderizadas por este Ray Tracer), chamadas de equações quadráticas, ou através de componentes planares, como os três pontos coplanares que denem um triângulo. Essas duas formas são comumente usadas em Ray Tracers por apresentarem um cálculo mais simplicado de intersecção raio-primitivas (SCHNEIDER; EBERLY, 2002). Uma malha de triângulos é um conjunto de triângulos que juntos formam um objeto mais complexo. A exibilidade de uma malha permite que todas as guras geométricas possam ser representadas através dela, entretanto seu uso se torna um problema quando em peças muito complexas (com uma grande variação de posições e muitos triângulos) justamente pelo fato do número de triângulos acarretar em um elevado tempo de render. Cada triângulo de uma malha possui as informações de sua geometria (posição de cada um de seus três vértices no espaço 3D). Dessa forma, o cálculo de intersecção de uma malha de triângulos se dá através do teste de intersecção de um raio com todos os triângulos dessa primitiva. Assim, o Ray Tracer não manipula a malha como somente um objeto, e sim como um conjunto de triângulos (GLASSNER, 1989). Entretanto, para que o Ray Tracer possa ler as informações de um objeto denido por uma malha de triângulos, faz-se necessário denir um tipo de arquivo deste tipo. Para este trabalho é utilizado o formato 3ds, pois ele apresenta uma ampla divulgação de primitivas na Internet, além de elevado número de software, como o Wings 3D 1, que fazem a conversão de outros formatos para este. O leitor desenvolvido para esta especicação foi retirado de (VELSEN; FERCOQ, 1997). Embora este formato de arquivo contenha informações para outros tipos de primitivas, como quadriláteros, curvas etc. todas elas serão ignoradas na leitura, sendo pertinente somente as informações sobre triângulos. Com a topologia da malha de triângulos englobada nas informações da 1 Wings 3D -

43 3 Ampliação das Funcionalidades do Ray Tracer 40 cena é possível determinar as intersecções de cada raio com os objetos pertencentes a esta cena. Assim, dene-se a seguir como é calculada a interseção raio-triângulo para os triângulos existentes na cena Intersecções Raio-Triangulo Segundo (SCHNEIDER; EBERLY, 2002), uma maneira de calcular a intersecção de um componente linear com um triângulo seria, vericar a intersecção dele com um plano que contenha o triângulo, e, após isso, determinar se este ponto de intersecção esta dentro do triângulo. Para se determinar se o ponto está realmente dentro do triângulo pode-se simplesmente calcular a projeção dos vértices do triângulo e do ponto em um plano alinhado a um dos eixos e assim vericar a intersecção pontotriângulo em 2D. Esta técnica, embora simplique o cálculo nal da intersecção, exigirá que seja calculado o vetor normal para cada triângulo. Entretanto, uma melhor abordagem é estipulada por (MOLLER; TRUM- BORE, 1997 apud SCHNEIDER; EBERLY, 2002): um triângulo é simplesmente um sequência de vértices {V 0, V 1, V 2 }, e qualquer ponto em um triângulo pode ser denido por sua posição relativa aos seus vértices (SCHNEIDER; EBERLY, 2002): Q u,v,w = wv 0 + uv 1 + vv 2 (3.2) onde u + v + w = 1. A tupla (u, v, w) é chamada de coordenada de baricentro de Q, mas como w = 1 (u + v) então somente o par (u, v) é usado. Uma intersecção raio-triangulo pode ser dada pela substituição da equação 3.1 na equação 3.2: P + t ˆd = (1 (u + v))v 0 + uv 1 + vv 2 (3.3) que pode ser expandida em: [ ˆd ] V 1 V 0 V 2 V 0 t u v = [P V 0] (3.4) Como cada uma dessas variáveis são vetores, pode-se vericar que este é um sistema de três equações lineares, com tres variáveis desconhecidas. Uma maneira de resolver este sistema é através da regra de Cramer(SCHNEIDER; EBERLY, 2002):

44 3 Ampliação das Funcionalidades do Ray Tracer 41 Assim, pela regra de Cramer, temos: t P V u = 1 0 V 1 V 0 V 2 V 0 ˆd V 1 V 0 V 2 V ˆd P V 0 V 2 V 0 0 v ˆd V 1 V 0 P V 0 ((P V 1 0 ) (V 1 V 0 ) (V 2 V 0 ) = ( ˆd ( (V 2 V 0 )) (V 1 V 0 ) ˆd (V 2 V 0 )) (P V 0 ) ((P V 0 ) (V 1 V 0 )) ˆd (3.5) (3.6) Quando a equação é resolvida para t, u, e v, ca possível determinar a intersecção com o triângulo vericando seus valores para que satisfaçam a seguinte condição: 0 u 1, 0 v 1, e u + v 1. Caso esta condição seja alcançada, a intersecção ocorre dentro do triangulo, caso contrário a intersecção ocorre no plano do polígono, mas fora do triângulo. O seguinte pseudocódigo apresentado por (SCHNEIDER; EBERLY, 2002) verica a intersecção raio-tirângulo: bool I n t e r s e c L i n h a T r i a n g u l o ( { Triangulo3D t r i, Linha3D linha, I n t e r& info, f l o a t epselon, Ponto3D& i n t e r s e c c a o ) Vetor3D e1, e2, p, s, q ; f l o a t t, u, v, tmp ; e1 = t r i. v1 t r i. v0 ; e2 = t r i. v t r i. v0 ; p = Cross ( l i n h a. direcao, e2 ) ; tmp = Dot (P, e1 ) ; i f (tmp > epselon && tmp < epselon ) return f a l s e ; tmp = 1. 0 / tmp ; s = l i n h a. origem t r i. v0 ;

45 3 Ampliação das Funcionalidades do Ray Tracer 42 u = tmp Dot ( s, p) ; i f (u < 0. 0 u> 1. 0 ) return f a l s e ; i f (u + v > 1. 0 ) return f a l s e ; t = tmp Dot ( e2, q ) ; } i n f o. u = u ; i n f o. v = v ; i n f o. t = t ; i n t e r s e c c a o = l i n h a. origem + t l i n h a. d i r e c a o ; return true ; Dessa forma ca possível computar se um determinado raio intersepta os triângulos de uma malha, vericando a condição para cada triangulo pertencente à esta malha. Caso esta intersecção ocorra, são então calculados os valores de colorização em função da luz e cor do objeto. Como o número de triângulos em uma malha é proporcional à qualidade do objeto que esta malha representa (quanto mais triângulos mais suavizado o objeto é), a quantidade de triângulo causará um maior número de testes de intersecção e, consequentemente, um maior custo computacional para a renderização da cena. Isto justica o fato de comumente a renderização de malhas de triângulos estar vinculada à algoritmos de aceleração, abordados na seção Texturização A texturização é utilizada para dar maior realismo aos objetos de uma cena. Atribuir uma cor única ao objeto, mesmo que esta varie de acordo com a iluminação, torna a imagem nal muito aquém do realismo de uma cena com objetos que utilizem texturização. A texturização permite que as cores do objeto variem e sejam controladas por mapas (guras) de cores. Comumente utilizam-se bitmaps para a texturização de objetos. Segundo (AZEVEDO; CONCI, 2003), um

46 3 Ampliação das Funcionalidades do Ray Tracer 43 bitmap é uma imagem produzida por uma matriz xa de pixels coloridos. Assim, qualquer arquivo de imagem pode ser lido e a partir do mesmo pode ser obtido a matriz de cores da textura. Entretanto, faz-se necessário determinar para cada pixel resultante da intersecção de um raio com uma primitiva texturizada, qual é o pixel correspondente na textura, ou seja, denir um pixel no espaço 2D da textura que represente um pixel no espaço 3D do objeto. Isto é feito através do mapeamento UV. Os pixels correspondentes a um objeto 3D na textura são comumente chamados de texels (AKENINE-MOLLER; HAINES, 2002), e são os menores elementos de uma textura (texture element). Um texel é obtido em função dos valores u e v, que nada mais são do que as coordenadas correspondentes à largura e a altura da imagem, respectivamente. Assim, todo o cálculo de texturização vem em função de determinar para um ponto em um objeto no espaço da cena [x, y, z], um valor correspondente a sua textura no espaço bidimensional da imagem [u, v] (BARSHATZKY, 1992). Esse cálculo, em síntese, é em função da projeção da imagem no objeto. As funções de projeção comumente usadas são as esféricas, cilíndricas e planares (BIER; SLOAN, 1986; BARSHATZKY, 1992; LANDER, 2000); porém outras formas podem ser utilizadas. Por exemplo, as normais de um objeto podem ser utilizadas a m de determinar o valor do texel em uma textura, criando assim efeitos diferentes para peças com normais suavizadas (pouca transição entre normais vizinhas) e normais não suavizadas (muita transição entre normais vizinhas). A projeção esférica lança pontos sobre uma esfera imaginária centrada em torno de um ponto, tendo seu mapeamento baseado nas suas coordenadas polares. Para a obtenção de u, a esfera é analisada em todo o seu comprimento (comprimento da circunferência) que é 2π radianos. Assim, a matriz da textura tem sua longitude computada em 0 para o ponto inicial e 2π para o ponto extremo. De semelhante forma, o cálculo de v é em função da metade da esfera que é de π radianos e a latitude do texel correspondente na textura varia de 0 a π (AKENINE- MOLLER; HAINES, 2002). Para projeções cilíndricas os valores u da projeção são calculados da

47 3 Ampliação das Funcionalidades do Ray Tracer 44 mesma forma como na projeção esférica. Já os valores v são computados em função da distância em torno do eixo de denição do cilindro. Esta projeção é útil para objetos com eixos de denição, como superfícies de revolução. Entretanto, esta projeção ocasiona distorções quando a superfície é quase perpendicular ao eixo de denição do cilindro (BARSHATZKY, 1992). Projeções planares são como um projetor de slides, onde os raios são projetados em uma direção e a textura é aplicada em todas as superfícies do objeto. Projeções planares utilizam a projeção ortográca, que faz com que todos raios de textura cheguem com um mesmo ângulo ao objeto (AKENINE-MOLLER; HAINES, 2002). Entretanto, os valores obtidos para u e v são reais, enquanto o posicionamento em uma matriz de textura é inteiro. Isto permite que um mesmo pixel de textura seja utilizado para pontos vizinho em uma primitiva, causando um erro de visualização e diminuindo o realismo da imagem nal. Para solucionar este problema, utiliza-se a ltragem de texturas (BIKKER, 2004a). Figura 3.1: Mapeamento Bilinear. Retirado de (BIKKER, 2004a) A ltragem de texturas utilizada neste trabalho é a bilinear. Esta ltragem consiste em calcular três pixels vizinhos a um texel (pixel utilizado na textura) e, com base na área utilizada por cada um desses quatro pixels, calcular a média da colorização entre eles. A gura 3.1 mostra quatro pixels de uma textura sendo utilizados. Para o desenvolvimento do Ray Tracer em questão são utilizados os mapeamentos planares e esféricos. O mapeamento planar é feito para os planos e

Bruno Pereira Evangelista. www.brunoevangelista.com

Bruno Pereira Evangelista. www.brunoevangelista.com Bruno Pereira Evangelista www.brunoevangelista.com 2 Introdução Shaders Pipeline de Renderização Evolução dos Shaders Como Programar Shaders Programando Shaders com XNA Ferramentas Conclusões 3 Durante

Leia mais

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora

OpenGL. Uma Abordagem Prática e Objetiva. Marcelo Cohen Isabel Harb Manssour. Novatec Editora OpenGL Uma Abordagem Prática e Objetiva Marcelo Cohen Isabel Harb Manssour Novatec Editora Capítulo 1 Introdução A Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento

Leia mais

Trabalho de Fundamentos da Computação Gráfica

Trabalho de Fundamentos da Computação Gráfica Trabalho de Fundamentos da Computação Gráfica Melhorias para o Ray Tracing 1. Níveis de pré-visualização 2. Paralelização com Buckets (na CPU) 3. Anti-aliasing (Supersampling) 4. Passes a. Mapa de Profundidade

Leia mais

Utilização. de Shaders de efeitos realistas para jogos. Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

Utilização. de Shaders de efeitos realistas para jogos. Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais Utilização de Shaders para criação de efeitos realistas para jogos Bruno Pereira Evangelista Pontifícia Universidade Católica de Minas Gerais Sumário 2/48 Apresentação pessoal Introdução Pipeline de renderização

Leia mais

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

Rendering. Por Angelo Luz

Rendering. Por Angelo Luz Rendering Por Angelo Luz Sumário O que é Rendering? Qual a utilidade? Alguns Componentes do Rendering Técnicas mais utilizadas Métodos de utilização O que é Rendering? Rendering é o processo de criação

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Placa de vídeo em CUDA

Placa de vídeo em CUDA Placa de vídeo em CUDA Matheus Costa Leone de Souza Krystian Aparacido Resumo Quando você tem um cálculo que possa ser grande demais para você realizar a mão, a primeira solução que lhe vem a cabeça é

Leia mais

Visualização Científica. Pedro de Botelho Marcos Março/2008. Núcleo de Computação Científica Tópicos Avançados em Computação II

Visualização Científica. Pedro de Botelho Marcos Março/2008. Núcleo de Computação Científica Tópicos Avançados em Computação II Pedro de Botelho Marcos Março/2008 1 Sumário Introdução Ciclo de Visualização Dados 3D Dados Vetoriais Referências 2 Introdução O que? Representação visual de dados. Para? Facilitar a análise de grandes

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Tecnologia PCI express. Introdução. Tecnologia PCI Express Tecnologia PCI express Introdução O desenvolvimento de computadores cada vez mais rápidos e eficientes é uma necessidade constante. No que se refere ao segmento de computadores pessoais, essa necessidade

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

MUDANÇAS NA ISO 9001: A VERSÃO 2015

MUDANÇAS NA ISO 9001: A VERSÃO 2015 MUDANÇAS NA ISO 9001: A VERSÃO 2015 Está em andamento o processo de revisão da Norma ISO 9001: 2015, que ao ser concluído resultará na mudança mais significativa já efetuada. A chamada família ISO 9000

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

TRABALHO COM GRANDES MONTAGENS

TRABALHO COM GRANDES MONTAGENS Texto Técnico 005/2013 TRABALHO COM GRANDES MONTAGENS Parte 05 0 Vamos finalizar o tema Trabalho com Grandes Montagens apresentando os melhores recursos e configurações de hardware para otimizar a abertura

Leia mais

Construindo a câmara escura

Construindo a câmara escura Construindo a câmara escura Shizue Introdução Captar e registrar imagens tornou-se possível com a câmara escura de orifício. Essa câmara nada mais é do que uma lata, preta por dentro para não refletir

Leia mais

1- Fonte Primária 2- Fonte Secundária. 3- Fonte Puntiforme 4- Fonte Extensa

1- Fonte Primária 2- Fonte Secundária. 3- Fonte Puntiforme 4- Fonte Extensa Setor 3210 ÓPTICA GEOMÉTRICA Prof. Calil A Óptica estuda a energia denominada luz. 1- Quando nos preocupamos em estudar os defeitos da visão e como curá-los, estamos estudando a Óptica Fisiológica. Estudar

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC UNIVERSIDADE FEDERAL DE SANTA CATARINA DANIEL CARLOS CASAROTTO JOSE OTÁVIO CARLOMAGNO FILHO MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC Florianópolis, 2004 DANIEL CARLOS

Leia mais

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO AGOSTO DE 2013 SUMÁRIO STI/UFF - Sistema de Gerenciamento de Projetos do PDI SUMÁRIO... 2 1 Introdução... 3 1.1 O que é e qual a finalidade

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Laboratório Virtual Kit Óptico

Laboratório Virtual Kit Óptico Laboratório Virtual Kit Óptico Reflexão A luz nem sempre se propaga indefinidamente em linha reta: em algumas situações eles podem se quebrar, como acontece quando um espelho é colocado em seu caminho.

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

INTRODUÇÃO À ÓPTICA GEOMÉTRICA

INTRODUÇÃO À ÓPTICA GEOMÉTRICA INTRODUÇÃO À ÓPTICA GEOMÉTRICA FONTES DE LUZ Tudo aquilo que podemos ver está emitindo luz, portanto deve ser considerado uma fonte de luz. Tudo emite luz?não, ocorre que certos tipos de fontes emitem

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

Curso: Ensino Fundamental II Disciplina: MATEMÁTICA Professor: Álvaro / Leandro

Curso: Ensino Fundamental II Disciplina: MATEMÁTICA Professor: Álvaro / Leandro Nome do aluno: nº série/turma 9 Curso: Ensino Fundamental II Disciplina: MATEMÁTICA Professor: Álvaro / Leandro Data: De 17 a 21/08/2009 Bimestre: 3º Tipo de atividade: Lista de Exercícios A REFLEXÃO DA

Leia mais

Manual do Ambiente Moodle para Professores

Manual do Ambiente Moodle para Professores UNIVERSIDADE FEDERAL DA FRONTEIRA SUL Manual do Ambiente Moodle para Professores Tarefas Versão 1.0b Setembro/2011 Direitos Autorais: Essa apostila está licenciada sob uma Licença Creative Commons 3.0

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação. Carlos Eduardo Rodrigues

Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação. Carlos Eduardo Rodrigues Visão Geral de Hardwares de Renderização e Ferramentas de Avaliação Carlos Eduardo Rodrigues Motivação Os chips gráficos monolíticos da década de 80 evoluíram bastante, e hoje são denominados GPUs (Graphics

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

Itinerários de Ônibus Relatório Final

Itinerários de Ônibus Relatório Final CENTRO UNIVERSITÁRIO SENAC Itinerários de Ônibus Relatório Final Grupo 5 Caio Roque Daniel Nunes Elise Roese José Caneiro Marcos Grignani São Paulo Junho de 2007 1 ÍNDICE 1. Introdução... 3 2. Desenvolvimento...

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

ÓPTICA GEOMÉTRICA PREGOLINI

ÓPTICA GEOMÉTRICA PREGOLINI ÓPTICA GEOMÉTRICA PREGOLINI ÓPTICA GEOMÉTRICA É a parte da Física que estuda os fenômenos relacionados com a luz e sua interação com meios materiais quando as dimensões destes meios é muito maior que o

Leia mais

Protocolo em Rampa Manual de Referência Rápida

Protocolo em Rampa Manual de Referência Rápida Protocolo em Rampa Manual de Referência Rápida 1 O que é o Protocolo em Rampa O protocolo em rampa é um protocolo para testes de esforço que não possui estágios. Nele o incremento da carga se dá de maneira

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Manual de implantação

Manual de implantação Manual de implantação O BioPass ID é um serviço online baseado em nuvem que fornece uma poderosa tecnologia multibiométrica (reconhecimento de impressões digitais e face) para os desenvolvedores de qualquer

Leia mais

Comparativo de desempenho do Pervasive PSQL v11

Comparativo de desempenho do Pervasive PSQL v11 Comparativo de desempenho do Pervasive PSQL v11 Um artigo Pervasive PSQL Setembro de 2010 Conteúdo Resumo executivo... 3 O impacto das novas arquiteturas de hardware nos aplicativos... 3 O projeto do Pervasive

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT Disciplina: Modelagem a Programação Orientada a Objetos

Leia mais

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furbbr Resumo. Este artigo apresenta a especificação

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

O Primeiro Programa em Visual Studio.net

O Primeiro Programa em Visual Studio.net O Primeiro Programa em Visual Studio.net Já examinamos o primeiro programa escrito em C que servirá de ponto de partida para todos os demais exemplos e exercícios do curso. Agora, aprenderemos como utilizar

Leia mais

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

c. Técnica de Estrutura de Controle Teste do Caminho Básico

c. Técnica de Estrutura de Controle Teste do Caminho Básico 1) Defina: a. Fluxo de controle A análise de fluxo de controle é a técnica estática em que o fluxo de controle através de um programa é analisado, quer com um gráfico, quer com uma ferramenta de fluxo

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

OBJETIVO Verificar as leis da Reflexão Verificar qualitativamente e quantitativamente a lei de Snell. Observar a dispersão da luz em um prisma.

OBJETIVO Verificar as leis da Reflexão Verificar qualitativamente e quantitativamente a lei de Snell. Observar a dispersão da luz em um prisma. UNIVERSIDADE CATÓLICA DE BRASÍLIA CURSO DE FÍSICA LABORATÓRIO ÓPTICA REFLEXÃO E REFRAÇÃO OBJETIVO Verificar as leis da Reflexão Verificar qualitativamente e quantitativamente a lei de Snell. Observar a

Leia mais

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de 2009. Computação Gráfica

COMPUTAÇÃO GRÁFICA. Rasterização e Preenchimento de Regiões. MARCO ANTONIO GARCIA DE CARVALHO Fevereiro de 2009. Computação Gráfica COMPUTAÇÃO GRÁFICA Rasterização e Preenchimento de Regiões Objetivos Conhecer os fundamentos da construção de linhas e círculos Conhecer o modelo scan-line modelo de sementes para preenchimento de polígonos

Leia mais

APLICAÇÃO PARA ANÁLISE GRÁFICA DE EXERCÍCIO FÍSICO A PARTIR DA PLATAFORMA ARDUINO

APLICAÇÃO PARA ANÁLISE GRÁFICA DE EXERCÍCIO FÍSICO A PARTIR DA PLATAFORMA ARDUINO APLICAÇÃO PARA ANÁLISE GRÁFICA DE EXERCÍCIO FÍSICO A PARTIR DA PLATAFORMA ARDUINO Alessandro A. M de Oliveira 1 ; Alexandre de Oliveira Zamberlan 1 ; Péricles Pinheiro Feltrin 2 ; Rafael Ogayar Gomes 3

Leia mais

Cálculo de volume de objetos utilizando câmeras RGB-D

Cálculo de volume de objetos utilizando câmeras RGB-D Cálculo de volume de objetos utilizando câmeras RGB-D Servílio Souza de ASSIS 1,3,4 ; Izadora Aparecida RAMOS 1,3,4 ; Bruno Alberto Soares OLIVEIRA 1,3 ; Marlon MARCON 2,3 1 Estudante de Engenharia de

Leia mais

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! TUTORIAL DO ALUNO Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! O Moodle é a plataforma de ensino a distância utilizada pela Uniapae sendo a unidade de ensino para rápida capacitação

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Avanços na transparência

Avanços na transparência Avanços na transparência A Capes está avançando não apenas na questão dos indicadores, como vimos nas semanas anteriores, mas também na transparência do sistema. Este assunto será explicado aqui, com ênfase

Leia mais

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA Autores : Jeferson BOESING; Tiago HEINECK; Angela Maria Crotti da ROSA; Leila Lisiane ROSSI Identificação

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Lista de Revisão Óptica na UECE e na Unifor Professor Vasco Vasconcelos

Lista de Revisão Óptica na UECE e na Unifor Professor Vasco Vasconcelos Lista de Revisão Óptica na UECE e na Unifor Professor Vasco Vasconcelos 0. (Unifor-998. CE) Um objeto luminoso está inicialmente parado a uma distância d de um espelho plano fixo. O objeto inicia um movimento

Leia mais

Hoje estou elétrico!

Hoje estou elétrico! A U A UL LA Hoje estou elétrico! Ernesto, observado por Roberto, tinha acabado de construir um vetor com um pedaço de papel, um fio de meia, um canudo e um pedacinho de folha de alumínio. Enquanto testava

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de

Leia mais

Nosso objetivo será mostrar como obter informações qualitativas sobre a refração da luz em um sistema óptico cilíndrico.

Nosso objetivo será mostrar como obter informações qualitativas sobre a refração da luz em um sistema óptico cilíndrico. Introdução Nosso objetivo será mostrar como obter informações qualitativas sobre a refração da luz em um sistema óptico cilíndrico. A confecção do experimento permitirá também a observação da dispersão

Leia mais

CALDsoft7 - Software de planificação em caldeiraria

CALDsoft7 - Software de planificação em caldeiraria CALDsoft7 - Software de planificação em caldeiraria Calculando uma peça com o CALDsoft7 É muito simples calcular uma peça com o CALDsoft7, basta seguir os passos apresentados abaixo: - Escolher a peça

Leia mais

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho vi http://aurelio.net/vim/vim-basico.txt Entrar neste site/arquivo e estudar esse aplicativo Administração de Redes de Computadores Resumo de Serviços em Rede Linux Controlador de Domínio Servidor DNS

Leia mais

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto.

Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto. Discussão sobre Nivelamento Baseado em Fluxo de Caixa. Item aberto na lista E-Plan Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D) Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 1 AULA TEÓRICA 2

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

Interface Homem-Computador

Interface Homem-Computador Faculdade de Ciências e Tecnologia do Maranhão Interface Homem-Computador Aula: Engenharia Cognitiva e Semiótica Professor: M.Sc. Flávio Barros flathbarros@gmail.com Conteúdo Engenharia Cognitiva Fundamentos

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

Capítulo 5. Figura 5.2. Conector para o monitor.

Capítulo 5. Figura 5.2. Conector para o monitor. Capítulo 5 Placas de vídeo Visão geral das placas de vídeo Esta placa está presente em todos os PCs, exceto nos que possuem placas de CPU com os circuitos de vídeo embutidos. A maioria dos PCs produzidos

Leia mais

Prof. Marcelo Henrique dos Santos

Prof. Marcelo Henrique dos Santos POR QUE ESTUDAR COMPUTAÇÃO GRÁFICA? Quem quiser trabalhar em áreas afins: Entretenimento Jogos e filmes Visualização Simulação de fenômenos físicos Arte computadorizada Educação e treinamento Processamento

Leia mais

Modelos de Iluminação

Modelos de Iluminação Universidade Católica de Pelotas Centro Politécnico Modelos de Iluminação por Flávia Santos Computação Gráfica Prof. Dr. Paulo Roberto Gomes Luzzardi Universidade Católica de Pelotas Centro Politécnico

Leia mais

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Sumário Objetivos do Blog... 2 Log-in... 3 Esqueci minha senha... 4 Utilizando o Blog... 5 Encontrando seu Blog... 5 Conhecendo o

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

3B SCIENTIFIC PHYSICS

3B SCIENTIFIC PHYSICS 3B SCIENTIFIC PHYSICS Kit de ótica laser de demonstração U17300 e kit complementar Manual de instruções 1/05 ALF Índice de conteúdo Página Exp - N Experiência Kit de aparelhos 1 Introdução 2 Fornecimento

Leia mais

Computação Gráfica. Renderização em Tempo Real. Erivaldo Xavier de Lima Filho desadoc@gmail.com

Computação Gráfica. Renderização em Tempo Real. Erivaldo Xavier de Lima Filho desadoc@gmail.com Computação Gráfica Renderização em Tempo Real Erivaldo Xavier de Lima Filho desadoc@gmail.com Computação Gráfica É a síntese de imagens por computador Consiste de vários passos: o Modelagem o Renderização

Leia mais

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA Jeferson Boesing 1 ; Tiago Heineck 2 ; Angela Maria Crotti da Rosa 3 ; Leila Lisiane Rossi 4 INTRODUÇÃO Alunos

Leia mais

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2 .:: Universidade Estadual de Maringá Bacharelado em Informática Eng. de Software III :. Sistema de Gerenciamento de Eventos - Equipe 09 EPSI Event Programming System Interface Metodologia e Gerenciamento

Leia mais

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução; Em 1993, foi lançada a primeira versão do processador Pentium, que operava a 60 MHz Além do uso otimizado da memória cache (tecnologia já amadurecida) e da multiplicação do clock, o Pentium passou a utilizar

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ALEXANDRE PRADO BARBOSA RELATÓRIO DE ESTÁGIO Ponta Grossa 2012 ALEXANDRE PRADO BARBOSA Relatório

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

LENTES E ESPELHOS. O tipo e a posição da imagem de um objeto, formada por um espelho esférico de pequena abertura, é determinada pela equação

LENTES E ESPELHOS. O tipo e a posição da imagem de um objeto, formada por um espelho esférico de pequena abertura, é determinada pela equação LENTES E ESPELHOS INTRODUÇÃO A luz é uma onda eletromagnética e interage com a matéria por meio de seus campos elétrico e magnético. Nessa interação, podem ocorrer alterações na velocidade, na direção

Leia mais

Admistração de Redes de Computadores (ARC)

Admistração de Redes de Computadores (ARC) Admistração de Redes de Computadores (ARC) Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina - Campus São José Prof. Glauco Cardozo glauco.cardozo@ifsc.edu.br RAID é a sigla para Redundant

Leia mais

REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS

REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS Kelly Cristina de Oliveira 1, Júlio César Pereira 1. 1 Universidade Paranaense (UNIPAR) Paranavaí PR Brasil kristhinasi@gmail.com,

Leia mais

Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá

Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá Wânderson O. Assis, Alessandra D. Coelho, Marcelo M. Gomes, Cláudio G. Labate, Daniel F. Calasso, João Carlos G. C. Filho Escola

Leia mais

Professora Bruna FÍSICA B. Aula 17 Seus Óculos. Página 232

Professora Bruna FÍSICA B. Aula 17 Seus Óculos. Página 232 FÍSICA B Aula 17 Seus Óculos. Página 232 INTRODUÇÃO Na aula de hoje, estudaremos os defeitos da visão e os tipos de lentes indicadas para correção destes defeitos. Para isso, estudaremos primeiramente

Leia mais

1.1. Aplicações de TVD dinâmicas

1.1. Aplicações de TVD dinâmicas 1 Introdução Uma aplicação de TV Digital (TVD) comumente é composta por um vídeo principal associado a outros objetos (aplicações, imagens, vídeos, textos etc.), que são transmitidos em conjunto possibilitando

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS 4ª Série Informática Industrial CST em Mecatrônica Industrial A atividade prática supervisionada (ATPS) é um método de ensinoaprendizagem desenvolvido por meio de um

Leia mais