|
El algoritmo tradicional de photon mapping se basa en realizar una primera pasada, donde se emiten los fotones desde las luces, y se almacenan en memoria, para posteriormente pintar la imagen con raytracing usando los photones para iluminar. Para que la imagen tenga una calidad aceptable son necesarios muchos fotones, lo cual alarga los tiempos de render y aumenta el consumo de memoria. Si un iluminador necesita una imagen rápidamente, suele bajar el número de fotones, pero a veces no es aceptable porque un menos número de fotones afecta mucho al a escena en casos como cáusticas, etc. Si por el contrario, nuestro problema es que necesitamos mucho detalle, y el número de fotones aumenta demasiado, podemos quedarnos sin memoria para la segunda pasada. Este paper de Wan Jensen nos muestra una mejora en el algoritmo, que nos permite renderizar la imagen de forma iterativa. Esto es, realizando varias pasadas que van mejorando de cada vezla calidad final. Esto es útil porque así un iluminador puede tener un resultado aproximado de la imagen, sin tener que esperar mucho tiempo. Y además,se puede usar un número infinito de fotones. Primero se hace una pasada de raytracing, donde se almacenan datos como el punto de intersección, el BRDF, y datos de fitrado. Después se van realizando pasadas de fotones que van dando información de energia a la primera pasada. Se genera un número de fotones, y después se va recorriendo todos los puntos de hit, buscando los fotones que están cerca de ese punto de hit. Una vez terminado, descartamos los fotones calculados, actualizamos el framebuffer (ya que tenemos la información de iluminación necesaria), y ya podemos generar más fotones, y volver a actualizar la lista de interecciones. Así hasta que la calidad sea aceptable.
|