lunes, 26 de junio de 2017

Reducir los rebotes de la luz para acelerar el renderizado con Cycles en Blender

La cantidad de rebotes de los rayos de luz sobre las superficies de los objetos de una escena de Blender se pueden limitar a un rango, con sus valores máximos y mínimos, que se definen desde el apartado “Trayectoria de rayos” del Panel Procesado ("Render") del Editor Propiedades (resaltado con rojo en la siguiente imagen):


Según Andrew Price, en el video de Blender Guru sobre el que se basa esta entrada (y que está completo al final de la misma), es innecesario el uso de los valores predefinidos (Máx: 12 y Min: 3), ya que con valores más bajos se logran resultados prácticamente iguales y en menos tiempo de renderizado.

Para realizar mis propias pruebas sobre este punto utilicé dos modelados descargados de la web. Las capacidades de la PC en la que hago estas pruebas son escasas, inclusive el procesado lo hace por CPU y no por GPU, por lo que los tiempos fueron altos. Pero, lo que importa para la prueba no fueron los tiempos individuales de cada renderizado, sino la comparación porcentual entre los tiempos, con distintos valores de “rebotes”, en un mismo modelo.

Modelado 1: El primero que utilicé es uno de los modelados de los escenarios de “Pepper & Carrot” que su autor, David Revoy, ha puesto a disposición para su descarga. En este caso, el archivo que descargué fue el de las calles de Komona (una descarga de 0,85 MB para un archivo de 4,3 MB luego de descomprimido). Es un modelado con una sola luz (el sol) y sin texturas ni materiales reflectivos, ni nada por el estilo, por lo que era de presuponer que la utilización de valores bajos de “rebotes” no solo iba a acelerar los tiempos de renderizado, sino que no iba a afectar mayormente la calidad del resultado final.

Modelado 2: El segundo es un modelado que utilicé está disponible para descargar desde la sección “Demo files” de la web de Blender. Se trata de “BMW Benchmark”, obra de Mike Pan.
En este caso, el archivo comprimido a descargar pesa 6,0 MB (incluye dos archivos de unos 3,1 MB cada uno: uno optimizado para renderizado por CPU y el otro por GPU).
Yo utilicé el optimizado para CPU.
En este caso se trata de un modelado muy complejo, con muchas luces y reflejos, por lo que era de esperar que la utilización de distintos valores de “Rebotes” iban a variar en mucho los tiempos de renderizado y los resultados finales.

Modelado 1 - Prueba 1 / Render a Máx:12 - Min: 3

Abrí ese archivo en Blender y lo rendericé con los valores predefinidos que traía (incluyendo los 12 de máximo y 3 de mínimo para los "rebotes" en el apartado "Trayectoria de rayos").
En este caso, el tiempo de renderizado fue de 102 minutos y este el resultado:



Modelado 1 - Prueba 2 / Render a Máx:4 - Min:1

Para la segunda prueba bajé los valores de “Rebotes” a 4 de Máximo y 1 de Mínimo.
En este caso, el tiempo de renderizado fue de 69 minutos y este el resultado:


O sea, el procesado de la escena, con estos valores, llevó un 70% del tiempo que se necesitó en la prueba 1 y no hay diferencias visibles entre ambos resultados.

Modelado 1 - Prueba 3 / Render a Máx:2 - Min:1

En la tercera prueba fijé los valores de “Rebotes” en 2 de Máximo y dejé el Mínimo en 1.
En este caso, el tiempo de renderizado fue de 50 minutos y este el resultado:



En esta prueba, el procesado de la escena, llevó un 49% del tiempo que se necesitó en la prueba 1 y un 72 % del tiempo que insumió la prueba 2.
En el resultado se nota, solo en la escalinata de la fachada del edificio violeta, que la zona de sombra queda algo más oscura.

Modelado 1 - Prueba 4 / Render a Máx:1 - Min:0

La cuarta prueba fue con los valores de “Rebotes” en 1 de Máximo y 0 de Mínimo.
En este caso, el tiempo de renderizado fue de 41 minutos y este el resultado:


En esta prueba, el procesado de la escena, llevó un 40% del tiempo que se necesitó en la prueba 1, un 59% del tiempo utilizado para la prueba 2 y un 82 % del tiempo que insumió la prueba 3.
Eso sí, en el resultado se nota un oscurecimiento general de todas las zonas de sombra.

Modelado 1 - Prueba 5 / Render a Máx:0 - Min:0

Por último, puse ambos valores en 0, o sea, sin “Rebotes” y, entonces,  el tiempo de renderizado fue de 28 minutos y este el resultado:



En esta prueba, el procesado de la escena, llevó un 27% del tiempo que se necesitó en la prueba 1, un 41% del tiempo utilizado para la prueba 2, un 56% del tiempo de la prueba 3 y un 68% del tiempo que insumió la prueba 4.
Como se ve en el resultado, las zonas de sombra quedan notoriamente más oscuras.

Aquí una imagen que puede ayudar a comparar los 5 resultados, tomando el tiempo mayor (102 minutos) como 100%:



Modelado 2 - Prueba 1 / Render a Máx:12 - Min: 3

Para la primera prueba con el modelado 2, abrí ese archivo en Blender y la única modificación que hice en su configuración predefinida fue en bajarle el máximo de “rebotes” de 32  a 12 (el mínimo ya estaba en 3). El proceso de renderizado llevó 42 minutos y este el resultado:



Modelado 2 - Prueba 2 / Render a Máx:4 - Min:1

Para la segunda prueba bajé los valores de “rebotes” a 4 de Máximo y 1 de Mínimo.
En este caso, el tiempo de renderizado fue de 35 minutos y este el resultado:



O sea, el procesado de la escena, con estos valores, llevó un 83% del tiempo que se necesitó en la prueba 1 y en el resultado se ve los focos del automóvil algo menos brillantes y el resto de la imagen quedó básicamente igual al de la prueba 1.

Modelado 3 - Prueba 3 / Render a Máx:2 - Min:1

En la tercera prueba fijé los valores de “rebotes” en 2 de Máximo y dejé el Mínimo en 1.
En este caso, el tiempo de renderizado fue de 32 minutos y este el resultado:



En esta prueba, el procesado de la escena, llevó un 76% del tiempo que se necesitó en la prueba 1 y un 91 % del tiempo que insumió la prueba 2.
En el resultado se nota que los focos están aún menos brillantes, pero en el resto de la imagen las diferencias son apenas perceptibles.

Modelado 2 - Prueba 4 / Render a Máx:1 - Min:0

La cuarta prueba fue con los valores de “Rebotes” en 1 de Máximo y 0 de Mínimo.
En este caso, el tiempo de renderizado fue de 33 minutos y este el resultado:



En esta prueba, el procesado de la escena duró 1 minuto más que la prueba 3 y, ahora sí, se nota un oscurecimiento general de todas las zonas de sombra, no solo en los focos.

Modelado 2 - Prueba 5 / Render a Máx:0 - Min:0

Por último, puse ambos valores en 0, o sea, sin “Rebotes” y, entonces,  el tiempo de renderizado fue de 24 minutos y este el resultado:



En esta prueba, el procesado de la escena, llevó un 57% del tiempo que se necesitó en la prueba 1, un 69% del tiempo utilizado para la prueba 2, un 75% del tiempo de la prueba 3 y un 73% del tiempo que insumió la prueba 4.
Como se ve en el resultado, las zonas de sombra quedan notoriamente más oscuras y se pierden muchos detalles.


Aquí una imagen que puede ayudar a comparar los 5 resultados, tomando el tiempo mayor (42 minutos) como 100%:



La relación entre el tiempo de procesado y la calidad del resultado está afectada por numerosas variables, y la mejor opción va a depender de cada caso en particular.

  • En el caso del primer modelo utilizado en esta prueba, las mejores opciones son la prueba 3 y la prueba 4, que insumen un 49 % y un 40 %, respectivamente, del tiempo de renderizado que se necesita con los valores predeterminados de “rebotes”.
  • En el caso del segundo modelo, hay mucha incidencia de las luces en el resultado y la mejor opción parece ser la prueba 2, la que insume un 83 % del tiempo de renderizado que se necesita con los valores predeterminados de “rebotes”.
En definitiva, se confirma que no conviene quedarse con los valores predeterminados de “rebotes”, ya que valores menores dan resultados muy similares y se ahorra tiempo de renderizado.
Igualmente, sea como sea, siempre hay que hacer pruebas para encontrar los valores más apropiados para cada caso en particular.



A continuación el video original y completo de Andrew Price (Blender Guru) sobre las “18 maneras de acelerar el renderizado con Cycles”. El primer consejo, “Reduce Light bounces”, que es del que se trata esta entrada, lo encuentran entre los minutos 3'53" y 6'40".

 

No hay comentarios:

Publicar un comentario

Lo que escriba a continuación será revisado antes de publicarse.
Gracias por tus comentarios.