Mejoras en Arnold a partir de la 5.0.2.0

Aunque actualmente tenemos la versión de Arnold 5.0.2.3 (las grandes mejoras se dieron en la actualización de Arnold 5.0.2.0) y por eso he decidido incluir en esta entrada esos cambios.

Verás que en esta traducción no se han traducido los nombres de los shaders ni algunos conceptos a los que estamos más acostumbrados a escucharlos y leerlos en inglés aunque tenga su equivalente en nuestro idioma, pero al menos tienes aquí una referencia en español de lo que se ha cambiado y mejorado en esta versión. Entiendo que es una entrada excesivamente técnica ya que es la traducción de los cambios realizados y que está publicado en la página de Solid Angle.

  • Nuevo algoritmo para SSS: Se ha incluido un nuevo y más preciso modo de calcular el SSS. A diferencia del método actual BSSRDF basado en la teoría de la difusión, este nuevo método traza los rayos por debajo de la superficie en un camino aleatorio real sin hacer suposiciones sobre la geometría sea totalmente plana. Esto quiere decir que tendrá en cuenta la dispersión anisotrópica como un volumen de fuerza bruta que produce mucho mejor resultado alrededor de zonas cóncavas y pequeños detalles. También puede ser sustancialmente más rápido para radios de dispersión grandes comparado con el antiguo método. Por otra parte, el nuevo método puede ser algo más lento en medios densos, no admite sss_setname para mezclar dos superficies, puede requerir volver a marcar los materiales para lograr un aspecto similar, y es más sensible a las mallas no cerradas, las «bolsas de boca» y la geometría interna que potencialmente proyecta sombras. Este nuevo algoritmo se expone en el shader Standard Surface a través de los nuevos parámetros subsurface_type (con enum values diffusion y randomwalk) y subsurface_anisotropy (excentricidad de Henyey-Greenstein g de -1.0 a +1.0). El valor predeterminado es usar el antiguo método de difusión empírica para no romper el aspecto de las escenas existentes.
  • Car paint shader: Se ha incluido un nuevo shader para pintura de coche (car paint shader) que se puede considerar como una combinación de los shaders standard_surfaceflakes. Este shader puede crear una amplia gama de apariencia de pinturas de coche sin que te haga falta conectar varios nodos. Por ejemplo, para un efecto perlado se puede agregar fácilmente a las capas especular y de flakes simplemente ajustando algunos parámetros como specular_flip_flop y flake_flip_flop. Se puede usar una cantidad arbitraria de capas de flake(flake_layer). Los copos en una capa profunda están cubiertos por los más cercanos a la superficie y más teñidos por los pigmentos (especificados por el parámetro transmission_color).
  • Subdivision frustum culling: Los parches de subdivisión fuera de la vista o el dicing camera frustum no se subdividen. Esto es útil para cualquier superficie extendida que sea solo parcialmente visible ya que solo la parte directamente visible se subdividirá. Del mismo modo, no se realizará ningún trabajo de subdivisión si una malla no es visible directamente. Esto se puede activar globalmente configurando options.subdiv_frustum_culling true y se puede desactivar para mallas específicas con polymesh.subdiv_frustum_ignore true. El global options.subdiv_frustum_padding agrega un relleno de World Space al frustum que se puede aumentar según sea necesario para minimizar los artefactos de objetos fuera de la vista en sombras, reflejos, etc. Tenga en cuenta que el desenfoque de movimiento aún no se tiene en cuenta y los objetos en movimiento pueden requerir un relleno adicional.
  • Precisión mejorada de coords UV: Las coordenadas de malla UV se manejan ahora con mayor precisión numérica, arreglando artefactos dentados que a veces aparecen cuando se usan texturas UDIM de alta resolución en rangos de UV muy amplios.
  • Muestreo de volumen mejorado de luces de propagación baja: las luces Quad y Disc de baja dispersión ahora deberían producir menos ruido y mostrar un mayor rendimiento al participar en los efectos de dispersión atmosférica.
  • Uso mejorado de la memoria en procedural namespace: memoria reducida utilizada por el procedural namespace en aproximadamente 28 KB por primitiva procedural, por lo que los procedurales ahora usan muy poca memoria adicional. En una escena con 100K procedurales, esto dio una reducción de 2.7GB en el uso de la memoria.
  • Máscaras de opacidad más rápidas: las máscaras de opacidad basadas en mapas de texturas ahora serán más rápidas de renderizar. Las pruebas indican alrededor de 3-13% más rápido.
  • IPR más rápido: el sistema de registro de mensajes se ha optimizado, lo que resulta en un 10% más de rendimiento en IPR, como al mover la cámara. Además, el modo de IPR en kick se ha hecho sustancialmente más receptivo.
  • AiNodeDestroy más rápido: hemos optimizado el tiempo de eliminación para nodos contenidos en procedurals, reduciendo en gran medida el tiempo de apagado al final de un renderizado en escenas complejas.
  • Shader triplanar más rápido: Se ha mejorado el filtrado de texturas en el shader triplanar, lo que proporciona un mejor antialiasing y una velocidad hasta 2x, especialmente cuando se utilizan mapas de textura de alta resolución.
  • Opción celullar en shader triplanar: el shader triplanar ahora admite proyección a través de células Voronoi utilizando el nuevo parámetro de celda. El ángulo de rotación de la textura proyectada para cada celda se puede controlar con el parámetro cell_rotate. Las células se pueden mezclar sin problemas utilizando el parámetro cell_blend.
  • Shader Flake mejorado: el parámetro de tamaño se reemplaza por el parámetro de densidad, lo que facilita el control del tamaño y la cantidad de flakes. El canal alfa se puede usar como una máscara. El nuevo shader Flake admite formas sin disco y flakes 3D, que son útiles para hacer inclusiones de piedras preciosas como Goldstone, por ejemplo.
  • Shader shadow_matte mejorado: hemos mejorado y simplificado el shader para que sea más fácil de usar y hemos solucionado varios problemas antiguos: la iluminación indirecta ahora llena los AOVs difusos e indirectos globales, por lo que hemos eliminado el shader (nombre confuso) indirect_diffuse y AOVs indirectos_especulares. Las autorreflexiones ya no se representan. Se agregó un nuevo parámetro specular_IOR que controla la reflexión de Fresnel. Los parámetros offscreen_color y background_type fueron eliminados. El nuevo fondo del parámetro enum se puede establecer en scene_background (predeterminado) o background_color, lo que permite conectar una textura específica en el slot del parámetro background_color. El parámetro alpha_mask se agregó para controlar si el alfa debe ser opaco o si debe contener la máscara de sombra.
  • Compatibilidad con más atributos OSL: los shaders OSL ahora admiten búsquedas getattribute () de atributos de cámara estándar (por ejemplo, cámara: fov, cámara: resolución, etc.) así como los atributos de geometría geom: tipo, geom: nombre, geom: límites y geom : objbounds en objetos.
  • Transmitir AOV y Alpha: el shader Standard Surface con transmisión ahora puede pasar a través de AOV, habilitando el parámetro transmit_aovs. Si el fondo es transparente, la superficie transmisiva se volverá transparente para que pueda componerse sobre otro fondo. Se pasarán los AOV de expresión de Light Path, de modo que, por ejemplo, una superficie difusa vista a través de una superficie transmisiva terminará en el AOV difuso. Otros AOV también se pueden pasar directamente (sin ninguna mezcla de opacidad), que se pueden usar para crear máscaras, por ejemplo.
  • Estadísticas de tiempo de renderizado multiproceso mejoradas: los tiempos de procesamiento cuando se usa más de un thread realmente no funcionaban. Hemos mejorado esto para que los tiempos de render ahora sean mucho más confiables y útiles, y ahora podemos usarlos con confianza para determinar qué partes de Arnold son las más caras. En particular, los tiempos de subdivisión y desplazamiento mostrarán ahora cuánto tiempo total se utilizó y qué fracción de ese tiempo se empleó con threads que no pueden realizar un trabajo útil. Este tiempo de «threads bloqueados» a menudo se puede reducir mediante el uso de buckets más grandes o el orden aleatorio bucket_scanning.
  • Spacename procedurales personalizados: Procedurals ahora puede declarar un spacename personalizado utilizando el nuevo parámetro de spacename. Este spacename personalizado se puede usar en lugar del nombre del procedural, para referenciar contenidos a través de rutas absolutas o relativas. Múltiples procedurales pueden compartir el mismo spacename usando el mismo nombre personalizado. Además, pueden declarar un nombre vacío y usarán el spacename global. (# 6085)
  • Se agregó la opción -turn_smooth para kick: cuando se utiliza kick -turn, se puede agregar el flag -turn_smooth para iniciar y detener el movimiento con suavidad a medida que se alcanza la posición original con un cubic ramp.
  • Opción -laovs añadida para kick: Usando kick -laovs file.ass mostrará una lista de todos los AOV incorporados y todos los AOV registrados por este archivo .ass.
  • Se agregó una vista de mapa de calor de cputime para kick: al usar kick, ahora puede alternar entre la salida de visualización predeterminada de kick y un mapa de calor de cpu con la tecla T. El mapeo del mapa de calor se puede escalar con las teclas [ y ].
  • Compatibilidad con claves wasd en kick -ipr m: la ejecución de kick en modo IPR en el modo Maya con -ipr m ahora es compatible con el modo de teclado «wasd». Esto anteriormente solo estaba disponible en modo estilo Quake, -ipr q.
  • Información de la versión maketx: el ejecutable maketx personalizado que viene con Arnold ahora informa, tanto en la línea de comandos como en los encabezados EXR incrustados, que fue creado específicamente para «OpenImageIO-Arnold», para distinguirlo del oficial «OpenImageIO» .
  • Color Spaces de maketx: el maketx que viene Arnold ahora es compatible con OCIO y SynColor (cuando esté disponible) a través de los flags colorengine, colorconfig y colorconvert. Ver maketx –help.
  • AiMakeTx puede mostrar mensajes de información: AiMakeTx ahora también puede mostrar mensajes informativos OIIO (generados en modo detallado, por ejemplo) además de errores.
  • AiMakeTx libera el bloqueo del archivo de entrada antes: AiMakeTx ahora cerrará la textura de entrada tan pronto como sea posible en lugar de esperar a que finalicen todos los trabajos de maketx.
  • Flags optimizados de AiMakeTx y maketx: tanto AiMakeTx como maketx ahora siempre se ejecutan con los flags –monochrome-detect –opaque-detect –constant-color-detect – fixnan box3 –oiio, que puede dar como resultado archivos .tx más pequeños que son más rápidos de cargar y toman menos memoria.
  • Informe cuando las texturas se cambian durante el procesamiento: los archivos de registro ahora informan cuando las modificaciones de textura durante un render causan un error de lectura de texturas, que puede ocurrir en ciertos pipelines.
  • Soporte de la familia del espacio de color OCIO: el administrador de color OCIO ahora implementa la enumeración del espacio de color por familia. Esto es útil para la organización desplegable de UI.
  • Enumeración de vista / visualización OCIO: el administrador de color OCIO ahora puede enumerar combinaciones de visualización / visualización usando la familia «Ver (Pantalla)». Esto permite que los programas de los clientes filtren espacios de color cuando solo una transformación de visualización es apropiada.
  • Metadatos de .ass comprimidos: ahora admitimos cargar metadatos de archivos .ass.gz a través de la función API AiMetadataStoreLoadFromASS ().
  • Actualización a OIIO 1.7.17: OpenImageIO se ha actualizado a OIIO 1.7.17.

Añadidos a la API

  • Enumeración de la familia de Color Space: Las familias existentes de Color Space para la actual configuración pueden ser enumeradas usando los métodos nuevos de la API AiColorManagerGetNumFamilies  y AiColorManagerGetFamilyNameByIndex.
  • AiAOVSampleIteratorGetPixel(): Los filtros personalizados ahora pueden determinar qué pixel está siendo filtrado con el nuevo método de la API AiAOVSampleIteratorGetPixel()
  • transparent LPE label: Cuando ajustamos la etiqueta transparent LPE en un BSDF, la superficie actuará
  • transparent LPE label: When setting the transparent LPE label on a BSDF, la superficie actuará como si fuera transparente y pasará por los AOVs. Esto se debería usar principalmente para la transmisión BSDF como en el shader Standard Surface.
  • Aviso de API obsoleta: Definiendo AI_ENABLE_DEPRECATION_WARNINGS provocará que el compilar muestre avisos si se está usando una función de la API de Arnold obsoleta.
  • Random walk SSS closure: El nuevo algoritmo random walk SSS está expuesto en la API C++ como AiClosureRandomWalkBSSRDF(). El correspondiente para OSL es randomwalk_bsrdfis randomwalk_bssrdf.

Cambios incompatibles

  • autotile deshabilitado por defecto: Hemos visto que el codigo autotile en OIIO no se escala con texturas de muy alta resolución. Para evitar una carga muy lenta de texturas untiled (como un JPEG) cuando autotile esstá habilitado, hemos cmabio el ajuste de autotile a 0, con lo cual se desactiva. En muy raros casos, cuando renderizamos con un número grande de texturas untiled en alta resolución, este cambio puede degradar el rendimiento de la caché de textura. La solución real es no usar nunca archivos untiled y en su lugar convertir todas las texturas al formato .tx.
  • Dependencias maketx: El maketx que viene con Arnold ahora depende dinámicamente de libai.so y opcionalmente de syncolor_shader.so, por lo tanto, para funcionar correctamente, debe ejecutarse desde su carpeta de instalación, como kick, o alternativamente, las nuevas dependencias deben copiarse desde donde se ejecuta maketx.
  • Light groups y Volume shading: Al igual que con las formas de superficie, Arnold ahora obedece la asignación de Light Groups en formas de volumen y superficies con interiores volumétricos. Si bien en muchos casos es deseable, esto puede producir un cambio inesperado en la imagen final en escenas con asignaciones de Light Groups.
  • Shader Flakes: No fue fácil controlar el número de flakes con los parámetros de tamaño y escala porque eran mutuamente dependientes. Ahora esto se puede hacer fácilmente usando el nuevo parámetro de densidad. La forma de cada flake se ha cambiado del disco a la celda Voronoi, que es más adecuada para formar inclusiones de piedras preciosas. El tipo de salida del shader se ha cambiado de RGB a RGBA para admitir una máscara.
  • motionvector AOV: El factor de escala del vector de movimiento en el motionvector AOV incorporado ha cambiado. Esto fue necesario para corregir un error que causaba vectores de movimiento cero para ciertas posiciones del obturador. El resultado del shader motion_vector no se modifica: se puede utilizar como una solución alternativa en las escenas anteriores si necesita la escala previa.
  • Cambios en shadow_matte: Los shader AOVs indirect_diffuse e indirect_specular se eliminaron, ya que el shader ahora llena los correspondientes AOV incorporados. Los parámetros offscreen_color y background_type fueron eliminados. La reflexión especular ahora se ve afectada por Fresnel. Para retroceder al comportamiento especular anterior, establezca specular_IOR en un valor alto como 100, que desactiva efectivamente el efecto Fresnel. Ver notas en la sección de mejoras de arriba.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.