En este post podemos ir viendo los avances que están haciendo en su proyecto de investigación Nvidia y Mental Ray, ambos trabajando en futuras versiones para mejorar el motor de render, lo primero que veremos es su solución por aceleración GPU para oclusión ambiental, dicho de otro modo: GPU AO.

El siguiente vídeo muestra tres de las nuevas características de GPU AO, procesamiento progresivo de alta calidad, Anti-Aliasing y la creación de instancias de objetos. Se genera utilizando una GPU Nvidia Quadro K6000.

Render progresivo, anteriormente GPU AO utilizaba un modo de muestreo optimizado para renderizado por lotes, este plan de muestreo basado en los número de Fibonacci, converge en su velocidad y eficiencia, dando en general buenos resultados, el problema de este render es que para sacarle el máximo partido, debemos saber el número de muestras por adelantado, teniendo en cuenta que además sólo podemos utilizar cierto números permitidos, la cosa se complica. A veces no estamos seguros de cuántas muestras se necesitan para lograr un render de calidad, la solución habitual a estos problemas es tirar un render progresivo, lo que nos permite ver resultados intermedios y detener el proceso, si el resultado es el esperado, genial, si no, vuelta a probar con render intermedios hasta conseguir la calidad que buscamos. Como podemos ver en el vídeo el muestreo de Fibonacci no es el adecuado para el procesado progresivo, con frecuencia las imágenes intermedias muestran efectos de sombras no deseadas y con extraños.

Con el nuevo esquema de render que están probando Nvidia y Mental Ray estos defectos se solucionan, acabando con el ruido y extraños en las sombras.

Suavizado de alta calidad, la solución existente utiliza un esquema de antialiasing muy simple para filtrar el efecto de pixeles escalonados en los bordes de la geometría. En esencia este filtrado se restringe al área de un único pixel, y cada muestra se pondera de igual forma. Por supuesto para algunas escenas, este filtrado simple no es suficiente. En el vídeo se hace zoom sobre algunos detalles de la escena para mostrar el problema, fijémonos en la brecha vertical oscura entre las puertas del armario.

Instanciando objetos en las escenas complejas, el consumo de memoria es siempre una preocupación, el modelo que se muestra en el vídeo tiene 21 millones de triángulos, utilizando unos 3 GBytes de memoria de la GPU, si queremos hacer más objetos, entonces podríamos perder la aceleración de GPU, por que no caben más modelos adicionales en la GPU. La solución actual GPU AO hace el cambio automáticamente a la CPU, pero el tiempo de respuesta y render será mucho más lento, si los objetos adicionales consisten en el mismo modelo este podría ser reutilizado en la representación sin tener utilizar mucha memoria más, esta técnica se denomina creación de instancias.

Implementando esta técnica en las pruebas que hacemos en el vídeo, podemos comprobar que incluso un millón de réplicas nos movemos con soltura.

Laboratorio Mental Ray Nvidia