Sombras en Open GL Informtica Grfica Ingeniera Informtica
Sombras en Open. GL Informática Gráfica– Ingeniería Informática. Carlos Calvo Rodríguez 01
Sombras en Open. GL • Elemento imprescindible para realismo de la escena. • Varios mecanismos – Sombras estáticas – Sombras dinámicas • Sombras volumétricas • Mapas de sombras (Shadow Mapping) 02
Sombras estáticas • Aplicación mediante mapas de luz. • Deben ser precalculados – No requieren eficiencia en tiempo real – No aptos para objetos dinámicos 03
Sombras estáticas • Varias técnicas de precálculo – Oclusión ambiental – Radiosidad – Otras 04
Sombras dinámicas • Fixed pipeline – Sombras Volumétricas • GLSL – Shaders – Shadow Mapping 05
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. 06
Sombras volumétricas 07
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. gl. Tex. Image 2 D(GL_TEXTURE_2 D, 0, GL_DEPTH_COMPONENT 16, 1024, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0); 08
Shadow Mapping • Renderizado desde cada luz en la textura, cálculo de profundidad. • Renderizado normal, test contra la textura de profundidad. 09
Shadow mapping • Renderizado desde la luz – Proyección ortogonal – Suficientemente grande para toda la escena 010
Shadow mapping C++ //Especificamos el búfer creado anteriormente para el shadow map como //objetivo de rendering. gl. Bind. Framebuffer(GL_FRAMEBUFFER, fb. Depth); gl. Viewport(0, 0, 1024); //Renderizar en todo el búfer #version 120 // Entrada de datos de vértice para cada ejecución attribute vec 3 vertex. Position_modelspace; GLSL // Valores constantes para todo el mesh uniform mat 4 depth. MVP; void main(){ gl_Position = depth. MVP * (vec 4(vertex. Position_modelspace, 1)); } 011
Shadow Mapping • Sólo se guarda información de profundidad. 012
Shadow Mapping 013
Shadow Mapping • El test de sombreado permite cambiar el renderizado condicionalmente. float visibility = 1. 0; if ( texture( shadow. Map, Shadow. Coord. xy ). z visibility = 0. 5; } < Shadow. Coord. z - bias){ GLSL 014
Shadow Mapping - Problemas • «Shadow acne» • Peter Panning • Aliasing 015
Shadow Acne • Margen de error ajustado // Ajuste de error fijo. . . float bias = 0. 005; //. . . o variable // float bias = 0. 005*tan(acos(cos. Theta)); // bias = clamp(bias, 0, 0. 01); • Front-face culling gl. Enable(GL_CULL_FACE); gl. Cull. Face(GL_FRONT); 016
Peter Panning • Problema relacionado con la geometría. • Resuelto utilizando geometría más ancha. • Supone más primitivas por etapa. 017
Aliasing • PCF – Multisampling por hardware GLSL uniform sampler 2 DShadow shadow. Map; 018
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. 019
Aliasing Poisson Sampling N = 16 Baja dispersión 020
Aliasing Poisson Sampling N = 16 Alta dispersión 021
Aliasing Stratified Poisson Sampling 022
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. 023
Shadow Mapping - Variaciones • Frustum automático de luz – Cálculo de PSR y PSC – Puede causar popping 024
Shadow Mapping - Variaciones 025
Shadow Mapping - Variaciones • Light Space Perspective Shadow Maps – Modifican el frustum original para conseguir una calidad más uniforme con la distancia. 026
Shadow Mapping - Variaciones 027
Shadow Mapping - Variaciones • Cascaded Shadow Maps – Técnica análoga al mipmapping. – Emplea varios Shadow Maps estándar. 028
Juan Manuel Corchado Rodríguez Facultad de Ciencias Universidad de Salamanca 37007 Salamanca. Spain Tel. (34) 923 294450 (ext. 1525) Movil (34) 618696589 Fax (34) 923 294514 http: //bisite. usal. es | corchado@usal. es 029
- Slides: 29