|
Seguimos con las charlas del GDC08 Esta vez le toca a un tema complejo de entender al principio, los esféricos harmónicos y la iluminación global por tarjeta. Esta técnica sirve basicamente para generalizar un mapa de entorno. Hay una matemática algo compleja, que permite transformar un mapa HDR en una serie de coeficientes, reduciendo seriamente las necesidades de almacenamiento de un shader y aumentando mucho la velocidad de render. Perdemos mucha definicion en el mapa. Sería omo tener una textura hdr y hacerle un grandísimo blur para quedarnos sólo con las partes más iluminadas, pero en realidad, eso no se va a notar en la escena (nos da igual si el mapa HDR tiene mucho o poco detalle, lo que queremos es que ilumine de forma realista). Los SH (spherical harmonics) reducen la textura a una serie de coeficientes, que sirven de mapa de entorno. En la charla habla de distintas formas de iluminación tipo "GI", nos habla de ambient occlusion, que hace un efecto chulo, nos habla de la técnica de radiosity normal maps desarrollada en valve para el HL2 (que se basa en guardar 3 lightmaps con informaciñón de la luz). El shader de tarjeta usa PRecumputed Radiance Transfer, que es retomar el antiguo algoritmo de radiosity, pero almacenando sólo ciertos datos de cuanta luz se transfiere en un polígono. El tema es que necesita conocer visibilidades, pero esto se puede precalcular. Hay mucha documentaciñon sobre esta técnica, y si estais interesados en el GI por tarjeta, desde luego es lo que necesitáis mirar, ya que todos los papers van por aquí. La presentación nos hace un resumen del shader, que es bastante complejo matemáticamente. Hay que calcular los factores de spherical harmonics, calcular los factores de PRT, comprimirlo para que no ocupe demasiado (la presentaciñon nos da algunos datos para reducir el número de bits de los factores), y realizar la integral (que es una suma de todos los factores) usando los coeficientes de esfericos harmónicos para pintar. En resumen, que es una técnica que lleva mucho tiempo para programar (os puede llevar meses tener esto funcionando), pero que permite sacar unos resultados muy rápidos en tarjeta. Lo que os he escrito aquí es un resumen muy muy vago, cada paso es un desarrollo complejo en sí mismo.
|