Saltar al contenido principal
diciembre 5, 2020

Introduciendo WaveEngine 3.1 basado en .NET 5

Estamos contentos de anunciar que, alineados con Microsoft, acabamos de lanzar WaveEngine 3.1 con soporte oficial para .NET 5 y C# 9. Así que si usas C# y .NET 5, puedes empezar a crear aplicaciones 3D basadas en .NET 5 hoy mismo. Descárgalo desde la página de descargas de WaveEngine ahora mismo y empieza a crear aplicaciones 3D basadas en .NET 5 hoy mismo. Nos gustaría compartir contigo nuestro viaje de migración de .NET Core 3.1 a .NET 5, así como algunas de las nuevas características que son posibles con .NET 5.

Y si quieres saber más sobre nuestro nuevo motor gráfico, ¡descubre Evergine!

De .NET Core 3.1 a .NET 5

Para hacer esto posible empezamos a trabajar hace un año, cuando decidimos reescribir nuestra API de abstracción gráfica de bajo nivel para soportar las nuevas APIs gráficas Vulkan, DirectX12 y Metal. En ese momento, era un proyecto basado en .NET Framework con un editor basado en GTK# que tenía problemas para soportar las nuevas resoluciones, la multipantalla o los nuevos estándares DPI. En esa época, estábamos siguiendo todos los grandes avances en rendimiento que Microsoft estaba haciendo en .NET Core y el futuro marco llamado .NET 5 y decidimos que teníamos que alinear nuestro motor con esto para aprovechar todas las nuevas características de rendimiento, así que empezamos a escribir un nuevo editor basado en WPF y .NET Core y cambiamos todas nuestras extensiones y bibliotecas a .NET Core. Esto nos llevó un año de duro trabajo pero los resultados comparando nuestra antigua versión 2.5 y la nueva 3.1 en términos de rendimiento y uso de memoria son impresionantes, alrededor de 4-5 veces más rápido.

Ahora tenemos soporte oficial para .NET 5 y esta tecnología está lista para .NET 6, por lo que estamos contentos de ser uno de los primeros motores en soportarlo. Este es un resumen de lo que estamos construyendo con WaveEngine 3.1 y .NET 5:

Estamos utilizando la stack de .NET 5 en todas las plataformas en las que es posible, Windows, Linux, MacOS, y Web y utilizamos la stack de Mono en las que no es posible, pero estamos preparados para .NET 6 para poder finalmente unificar esto y utilizar una única stack de .NET para todas nuestras plataformas soportadas. Una de las características más interesantes que puedes ver en este diagrama es que WaveEngine es fácil de integrar con varias tecnologías de interfaz de usuario como WPF, Windows Forms o SDL. Si necesitas integrar un visor de gráficos 3D para la visualización de datos dentro de nuevos proyectos con .NET 5 esta es una gran tecnología a utilizar.

WASM

Otra tecnología interesante en .NET 5 es un nuevo compilador llamado «dotnet-wasm» con la capacidad de compilar código C# directamente a WASM para ejecutarlo en los navegadores web. Microsoft está impulsando esta tecnología como el corazón de Blazor y podemos aprovechar esto para ejecutar WaveEngine en la plataforma web utilizando dotnet-wasm, emscripten y WebGL/WebGPU. Es algo que hemos estado soñando durante años y ahora es posible, aquí puedes verlo en acción con el proyecto Paidia:

(La demo del Project Paidia es un simple juego con un nuevo modelo de Inteligencia Artificial que se ejecuta utilizando ONNX.js y WaveEngine en el navegador)

Nueva pipeline de postprocesamiento

Con la nueva versión de .NET 5, también publicaremos una nueva herramienta dentro de nuestro editor independiente para editar el pipeline de postprocesamiento con un editor de gráficos. Creemos que esto es algo nuevo en esta área que permitirá a los usuarios diseñar pipelines de postprocesamiento profesionales en sus aplicaciones. Su aspecto es el siguiente:

El nuevo pipeline de postprocesamiento está completamente basado en Compute Shader donde es posible aplicar nuevas técnicas como LDS (Local Data Share) para mejorar el rendimiento estándar basado en Pixel shader. Cada caja del gráfico del editor es un compute shader con entradas y salidas, el usuario puede escribir su compute shader en nuestro editor de efectos o utilizar alguno de los incorporados en la nueva versión.

Para nuestro material estándar, la nueva versión viene con un gráfico de post-procesamiento estándar que los usuarios pueden editar para adaptarlo a sus necesidades. El gráfico estándar viene con todas estas técnicas TAA (antialiasing temporal), Bokeh DoF (profundidad de campo), SSAO (Screen Space Ambient Occlusion), SSR (Screen Space Reflections), Camera Motion Blur, Bloom, Grain, Vignette, Color Gradient y FXAA.

En este vídeo puedes ver todas estas técnicas aplicadas al mismo tiempo en un proyecto de demostración:

Recursos

Empieza a desarrollar aplicaciones 3D con .NET 5 y C# 9 ahora mismo siguiendo estos pasos:

  1. Descarga WaveEngine 3.1
  2. Prueba las nuevas muestras basadas en .NET 5
  3. Envíanos tu feedback
Javier Cantón
Autor
Javier Cantón
Plain Concepts Research