9.4.2 ¿Cómo incremento la velocidad del renderizado?
Esta pregunta puede dividirse en dos:
1) ¿Qué clase de hardware debo usar para incrementar la velocidad
del renderizado?
(Respuesta por Ken Tyler)
Lo cierto es que las necesidades computacionales para renderizar
imágenes son complejas además de requerir mucho tiempo. Este uno de los
pocos tipos de programas que en realidad ponen el FPU del procesador a
su máximo rendimiento.
Las cosas que deberán de mejorar la velocidad son, aproximadamente y
en orden de aparición:
- velocidad del CPU
- velocidad de FPU
- Velocidad del Bus y memoria caché nivel uno y dos - Mientras
más, mucho mejor. A mayor velocidad de buss, el procesador podrá
intercambiar sus cálculos más rápido al nivel 2 del caché y luego las
leerá de regreso. Por eso la velocidad del bus puede tener un gran
impacto en en el FPU y en los tiempos de cálculo del CPU. A mayor
memoria caché disponible, más rápida se hace la operación, porque el
CPU no tiene que descansar en el sistema RAM -mucho más lento- para
almacenar información.
- Cantidad de memoria, tipo y velocidad. Indudablemente es mejor
que sea más rápida y mayor. El intercambio con el disco duro debería
considerarse como la última opción posible para incrementar la memoria
del sistema. La velocidad de la operación leer/escribir al disco es
como el caminar comparado con manejar un automóvil. Otra vez aqui es
donde la velocidad del bus es un factor principal en el juego del
renderizado rápido.
- Su sitema operativo y la cantidad de aplicaciones abiertas.
Cerrar aplicaciones abiertas, incluyendo ítem de fondo como monitoreo
del sistema, programador de tareas, conexiones a internet, ventana de
control de volumen, y todas las otras aplicaciones que la gente tiene
escondidas ejecutándose a trastienda, pueden incrementar el tiempo de
renderizado robándose los ciclos de CPU. En WIndows, abra el Task
Manager y vea lo que tiene abierto y luego cierre todo excepto lo
absolutamente necesario. Otros sistemas operativos multitareas tienen
otros métodos para detectar aplicaciones abiertas y deberían usarse
igualmente.
- Y por último su tarjeta gráfica. Puede que le parezca
improbable, pero es cierto. Si tiene una tarjeta gráfica sencilla de 16
bit sus tiempos de renderizado, comparados con otros sistemas con el
mismo procesador y memoria pero con mejores tarjetas, será igual. Ni
más ni menos. Si usted juega mucho o ve muchas películas MPEG en su
sistema, entonces adquiera una buena tarjeta de videos. Si es
renderizado y trazado de rayos lo que quiere hacer, entonces invierta
en el mejor sistema cuya velocidad y arquitectura pueda conseguir. Las
tarjetas gráficas con aceleradores de hardware están diseñadas para el
soporte de sombras rápidas de polígonos sencillos, prevalecientes en la
industria del juego, y no ofrecen apoyo para el intenso esfuerzo
matemático que se genera dentro de un programa de renderizado/trazado
de rayos como Pov-Ray, Studio Max, y Lightwave. Si sus programas de
modelado utilizan los métodos de sombra de OpenGl, entonces una tarjeta
gráfica con soporte para OpenGL le ayudará a incrementar la velocidad
de actualización de la ventana de sombras, pero cuando llegue la hora
de renderizar o trazar los rayos, la imagen que está desplegando el
OpenGL desaparece.
2) ¿Cómo puedo hacer las escenas en POV-Ray de manera que rendericen
lo más rápido posible?
Hay algunas cosas que pueden agilizar el renderizado sin necesidad
de comprometer la calidad de la escena:
- Cajas delimitadores -bounding boxes-: Algunas veces los límites
automáticos de POV-Ray no son perfectos, se puede alcanzar una
velocidad considerable limitando los objetos en forma manual. Esta
clase de objetos son, por ejemplo, intersecciones y diferencias CSG,
burbujas -blobs- y objetos poligonales -poly-. Véase también: CSG speed.
- Número de fuentes de Luz: Cada fuente luminosa enlentece el
renderizado. Si su escena tiene muchas fuentes de luz, quizá debiera
contemplar el remover alguna de ellas sin que se pierda mucha calidad.
También reemplace fuentes de luz puntuales -point lights- por focos
-spotlights- cuando sea posible. Si una fuente de luz ilumina solamente
una pequeña parte de la escena, un foco es mejor que una luz puntual,
puesto que la luz puntual es evaluada por cada pixel mientras que la de
foco es evaluada solamente cuando el pixel cae dentro del cono de la
luz.
- Las luces de área son muy lentas de calcular. Si tienen grandes
efectos en media, estos son extremadamente lentos de calcular.
Utilice tan pocas luces de área como le sea posible. Siempre use luces
de área adaptivas -Adaptive- a menos que necesite una exactitud muy
grande. Uce luces de área focales cuando sea posible.
- Cuando tenga muchos objetos con la misma textura, únalos -union-
y aplique la textura una sola vez. Esto disminuirá el tiempo de cálculo
y el uso de la memoria. (Por supuesto suponiendo que no importa si la
textura no debe moverse con el objeto ...)
- Cosas que hacer cuando se realizan pruebas rápidas de
renderizado:
- Use el parámetro de calidad de comando en línea (ej.
+Q).
- Comente (o encierre con declaraciones
#if-statements)
la mayoría de las fuentes de luz y deje solamente las necesarias para
ver la escena.
- Reemplace (con declaraciones
#if-) los objetos
lentos (como las superelipsoides) con otros más rápidos (como cajas).
- Reemplace texturas complejas con otras sencillas (como
colores uniformes). Puede usar también la declaración
quick_color
para hacer esto (funcionará cuando renderice con calidad 5 o menor,
ejm, parámetro de línea de comando +Q5).
- Reflexión y Refracción: Cuando un objeto refleja y refracta
luz (como un objeto de vidrio) a menudo hace el renderizado
considerablemente lento. Para renderizados de prueba, desactive uno de
ellos (reflexión o refracción) o ambos, y se incrementará bastante la
velocidad de renderizado. Por ejemplo, al probar con objetos de vidrio
es suficiente con probar la refracción nadamás y añadir la reflexión
solamente en el renderizado final. (El problemas con los objetos que
están reflejando y refractando es que los rayos rebotarán dentro del
objeto hasta que se alcance el max_trace_level, y esto es muy lento.)
- Si tiene reflexión/refracción y un
max_trace_level
muy alto, pruebe ajustando el valor adc_bailout a algo mayor que el
valor por definición de 1/256.