Geração Procedural de Terrenos em GPU

Documentos relacionados
Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

3 Fundamentos. 3.1 Pipeline de renderização em OpenGL

Engenharia Informática Computação Gráfica

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

5 Frustum culling em GPU

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

Um pouco de história. SketchPad Tese de Doutorado de Ivan Sutherland (MIT) Conceito de comunicação com o computador

Visualização por Computador: Teoria, Prática e Aplicações

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Sumário. Gráficos 3D - Evolução Histórica. Computação Gráfica. ! Criação de Gráficos. ! Criação de Modelos 3D. ! Pipeline Gráfico. !

Survey de técnicas. detalhadas: Análise e Comparação

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho

4 Resultados. Tabela 4.1: Funções implícitas de teste.

Introdução Introdução

Mapeamento de Textura

Processamento de áudio em tempo real utilizando dispositivos não convencionais:

UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos

6 A GPU. 6.1 Introdução

INF2610 Renderização em Tempo Real. Waldemar Celes. 23 de Março de 2017

4 Processamento Paralelo

Bruno Pereira Evangelista.

Computação Gráfica. GLSL - Introdução e Programação da Aplicação OpenGL

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2.

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. Luiz Felipe Simões Hoffmann

Introdução à Computação Gráfica. Claudio Esperança Paulo Roma Cavalcanti

António Costa. Paulo Roma Cavalcanti

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Computação Gráfica II

Desenvolvimento de um Motor Gráfico de Apoio a Ambientes Lúdicos Educacionais

Mapeamento de Texturas

3.1 Linha de Produção Utilizada

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 1. Apresentação

Sistemas Gráficos e Modelos Cap 1

Frustum Culling Híbrido Utilizando CPU e GPU. Aluno: Eduardo Telles Carlos Orientador: Alberto Raposo Co-Orientador: Marcelo Gattass


Visualização Interativa de Modelos Massivos de Engenharia na Indústria de Petróleo com o Algoritmo de Voxels Distantes

5 Detalhamento de superfícies com tesselação em GPU

Introdução à Programação de Propósito Geral em Hardware Gráfico

Computação Gráfica Introdução

Visualização de terrenos em GPU

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

Computação Gráfica. Computação Gráfica LEI / LCC Departamento de Informática Universidade do Minho

PEF 5743 Computação Gráfica Aplicada à Engenharia de Estruturas

2 Programação Genérica em Placa Gráfica

4 Técnicas de Renderização HDR

GPU Computing. GeForce and Radeon OpenCL Test. OpenCL

2 Algoritmos de Visibilidade

5 Implementação Visão Geral do Mob3D

Os testes foram efetuados em um processador Intel i7 de 2.8 GHz com 12Gb de memória RAM utilizando uma Nvidia GeForce GTX 480.

Introdução ao OpenGL 2.1 e GLSL 1.2

Renderização em Tempo Real de Pêlos Aplicados Sobre Malhas Tridimensionais Arbitrárias Obtidas de Objetos Reais

Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

Introdução Introdução

Esteban Walter Gonzalez Clua. Impostores com Relevo. Tese de doutorado Departamento de Informática

4 Impostores com Relevo

OpenGL Shading Language

Visualização de terrenos em GPU

Computação Gráfica - 13

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

Shading (sombreamento) & Smooth Shading

Tópicos Especiais em Engenharia de Software (Jogos II)

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real

Implementação de um Ambiente para Modelagem de Objetos 3D com uso de Sweeping. Ednilson José ALUNO. Prof. Dalton Solano dos Reis ORIENTADOR

Enquadramento e Conceitos Fundamentais

Enquadramento e Conceitos Fundamentais

Comparação entre as bibliotecas gráficas. OpenGL e Direct3D. Aluno:Alexandre Otto Strube Orientador: Paulo César Rodacki Gomes

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

Visualização de Rótulos em Objetos de Modelos Massivos em Tempo Real

5 Resultados Experimentais

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. Luiz Felipe Simões Hoffmann

REFINAMENTO DE MALHA

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

GPUs : Arquitetura e Programação. Bruno Cardoso Lopes Instituto de Computação - UNICAMP

Infraestrutura de Hardware. Processamento Paralelo Multicores, Multi-Threading e GPUs

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Técnicas de renderização com textura

Trabalho de conclusão de curso

Computação Gráfica. Computação Gráfica. Visão Geral. Sistema Gráfico. Introdução à Computação Gráfica e areas relacionadas

Computaçã. Visão Geral. Sistema Gráfico. Computação Gráfica. Pixels. Sistema Gráfico e o Frame Buffer. Introdução à Computação Gráfica

Uso de Técnicas Baseadas em Pontos para Visualização de Horizontes Sísmicos

Introdução. 1 Introdução

GPUs - Graphic Processing Units

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 10 de Agosto de 2010

Luiz Gonzaga da Silveira Jr

QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos

Visualizador de animações 3D com suporte ao formato arquivos FBX em Objective-C++

Real-time High Dynamic Range Image-based Lighting

Transformações 3D. Soraia Raupp Musse

Computação Gráfica. Prof. André Yoshimi Kusumoto

Diogo Strube de Lima Henry Braun EXIBIÇÃO DE TERRENOS EM TEMPO REAL UMA ABORDAGEM A TERRENOS COM LARGA ESCALA GEOMÉTRICA

Instruções Gerais. Enunciado

Um Algoritmo para a Visualização de um Terreno com Objetos

Multiple-Volume Volumetric Rendering Using Graphic Accelerator

Resultados 107. O parâmetro de comparação de performance foi o tempo de computação, expresso em milissegundos.

Introdução ao Hardware Gráfico

Projeção de Células baseada em GPU para Visualização Interativa de Volumes

Transcrição:

Geração Procedural de Terrenos em GPU Felipe Gomes Sampaio Universidade Federal de Juiz de Fora Departamento de Ciência da Computação Orientadora: Jesuliana Nascimento Ulysses

Agenda Introdução GPU Terrenos Procedurais Implementação Resultados Conclusão

Introdução Geração Procedural Modelos gerados a partir de funções ou algoritmos Modelar a natureza Terrenos Relevo (montanhas, rios) Materiais (rocha, água, areia) GPU

GPU Por quê? Crescimento do poder de processamento O hardware é relativamente barato Como?

GPU JOGOS! Industria exige cada vez mais poder de processamento Gera bilhões de dólares por ano Incentiva cada vez mais o desenvolvimento do hardware E acaba por baixar o custo

GPU GPUs são rápidas... High-end quad core CPU Unidades de processamento: 16 Poder: 96 GFLOPS ATI Radeon HD 4870: Unidades de processamento: 800 Poder: 1200 GFLOPS

GPU

GPU Graphics State GPU Versão Shade Final Pixels (Color, Depth) Rasterize Fragments (pre-pixels) CPU Assemble Primitives Screenspace triangles (2D) Transform & Light Xformed, Lit Vertices (2D) Vertices (3D) Application Video Memory (Textures) Render-to-texture simplificada da pipeline

GPU Graphics State CPU Processador GPU de Vértices Programável Processador de Geometria Programável Fragment Shade Processor Final Pixels (Color, Depth) Rasterize Fragments (pre-pixels) Geometry Assemble Processor Primitives Screenspace triangles (2D) Vertex Transform Processor & Light Xformed, Lit Vertices (2D) Vertices (3D) Application Video Memory (Textures) Render-to-texture Processador de Fragmentos Programável

GPU Shaders Shaders são programas que executam em determinadas etapas da pipeline Não são aplicações stand-alone Necessitam de uma aplicação que utilize um API (OpenGL ou Direct3D)

GPU Shaders Vertex shader Vertex Processor Fragment shader Fragment Processor Geometry shader Geometry Processor

GPU Vertex Processor Transforma do espaço de mundo para o espaço de tela Calcula iluminação per-vertex

GPU Geometry Processor Como os vértices se conectam para formar a geometria Operações por primitiva

GPU Fragment Processor Calcula a cor de cada pixel Obtém cores de texturas

GPU Hoje temos que a programação de shaders é feita em linguagens de alto nível No estilo de c/c++ As principais que temos hoje: GLSL OpenGL Shader Language HLSL High Level Shader Language Cg C for Graphics

GPU Temos algumas ferramentas que servem para criação e edição de shaders: NVIDIA FX Composer ATI RenderMonkey

GPU NVIDIA FX Composer

GPU ATI RenderMonkey

Terrenos Procedurais Geração Procedural Relevo (montanhas, rios) Materiais (rocha, água, areia) Funções procedurais Funções básicas Funções fractais

Terrenos Procedurais Funções básicas Pseudo-aleatoriedade A não ocorrência de periodicidade de padrões Devem ser invariantes a rotação e translação

Terrenos Procedurais Função Noise Criada por Ken Perlin em 1985 Como o nome diz, é uma função que produz ruído 2 estágios

Terrenos Procedurais 1º estágio: Gera um valor pseudo-aleatório para cada posição no espaço 3D Utiliza coordenadas X, Y, Z para consultar uma tabela de permutação

Terrenos Procedurais 2º estágio: Valor obtido no 1º estágio usado para consultar uma tabela de gradientes 8 consultas são realizadas e interpoladas para gerar o valor final da Noise

Terrenos Procedurais Fractais Objeto geometricamente complexo, complexidade esta que surge pela repetição de uma fórmula para variações de escala, Kenton Musgrave

Terrenos Procedurais Turbulência Criada por Ken Perlin em 1985 Utiliza a função noise em suas iterações Simples implementação

Terrenos Procedurais Turbulência 1D

Terrenos Procedurais Turbulência 2D

Terrenos Procedurais Mapas de altura Representação do terreno na forma de matriz

Terrenos Procedurais Geração do terreno Y Z = (x, y) = 10 X Z = (x, y) = 10

Terrenos Procedurais Texturas procedurais Representam os materiais (rocha, areia, água) Também podem ser geradas a partir da função noise/turbulência Não apresentam problemas de aliasing Não precisam ser armazenadas Não precisam ser mapeadas sobre a superfície Exemplos

Terrenos Procedurais Exemplo 1 noise Usada em conjunto com outras texturas para dar um aspecto de sujeira

Terrenos Procedurais Exemplo 2 noise(p) + ½ noise(2p) + ¼ noise(4p)... Geração procedural de nuvens

Terrenos Procedurais Exemplo 3 noise(p) + ½ noise(2p) + ¼ noise(4p)... Turbulência Aparência de chamas

Terrenos Procedurais Exemplo 4 sin( x + noise(p) + ½ noise(2p) +...) Textura de mármore

Implementação Terrenos gerados com Noise e Turbulência Utilização de OpenGL + GLSL Shaders implementados no RenderMonkey Toda a geração realizada no Pixel Shader Tabela de permutação e vetor de gradiente convertidos em texturas

Implementação Vetor de gradientes

Implementação Código em GLSL da função Noise

Implementação Frame Buffer Object (FBO) Buffer para se realizar renderizações Saída do Pixel Shader renderizada no FBO Mapa de alturas Vertex Buffer Object (VBO) Buffer utilizado pelo OpenGL como uma lista de vértices Dados copiados do FBO Pronto para renderização do terreno

Resultados Perlin Noise

Resultados Turbulência

Resultados Warping turbulencia( noise(x, Y, Z) )

Resultados Turbulência texturizada

Conclusão A Turbulência apresentou um bom resultado Paralelismo torna a GPU uma boa opção Programação em GPU é simples