Cena do Projeto Final

  Como inspiração para a imagem final, buscou-se uma cena que abordasse todos os materiais desenvolvidos durante a disciplina de Phisically Based Rendering. Para isso, pensou-se em uma sala de jantar, na qual é possível retratar objetos variados de diversos tipos implementados.   Para começar, buscou-se uma malha de uma mesa com cadeiras na qual quatro pratos … Continue lendo Cena do Projeto Final

Publicidade

Novo Material: Metal

  Seguindo o desenvolvimento do path tracer, a implementação de um novo material é essencial para a correta representação deste numa cena mais realista. Portanto, como o metal pode ser descrito com uma simples BRDF, escolhemo-no como próximo a ser adicionado.   Para a construção dessa nova classe que herda de Material, será preciso explicar como a … Continue lendo Novo Material: Metal

Estrutura de Aceleração

  Com o cenário atual do nosso path tracer, para cada raio é feita a interseção com todas as primitivas, o que demanda muito tempo de processamento, tornando inviável o carregamento de malhas com muitos triângulos. Para solucionar o problema, há mecanismos de aceleração que limitam os testes de primitivas. Dentre as várias formas de otimizar … Continue lendo Estrutura de Aceleração

Novos Materiais: Espelho e Vidro

  Agora que se já otimizou o tempo de renderização do nosso path tracer, o passo a se seguir é a implementação de novos materiais. Começaremos com o espelho, cujo comportamento é de fácil entendimento.   O espelho, por ter um comportamento muito específico, foi escolhido para compor uma nova classe que herda da classe abstrata Material. … Continue lendo Novos Materiais: Espelho e Vidro

Otimização com Múltiplas Threads

  Após a implementação do Path Tracer,  foi detectada a necessidade de diminuir o crescente tempo de renderização. Para se ter uma ideia, para gerar a Figura 1 foram necessárias aproximadamente 26 horas de processamento usando as configurações mencionadas no post anterior.   Tendo isso em vista, a primeira otimização a ser feita será o uso de … Continue lendo Otimização com Múltiplas Threads

Desenvolvimento do Pathtracer

  Ainda no final do desenvolvimento do Ray Tracer, implementamos a renderização usando mais de um raio por pixel, sendo estes distribuídos por toda a sua área. A distribuição se deu aleatoriamente para que as bordas de cada forma (onde aconteciam transições de cores) fossem suavizadas, gerando uma imagem com uma melhor qualidade. Pode-se visualizar, como … Continue lendo Desenvolvimento do Pathtracer

Implantação de cor e Carregamento de objetos pela Biblioteca Assimp

  Para se implementar a cor de uma primitiva, beneficiou-se da facilidade da programação orientada a objetos, mais especificamente o conceito de herança. Com ela, foi possível adicionar o atributo cor apenas na classe pai abstrata (Primitive). Para facilitar o controle de cores, foi usado o padrão RGB, no qual é informado os valores que variam entre … Continue lendo Implantação de cor e Carregamento de objetos pela Biblioteca Assimp

Implementação da Câmera Perspectiva Pinhole

  Usando como base a câmera ortográfica já implementada, criou-se a câmera Pinhole, herdando da classe abstrata Camera e acrescentou-se o parâmetro de distância. Isso se faz necessário, já que, para se obter a imagem perspectiva, a tela se desacopla da câmera. Esse novo parâmetro dita a distância entre essas duas entidades.   Escolheu-se tomar o canto … Continue lendo Implementação da Câmera Perspectiva Pinhole

Construção de triângulos no Ray Tracer

  Tomando como ponto de partida do desenvolvimento na cadeira de PBR, aproveitou-se o Ray Tracer básico implementado pelo professor Christian Pagot, o qual está disponível neste link. A partir dele, busca-se a consecutiva incrementação e refinamento do software.   Como primeiro desafio, construiu-se uma classe que possibilitou a implementação de triângulos. Partiu-se da classe já existente responsável … Continue lendo Construção de triângulos no Ray Tracer