01 sombras en opengl informática gráfica– ingeniería informática. carlos calvo rodríguez

29
01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

Upload: inez-cubero

Post on 27-Jan-2016

223 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

01

Sombras en OpenGLInformática Gráfica– Ingeniería Informática.

Carlos Calvo Rodríguez

Page 2: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

02

Sombras en OpenGL

• Elemento imprescindible para realismo de la escena.

• Varios mecanismos– Sombras estáticas– Sombras dinámicas• Sombras volumétricas• Mapas de sombras (Shadow Mapping)

Page 3: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

03

Sombras estáticas

• Aplicación mediante mapas de luz.

• Deben ser precalculados– No requieren eficiencia en tiempo real– No aptos para objetos dinámicos

Page 4: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

04

Sombras estáticas

• Varias técnicas de precálculo– Oclusión ambiental– Radiosidad– Otras

Page 5: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

05

Sombras dinámicas

• Fixed pipeline – Sombras Volumétricas• GLSL – Shaders – Shadow Mapping

Page 6: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

06

Sombras volumétricas

• Uso del Stencil Buffer.• Determinación de siluetas y proyección.• Renderizado en múltiples etapas.– Renderizado de escena en penumbra. Cálculo de

stencil buffer.– Renderizado aditivo para cada luz. Test contra el

stencil buffer.• Extremadamente caro computacionalmente.

Page 7: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

07

Sombras volumétricas

Page 8: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

08

Shadow Mapping

• El uso de shaders permite la técnica del Shadow Mapping.

• Hace uso de una textura –no un búfer- de profundidad.

• El tamaño de la textura indica la resolución de las sombras.

glTexImage2D(GL_TEXTURE_2D, 0,GL_DEPTH_COMPONENT16, 1024, 1024, 0,GL_DEPTH_COMPONENT, GL_FLOAT, 0);

Page 9: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

09

Shadow Mapping

• Renderizado desde cada luz en la textura, cálculo de profundidad.

• Renderizado normal, test contra la textura de profundidad.

Page 10: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

010

Shadow mapping

• Renderizado desde la luz– Proyección ortogonal– Suficientemente grande para toda la escena

Page 11: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

011

Shadow mapping

C++

GLSL

#version 120

// Entrada de datos de vértice para cada ejecuciónattribute vec3 vertexPosition_modelspace;

// Valores constantes para todo el meshuniform mat4 depthMVP;

void main(){gl_Position = depthMVP * (vec4(vertexPosition_modelspace,1));

}

//Especificamos el búfer creado anteriormente para el shadow map como//objetivo de rendering.glBindFramebuffer(GL_FRAMEBUFFER, fbDepth);glViewport(0, 0, 1024, 1024); //Renderizar en todo el búfer

Page 12: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

012

Shadow Mapping

• Sólo se guarda información de profundidad.

Page 13: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

013

Shadow Mapping

Page 14: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

014

Shadow Mapping

• El test de sombreado permite cambiar el renderizado condicionalmente.

GLSL

float visibility = 1.0;if ( texture( shadowMap, ShadowCoord.xy ).z < ShadowCoord.z - bias){

visibility = 0.5;}

Page 15: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

015

Shadow Mapping - Problemas

• «Shadow acne»• Peter Panning• Aliasing

Page 16: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

016

Shadow Acne

• Margen de error• Margen de error ajustado

• Front-face culling

// Ajuste de error fijo...float bias = 0.005;

// ...o variable// float bias = 0.005*tan(acos(cosTheta));// bias = clamp(bias, 0,0.01);

glEnable(GL_CULL_FACE);glCullFace(GL_FRONT);

Page 17: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

017

Peter Panning

• Problema relacionado con la geometría.• Resuelto utilizando geometría más ancha.• Supone más primitivas por etapa.

Page 18: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

018

Aliasing

• PCF– Multisampling por hardware

GLSL

uniform sampler2DShadow shadowMap;

Page 19: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

019

Aliasing

• Poisson Sampling– Multisampling fijo alrededor del pixel– Puede presentar «banding» si se dispersan las

muestras.

• Stratified Poisson Sampling– Muestreo aleatorio alrededor del píxel.– Genera patrones de ruido.

Page 20: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

020

Aliasing

PoissonSampling

N = 16Baja dispersión

Page 21: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

021

Aliasing

PoissonSampling

N = 16Alta dispersión

Page 22: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

022

Aliasing

StratifiedPoissonSampling

Page 23: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

023

Shadow Mapping - Mejoras

• «Early bailing»• Luces «spot»– Matriz de proyección de la luz.

• Múltiples luces– Necesidad de etapas extra

• Luces de punto– Uso de cubemaps para el shadowmapping.

Page 24: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

024

Shadow Mapping - Variaciones

• Frustum automático de luz– Cálculo de PSR y PSC– Puede causar popping

Page 25: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

025

Shadow Mapping - Variaciones

Page 26: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

026

Shadow Mapping - Variaciones

• Light Space Perspective Shadow Maps– Modifican el frustum original para conseguir una

calidad más uniforme con la distancia.

Page 27: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

027

Shadow Mapping - Variaciones

Page 28: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

028

Shadow Mapping - Variaciones

• Cascaded Shadow Maps– Técnica análoga al mipmapping.– Emplea varios Shadow Maps estándar.

Page 29: 01 Sombras en OpenGL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez

029

Tel. (34) 923 294450 (ext. 1525) Movil (34) 618696589Fax (34) 923 294514http://bisite.usal.es | [email protected]

Facultad de CienciasUniversidad de Salamanca37007 Salamanca. Spain

Juan Manuel Corchado Rodríguez