octubre 24, 2024

Nuevo efecto biblioteca en Evergine

La última versión de Evergine introduce una poderosa característica: los nuevos efectos biblioteca. Este nuevo tipo de efecto está diseñado para mejorar la legibilidad del código y permitir la reutilización en tus proyectos. Al desarrollar múltiples efectos, es posible que notes patrones repetidos o funciones utilitarias compartidas que deseas reutilizar. Ahora, con los efectos biblioteca, esto no solo es posible, sino también sencillo. 

¿Qué es un efecto biblioteca?  

Un efecto biblioteca actúa como una colección de variables estáticas, constantes, directivas y funciones reutilizables que pueden ser referenciadas desde tus efectos graphics y compute. Simplemente incluyendo la biblioteca en tus archivos de efectos, puedes centralizar la lógica compartida y manteniendo tu base de código de efectos limpio. 

Creando un efecto biblioteca 

Puedes crear un nuevo efecto biblioteca desde el menú de Assets de Evergine Studio o haciendo clic derecho en el Panel de Detalles de Assets y seleccionando la opción correspondiente. 

Definiendo un efecto biblioteca  

Cada nuevo efecto biblioteca debe comenzar con la metatag [Begin_Library] y finalizar con la metatag [End_Library]. Los efectos biblioteca se compilan de la misma manera que cualquier otro efecto, por lo que debes especificar la versión del perfil de compilación, tal como lo harías al definir pasadas en un graphics effect. Esto asegura que cualquier problema potencial pueda ser detectado y depurado de manera temprana, incluso antes de que la biblioteca sea utilizada en otros efectos. 

Estructurando tus bibliotecas 

Dentro de un efecto biblioteca, puedes definir variables comunes, constantes y funciones que desees reutilizar en tus efectos graphics o compute. En el siguiente ejemplo, se crea una biblioteca de Tonemapping con la lógica para implementar un ajuste de color ACES. 

Usando un efecto biblioteca en otros efectos 

Para usar un efecto biblioteca en tus efectos graphics o compute, simplemente inclúyelo usando el siguiente metatag:  

[Include_Library LibraryName LibraryIdentifierNumber] 

  • LibraryName: Un nombre legible para tu biblioteca. 
  • LibraryIdentifierNumber: Un GUID único que identifica el recurso del efecto biblioteca. 

La ventaja de usar el GUID es que permanece independiente de la ruta relativa del recurso. Esto significa que puedes mover tus recursos de biblioteca en las carpetas de contenido del proyecto sin romper las referencias. 

Para facilitar la inclusión de una biblioteca en tus efectos, puedes arrastrar y soltar el recurso del efecto biblioteca desde el Asset Details Panel a otro efecto abierto en el Editor de Efectos. Esta acción creará automáticamente la referencia en tu código. 

Ejemplo: Usando la biblioteca Tonemapping en un efecto gráfico  

A continuación, se muestra un ejemplo de cómo usar la biblioteca previamente definida llamada «MyLibrary» en un efecto graphics. 

Dependencias de los efectos biblioteca y referencias recursivas 

Los efectos biblioteca también pueden referenciar otros efectos biblioteca, lo que te permite construir efectos más complejos combinando múltiples bibliotecas. Este enfoque te ayuda a organizar tu código en un árbol lógico de dependencias y asegura una mejor modularidad y separación de responsabilidades. 

Usando directivas en tus efectos biblioteca 

Puedes aprovechar las directivas dentro de tus efectos biblioteca para controlar el flujo de tu código HLSL, lo que permite crear múltiples variaciones de tu biblioteca dependiendo de los valores de estas directivas. 

Cuando importas un efecto biblioteca en tu efecto graphics o compute, sus directivas también se importan, fusionándose con las directivas del propio efecto y todas sus bibliotecas referenciadas. Esto da como resultado un solo grupo unificado de directivas que el efecto puede utilizar. 

Manejo de errores desde el analizador de efectos 

El Editor de Efectos de Evergine ha sido mejorado con un nuevo Analizador de Efectos que proporciona información detallada sobre las nuevas metatags [Include_Library] y te ayuda a gestionar cualquier problema que pueda surgir al trabajar con efectos biblioteca. A continuación, se presentan algunos escenarios comunes y cómo el nuevo analizador los maneja: 

  1. Referencia No Resuelta: Si una biblioteca incluida tiene un número de identificador de biblioteca incorrecto, el analizador informará que no se puede resolver la referencia a la biblioteca.
  2. Error de Compilación de la Biblioteca: Si un efecto biblioteca contiene un error de código, el analizador resaltará la línea de inclusión en tu efecto principal y mostrará el error dentro de la propia biblioteca.
  3. Problemas de Referencia Cruzada: Si un efecto incluye una biblioteca que, a su vez, incluye otra biblioteca, y se detecta una dependencia cíclica, el analizador informará un problema de referencia cruzada.

Conclusiones

La adición de efectos biblioteca en Evergine abre nuevas posibilidades para el desarrollo de efectos, permitiéndote estructurar mejor, optimizar y reutilizar tu código HLSL. Con soporte para referencias recursivas, directivas y manejo mejorado de errores, los efectos biblioteca ofrecen un poderoso conjunto de herramientas para construir Render pipelines sofisticados. 

¡Pruébalo y descubre cómo puede agilizar tu proceso de desarrollo de shaders! 

Jorge Canton
Author
Jorge Cantón
Plain Concepts Research

¿Ya te vas?

Suscríbete a nuestra newsletter para estar al día de las últimas noticias, casos de éxito y mucho más. 

No mandamos spam y puedes darte de baja en cualquier momento.