técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros ›...

75
Técnicas avanzadas basadas en trazado de rayos

Upload: others

Post on 25-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Técnicas avanzadas basadas en trazado de rayos

Page 2: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: Generación

l  La cámara

Rayo = f(x,y)

Page 3: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: intersecciones

l  Rayo-triángulo: l  Intersección con

plano. l  Comprobación de

rangos

O D

O O

t

P

N

u

v

Page 4: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: color

l  Ecuación de reflexión

BRDF

Page 5: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos

l  Resumen

Page 6: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos

l  Tiempo de cálculo:

tinterseccion*npixels* (nobjetos*nsecundarios*nluces)^nrebotes

Page 7: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Depth of field

Purpy Purple

Page 8: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Depth of field

Page 9: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Depth of field l  Efectos chulos y realistas. l  Se aumenta mucho el tiempo de cálculo (muchos

rayos por píxel para simular el fenómeno). l  Como siempre: es mejor idea elegir los ”más

importantes”.

Page 10: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Motion blur

E01

Page 11: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Motion blur: l  Integral de la radiancia a lo largo del tiempo de

exposición. l  Coger varias muestras en ese tiempo: aumentar el

tiempo de cálculo.

Page 12: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos: ¿qué falta?

l  Cáusticas l  Caminos difíciles de encontrar, requieren muchas

muestras difusas

Page 13: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Trazado de rayos

l  Tiempo de cálculo:

tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes

Además, nsecundarios necesita ser muy grande (tirando a infinito) para encontrar cáusticas y fenómenos similares

Page 14: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Nuevos algoritmos

l  Trazado de rayos necesita mucho tiempo, hay varios fenómenos que no son prácticos de simular.

l  Cada nuevo fenómeno añadido, introduce mucha complejidad computacional en el algoritmo.

Page 15: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Nuevos algoritmos

l  Nuestra ”unidad de medida” es el rayo. l  Idea: que nuestra ”unidad de medida” sea un

camino entero de la cámara a la luz: path-tracing

Page 16: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing

l  Se pierde el concepto de ”rayo secundario”.

Page 17: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing

l  Los propios rayos de un camino hacen las veces de rayos de sombra.

Page 18: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing

l  ¿Qué pasa con el tiempo de cálculo?

tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes

Page 19: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing

Path tracing

Ray

tracing

¿QUÉ OPINAS?

Page 20: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing

l  La implementación clásica de path tracing tiene problemas localizando fuentes de luz puntuales o direccionales...

Page 21: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing, next event estimation

l  Idea: calcular el ”siguiente evento” (trazar rayos de sombra)

Page 22: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing, next event estimation

l  … pero sigue teniendo problemas con las cáusticas.

Page 23: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Light tracing

l  Idea: Comenzar caminos desde la luz. l  Con siguiente evento: buscar la cámara.

Page 24: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing bidireccional

l  Idea: comenzar caminos tanto desde la cámara como desde las luces: path tracing bidireccional.

Page 25: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing bidireccional.

l  Luego se trazan rayos de sombra.

Page 26: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing bidireccional

l  ¿Qué pasa con el tiempo de cálculo?

tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes

Page 27: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing bidireccional

Path tracing

Ray

tracing

¿QUÉ OPINAS?

Path tracing bidireccional

Page 28: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Path tracing bidireccional

l  Hacen falta muchos rayos por píxel. l  Convergencia lenta, tiempo de cálculo elevado. l  Muy dependiente de Montecarlo en cada

rebote.

Page 29: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Metropolis Light Transport

l  Idea: al localizar un camino importante, lo reaprovechamos (mutándolo) para el siguiente camino.

Page 30: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Metropolis Light Transport

l  Mutación

Page 31: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Metropolis Light Transport

l  ¿Cómo elegimos los caminos más importantes?

Page 32: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Metropolis Light Transport

l  Convergencia ligeramente superior al path tracing bidireccional clásico en muchos casos.

Page 33: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mapeado de fotones

Page 34: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

¿Para qué?

•  Existen fenómenos visuales complicados que son costosos de simular con algoritmos de iluminación global convencionales.

Page 35: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

¿Para qué? •  En escenas complicadas es prácticamente

imposible: – Path tracing requiere ”mucha suerte” para la cáustica. – Path tracing bidireccional y Metropolis requieren ”mucha

suerte” para la reflexión de la cáustica

Page 36: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

¿Para qué? •  Idea: desacoplar los dos ”caminos”

Page 37: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

¿Para qué? •  Otras ventajas:

– Tiempo de cálculo menor – Ruido de baja frecuencia

•  Desventajas – Sesgo

Page 38: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Índice

•  Algoritmo •  Estructura de datos •  Mejoras •  Resultados

Page 39: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Índice

•  Algoritmo •  Estructura de datos •  Mejoras •  Resultados

Page 40: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

1.  Se lanzan fotones desde las fuentes de luz ñ  Se almacenan en una estructura de datos.

2.  Se trazan rayos desde la cámara ñ  Se estima la radiancia a partir de los fotones

almacenados.

Page 41: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 1: Trazado de fotones – Emisión –  Interacción – Almacén

Page 42: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 1: Trazado de fotones – Emisión –  Interacción – Almacén

– Flujo total de la fuente de luz se reparte entre fotones

Page 43: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 1: Trazado de fotones – Emisión –  Interacción – Almacén

Page 44: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 1: Trazado de fotones – Emisión –  Interacción – Almacén

•  Que permita búsquedas de vecinos más cercanos

Page 45: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

ñ  Un fotón – Flujo: ΔΦp (W - color) – Posición: xp

– Dirección: ωp

ωp

ΔΦp

xp

Page 46: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 2: Trazado de rayos – Trazado desde la cámara –  Interacción – Estimación de radiancia

Page 47: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 2: Trazado de rayos – Trazado desde la cámara –  Interacción – Estimación de radiancia

– ¡¡Igual que trazado de rayos estándar!!

Page 48: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Algoritmo

•  Fase 2: Trazado de rayos – Trazado desde la cámara –  Interacción – Estimación de radiancia

•  N fotones más cercanos

Page 49: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Estimación de radiancia

•  Ecuación de radiancia reflejada •  Radiancia por flujo •  Sustituimos •  Numéricamente

∫Ω

⋅= iiiirirrr dNLfL ωωωωωω ))(,(),(),( xx

iii

iiii dAdN

dLωωω

ω)(

),(),(2

Φ=

xx

∫Ω

Φ=

i

iirirrr dAdfL ),(),(),(2 ω

ωωωxx

∑=

ΔΦΔ

≈n

ppprprrr f

AL

1),(),(1),( ωωωω xx

ΔA = πr2

Page 50: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Índice

•  Algoritmo •  Estructura de datos •  Mejoras •  Resultados

Page 51: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Estructura de datos

ñ  Un fotón – Flujo: ΔΦp (W - color) – Posición: xp

– Dirección: ωp

ωp

ΔΦp

xp

Page 52: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Estructura de datos

•  Características: – Capaz de almacenar muchos datos – Capaz de búsquedas eficientes de los vecinos más

cercanos (en 3D)

¿CUÁL ELEGIMOS?

Page 53: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Estructura de datos

•  Posibilidades – Diagrama de Voronoi – Voxels – Octree – Kd-tree

Page 54: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Kd-tree •  http://donar.umiacs.umd.edu/quadtree/points/kdtree.html •  http://homes.ieu.edu.tr/~hakcan/projects/kdtree/kdTree.html

Page 55: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Kd-tree

•  En 3D...

Page 56: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = ? dist-sqd = ∞ NN(c, x)‏

Nearer = e Further = b NN (e, x)‏

nearer further

Page 57: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = ? dist-sqd = ∞ NN(e, x)‏

Nearer = g Further = d NN (g, x)‏

nearer further

Page 58: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = ? dist-sqd = ∞ NN(g, x)‏

Nearest = g dist-sqd = r

r

Page 59: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(e, x)‏

Check d2(e,x) > r No need to update

r

Page 60: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(e, x)‏

Check further of e: find p d (p,x) > r No need to update

r

p

Page 61: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(c, x)‏

Check d2(c,x) > r No need to update

r

Page 62: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(c, x)‏

Check further of c: find p d(p,x) < r !! NN (b,x)‏

r

p

Page 63: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(b, x)‏

Nearer = f Further = g NN (f,x)‏

r

Page 64: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = g dist-sqd = r NN(f, x)‏

r’ = d2 (f,x) < r dist-sqd ← r’ nearest ←f

r’

Page 65: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = f dist-sqd = r’ NN(b, x)‏

Check d(b,x) < r’ No need to update

r’

Page 66: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = f dist-sqd = r’ NN(b, x)‏

Check further of b; find p d(p,x) > r’ No need to update

r’ p

Page 67: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

a b

c

d

e

f

g

c

e b

d g a f

Nearest = f dist-sqd = r’ NN(c, x)‏

r’

Page 68: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Índice

•  Algoritmo •  Estructura de datos •  Mejoras •  Resultados

Page 69: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  A más fotones almacenados, más tiempo de cálculo. – Eliminar fotones que ”no se van a ver” (reflexión

especular perfecta, cortar rebotes cuando la energía es cero).

–  Intentar que todos los fotones tengan aproximadamente la misma energía.

Page 70: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  El algoritmo funciona mejor cuando todos los fotones almacenados tienen la misma energía: – Muestreo por importancia (luces / BRDFs) – Ruleta Rusa

Page 71: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  El algoritmo funciona mejor cuando todos los fotones almacenados tienen la misma energía: – Muestreo por importancia (luces / BRDFs) – Ruleta Rusa •  ζ aleatorio [0..1] •  ζ < ρd → difuso •  ζ < ρd + ρs → especular

ρd = 50% ρs = 30%

Page 72: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  El camino ”directo” se calcula perfectamente con trazado de rayos de sombra estándar. – Primer rebote de fotones no se guarda. – Camino directo mediante trazado de rayos.

– Algunos trabajos hacen incluso un rebote indirecto mediante rayos.

Page 73: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  Diferentes fenómenos se ven mejor con diferentes parámetros del mapa – Utilizar más de un mapa de fotones – Ejemplo: uno para luz indirecta y otro para

cáusticas. – Ejemplo retorcido: un mapa de fotones por cada

objeto.

Page 74: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Mejoras

•  El cuello de botella del algoritmo es la búsqueda de elementos más cercanos.

•  Puedes ahorrar un rebote haciendo que cada fotón sea se comporte como una luz puntual: Instant Radiosity

•  ¿Cómo hacerlo eficiente? → Lightcuts

Page 75: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos

Índice

•  Algoritmo •  Estructura de datos •  Mejoras •  Resultados