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

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

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