[General] Ray Tracer Sandbox en Vulkan

Si te gusta probar nuevos motores de render, aquí tienes otro, Ray Tracer Sandbox en Vulkan, un proyecto que permite a los usuarios crear y probar nuevos sombreadores. El proyecto está siendo desarrollado por Wojciech Zielonka y Firtina Ozbalikci.

El equipo está trabajando en un motor que le permite crear o probar nuevos sombreadores en tiempo real utilizando un sistema de RayTrace basado en la física. La idea principal es que los usuarios puedan probar sus propios integradores en un entorno predefinido con activos como mallas, materiales, luces y texturas, la canalización de Vulkan se abstrae en forma de sombreador y la única preocupación para un usuario es proporcionar su propia descripción de escena o usar una ya existente.

Vulkan es una nueva API del grupo Khronos (conocida por OpenGL) que proporciona una abstracción mucho mejor de las tarjetas gráficas modernas. Esta nueva interfaz te permite describir mejor lo que su aplicación pretende hacer, lo que puede conducir a un mejor rendimiento y un comportamiento menos sorprendente del controlador en comparación con las API existentes como OpenGL y Direct3D. Las ideas detrás de Vulkan son similares a las de Direct3D 12 y Metal, pero Vulkan tiene la ventaja de ser totalmente multiplataforma y le permite desarrollar para Windows, Linux y Android al mismo tiempo.

Sin embargo, el precio que paga por estos beneficios es que tiene que trabajar con una API significativamente más detallada. La aplicación debe configurar todos los detalles relacionados con la API de gráficos desde cero, incluida la creación inicial del búfer de fotogramas y la administración de memoria para objetos como búferes e imágenes de textura. El controlador de gráficos hará mucho menos sujeción de la mano, lo que significa que tendrá que hacer más trabajo en su aplicación para garantizar el comportamiento correcto.

Lo que tienes que tener claro es que Vulkan no es para todos. Está dirigido a programadores que están entusiasmados con los gráficos informáticos de alto rendimiento, y están dispuestos a poner un poco de trabajo por su parte. Si estás más interesado en el desarrollo de juegos, en lugar de gráficos por ordenador, entonces es posible que desees adherirte a OpenGL o Direct3D. Otra alternativa es utilizar un motor como Unreal Engine o Unity, que permite utilizar Vulkan mientras te expone una API de nivel mucho más alto.

Con las dudas despejadas, vamos a cubrir algunos requisitos previos para seguir este tutorial:

Una tarjeta gráfica y un controlador compatible con Vulkan (NVIDIA, AMD, Intel).
Experiencia con C++ (familiaridad con RAII, listas de inicializadores).
Un compilador con compatibilidad decente con características de C++17 (Visual Studio 2017+, GCC 7+o Clang 5+).

Si te interesa el tema de los motores de render puros e investigar por tu cuenta, aquí tienes más información sobre el tema.

En la imagen adjunta puedes ver cómo se muestran las sombras en el render prácticamente en tiempo real.

Más sobre el tema y comentarios en el foro