Ya han pasado 10 años desde que se anunció el motor de render Cycles. En la última década Cycles se ha convertido en un renderizador de producción con pleno derecho, utilizado por muchos artistas y estudios.

Los desarrolladores del motor han aprendido muchas cosas en estos 10 años, cosas que funcionaron bien y también cosas que no funcionaron tan bien, o quedaron desactualizadas a medida que los algoritmos de renderizado y el hardware evolucionaban.

El equipo de desarrollo está dispuesto a hacer mejoras. Sin embargo, algunas decisiones tomadas en el pasado ahora están frenando el rendimiento y dificultando el mantenimiento del código.

Para abordar eso, hace tiempo empezaron un proyecto de investigación llamado Cycles X, con el objetivo de actualizar la arquitectura y prepararla para los próximos 10 años.

En lugar de encontrar soluciones rápidas u optimizaciones que resuelvan solo una parte del problema, estamos replanteando la arquitectura en su conjunto.

En términos generales, el objetivo del proyecto es:

  • Mejorar la arquitectura para el desarrollo futuro.
  • Mejor usabilidad de la ventana gráfica y la representación por lotes.
  • Incrementar el rendimiento en las CPU y GPU modernas.
  • Introducir algoritmos de renderizado más avanzados.


Su primer objetivo fue validar la nueva arquitectura. Para ello, han implementado el prototipo de un nuevo kernel de GPU y nuevos algoritmos de programación para presentación por lotes y ventanas gráficas.

-prototipo-de-un-nuevo-kernel-de-gpu.png


Hoy compartimos algunos resultados iniciales de rendimiento y publicamos el código para los colaboradores de Cycles.

Hay disponible una presentación técnica para los desarrolladores sobre la nueva arquitectura, y el código se puede encontrar en la rama cycles-x en git.blender.org.

Queda mucho trabajo por delante. Calculamos que pasarán al menos 6 meses hasta que este trabajo sea parte de un lanzamiento oficial de Blender.

Primeros resultados

En primer lugar, algunos resultados de la representación de GPU con escenas de referencia conocidas. Las escenas se han modificado para eliminar entidades como la representación por volumen, que aún no se han implementado.

Ten en cuenta que los números cambiarán a medida que sigamos trabajando en la nueva arquitectura. Patrick Mours añadió el soporte de OptiX hace unos días.

-quadro-rtx-6000-optix.png -quadro-rtx-6000-cuda.png -quadro-rtx-a6000-optix.png -quadro-rtx-a6000-cuda1.png

Las mejoras más significativas se encuentran en escenas interiores con muchos rebotes de luz y sombreadores, donde los nuevos núcleos pueden lograr una mayor ocupación y coherencia.

El rendimiento de representación de CPU es aproximadamente el mismo que antes en este momento, pero la nueva arquitectura también abre nuevas posibilidades allí.

En segundo lugar, han estado trabajando para mejorar la representación de la ventana gráfica.

Los kernels de renderizado más rápidos ayudan, pero también encontramos que mejorar la programación, el tiempo y los mecanismos de visualización puede hacer que la ventana gráfica sea más interactiva.

El nuevo soporte de ventana gráfica para muestras de muestreo y procesamiento por lotes adaptables lo hace para que la imagen se limpie más rápido una vez que se realicen las primeras muestras.

Esperando avances

En los próximos meses probarán nuevas ideas de optimización y restauraran la funcionalidad que falta. Cuando falta funcionalidad, normalmente es porque quieren adoptar un enfoque diferente en la nueva arquitectura.

Algunos ejemplos:

Renderizado por volumen: planean implementar ray-marching y el muestreo ligero con algoritmos más modernos.
Captadores de sombras: probaran un algoritmo diferente que puede tener en cuenta la luz indirecta.
Renderizado multi-dispositivo: experimentaran con un equilibrio de carga más detallado sin tiles.

Más allá de esto, la nueva arquitectura debería permitirles encajar más fácilmente en algoritmos de renderizado como la guía de rutas, con la que experimentaran e investigaran cómo se pueden hacer compatibles con GPU.

La Fundación Blender ha anunciado Cycles X, una importante reescritura del próximo renderizador de producción del software, diseñado para probarlo en el futuro durante los próximos 10 años.

La nueva versión, que actualmente se incorporará a Blender 3.1, mejora en gran medida los tiempos de renderizado en las GPU modernas y la interactividad de la ventana gráfica, y agregará compatibilidad con la representación reanudable e incremental.

Una importante reescritura de Cycles en el décimo aniversario del renderizador desvelada por los desarrolladores Brecht van Lommel y Sergey Sharybin durante una transmisión online en Blender today, Cycles X.

La reescritura está pensada para abordar problemas de larga duración con el representador, para facilitar la compatibilidad con el nuevo hardware y para agregar características más avanzadas para la representación de producción.

A pesar del creciente uso de Eevee, el renderizador en tiempo real más nuevo de Blender, para la salida de calidad final, Cycles sigue siendo la herramienta principal de la mayoría de los usuarios de Blender para renderizado fotorrealista, particularmente para VFX y visualización arquitectónica.

Compatibilidad con el renderizado reanudable

Los cambios previstos para futuras compilaciones incluyen compatibilidad con la representación reanudable, lo que debería permitir pausar un renderizado, guardar los resultados en el disco y reiniciarlo más adelante.

Los desarrolladores también planean algoritmos más avanzados para la representación de volúmenes, cáusticas y para escenas de muestreo con un gran número de luces.

La nueva arquitectura también debería facilitar la implementación de grupos de luz: compatibles con el antiguo motor de renderizado interno de Blender, pero no actualmente en Cycles.

Más información aunque no mejor explicada en el blog de Blender.