Rust GPU, un conjunto de herramientas para desarrollar sombreadores en Rust
La empresa de desarrollo de juegos Embark Studios ha publicado el primer lanzamiento experimental del proyecto Rust GPU, que tiene como objetivo utilizar el lenguaje Rust para desarrollar código GPU.
El deseo de usar Rust para escribir programas para GPU se deriva no solo de las características de seguridad y el alto rendimiento, sino también de la necesidad de obtener herramientas modernas para trabajar con paquetes y módulos para mejorar la eficiencia del proceso de desarrollo.
La empresa de desarrollo de Rust GPU Embark Studios también utiliza Rust en su motor de juego y está trabajando para facilitar el intercambio de código Rust entre la CPU y la GPU.
Segun ellos, históricamente, en los juegos, la programación de GPU se ha realizado escribiendo HLSL o, en menor medida, GLSL. Estos son lenguajes de programación simples que han evolucionado junto con las API de renderizado a lo largo de los años.
Sin embargo, a medida que los motores de juegos han evolucionado, estos lenguajes no han proporcionado mecanismos para tratar con grandes bases de código y, en general, se han mantenido rezagados en comparación con otros lenguajes de programación.
Si bien existen en general mejores alternativas para ambos lenguajes, ninguno de ellos está en condiciones de reemplazar HLSL o GLSL.
Ya sea porque están bloqueados por el proveedor o porque no son compatibles con la canalización de gráficos tradicional. Ejemplos de esto incluyen CUDA y OpenCL. Y aunque se han hecho intentos para crear lenguaje en este espacio, ninguno de ellos ha ganado una tracción notable en la comunidad de gamedev.
Rust GPU continúa desarrollando ideas a partir del proyecto RLSL, en el que se intentó crear un compilador de Rust al intermedio de sombreado genérico SPIR-V, que se propone en la API de Vulkan y se admite en OpenGL 4.6.
En su etapa actual de desarrollo, la GPU Rust ya le permite ejecutar sombreadores gráficos simples y compilar una parte significativa de la biblioteca estándar básica de Rust. Al mismo tiempo, el proyecto aún está lejos de estar listo para un uso generalizado, por ejemplo, los bucles aún no son compatibles con los sombreadores.
En Embark, hemos estado construyendo nuestro propio motor de juego desde cero en Rust. Tenemos experiencia previa en el desarrollo interno del prototipo RLSL y contamos con un equipo de excelentes ingenieros de renderizado que están familiarizados con los problemas de los lenguajes de sombreado actuales, tanto de juegos, motores de juegos y otras industrias. Por lo tanto, creemos que estamos en una posición única para intentar resolver este problema.
Queremos optimizar nuestro propio desarrollo interno con un único gran lenguaje, construir una comunidad y un ecosistema de gráficos de código abierto, facilitar el uso compartido de código entre GPU y CPU y, lo más importante: permitir que nuestros (futuros) usuarios y compañeros desarrolladores tengan más Cree rápidamente experiencias atractivas y atractivas.
Basado en el código en el lenguaje Rust, se forma una representación de los sombreadores SPIR-V, para cuya generación se ha desarrollado un backend especial para el compilador Rust, que funciona por analogía con el generador de código cranelift utilizado para compilar en una representación WebAssembly.
El enfoque actual es admitir la API de gráficos Vulkan y las vistas SPIR-V, pero se planean generadores para el futuro de las vistas de sombreado DXIL (DirectX) y WGSL (WebGPU). Sobre la base de Cargo y crates.io, se están desarrollando herramientas para desarrollar y publicar paquetes con shaders en formato SPIR-V.
Finalmente si quieres conocer mas al respecto sobre este proyecto, puedes consular los detalles en el repositorio del proyecto, el enlace es este.
En cuanto a los que estén interesados en poder conocer el codigo, deben saber que el código se publica bajo las licencias MIT y Apache 2.0 y es posible obtenerlo desde el siguiente enlace.
Y que además pueden consultar la documentación, la cual ya está preparada para desarrolladores para que puedan trabajar tanto en Linux, Windows y Mac. Pueden consultar la guía en este enlace.