Recursos para aprender Vulkan

Leos

¿Que es Vulkan?

Vulkan es una API multiplataforma para el desarrollo de aplicaciones con gráficos 3D. Fue anunciada por primera vez en la GDC de 2015 por el Khronos Group. Inicialmente, fue presentada por Khronos como "la iniciativa OpenGL de próxima generación", pero luego el nombre fue descartado, quedando Vulkan como definitivo.

Vulkan está basado en Mantle, otra API de la empresa AMD, cuyo código fue cedido a Khronos con la intención de generar un estándar abierto similar a OpenGL, pero de bajo nivel

Su principal característica es que puede aprovechar la cantidad de núcleos presentes en el procesador principal de las PC, incrementando drásticamente el rendimiento gráfico. En ese sentido, es muy similar a DirectX 12, su competidor directo, que sólo funciona en Windows 10.10​ A diferencia de la API de Microsoft, Vulkan puede funcionar en una amplia gama de plataformas, incluidas Windows 7, Windows 8, Windows 10, Android y Linux.11​ Pese a no existir versiones oficiales para MacOS e IOS debido a las políticas restrictivas de Apple, se ha creado una versión no oficial para estas plataformas.
Uno de los canales que sigo subió un video de un repo de github para aprender vulkan.

Como me parecio interesante aquí os dejo el link de github, es un repo con una unificación de ejemplos, tutos, etc... Para vulkan.

¿Que caracterisiticas tiene Vulkan?

Vulkan está destinado a proporcionar una variedad de ventajas sobre otras API, así como su predecesor, OpenGL. Vulkan ofrece una menor sobrecarga, un control más directo sobre la GPU y un menor uso de la CPU. El concepto general y conjunto de características de Vulkan es similar a Directx 12, Metal y Mantle.

Las ventajas previstas de Vulkan sobre las API de generación anterior incluyen:

  • Vulkan es ideal para tarjetas gráficas de alta gama, así como para hardware de gráficos en dispositivos móviles (OpenGL tiene un subconjunto específico para dispositivos móviles llamado OpenGL ES, sigue siendo una API alternativa en dispositivos compatibles con Vulkan).

  • A diferencia de Directx 12, Vulkan está disponible en múltiples sistemas operativos modernos; al igual que OpenGL, la API de Vulkan no está bloqueada en un único sistema operativo. A partir del lanzamiento, Vulkan se ejecuta en Android, Linux, Tizen, Windows 7, Windows 8 y Windows 10 (también está disponible el soporte de terceros para iOS y macOS).

  • Reducción de la sobrecarga del controlador, reduciendo las cargas de trabajo de la CPU.

  • Carga reducida en las CPU mediante el uso de procesamiento por lotes.

  • Mejor escalamiento en CPU multi-core. Directx 11 y OpenGL 4 se diseñaron inicialmente para su uso con CPU de un solo núcleo y solo recibieron
    aumentos para ser ejecutados en núcleos múltiples. Incluso cuando los desarrolladores de aplicaciones usan los aumentos, la API regularmente no se escala bien en núcleos múltiples.

  • OpenGL utiliza el lenguaje de alto nivel GLSL para escribir shaders lo que obliga a cada controlador OpenGL a implementar su propio compilador para GLSL que se ejecuta en el tiempo de ejecución de la aplicación para traducir los shaders del programa en el código máquina de la GPU. Se supone que los controladores Vulkan ingieren shaders ya traducidos a un formato binario intermedio llamado SPIR-V (Representación intermedia portátil estándar), análogo al formato binario en el que se compilan los shaders HLSL en Directx. Al permitir la precompilación del shader, se mejora la velocidad de inicialización de la aplicación y se puede usar una mayor variedad de shaders por escena. Un controlador Vulkan solo necesita optimizar la GPU y la generación de código, lo que permite un mantenimiento más fácil del controlador y, finalmente, paquetes de controladores más pequeños.

  • Administración unificada de núcleos de cómputo y shaders gráficos, eliminando la necesidad de usar una API de cálculo separada junto con una API de gráficos.

Videos utiles

Links con recuros utiles

Github de ejemplos de Vulkan
Tutorial de Vulkan
How to learn Vulkan
Learning Vulkan, libro en Amazon

Espero que sea de ayuda!

Beelzenef

¿Qué es Vulkan?

1 respuesta
Ridote

#2 Ha actualizado. API de gráficos. Como OpenGL (de los mismos de hecho) pero a más bajo nivel.

Leos

@Jastro buen edit, no tenia tiempo de dejarlo bonito <3

Jastro

Vulkan me parece un gran avance, me alegra que sigue avanzando y mucha gente lo considera por fin, una alternativa a Opengl, que nunca ha conseguir hacer nada muy potable, a nivel videojueguil. Espero que Vulkan que viene mas fuerte acabe cambiando las formas en la que jugamos!

1 2 respuestas
Ridote

#5 ¿Has dicho Godot 4?

Edit: Vulkan es un avance pero mal usado es un retroceso gordo. Si lo usas mal puedes hacer cosas mucho más lentas que en openlg, just saying.

3 respuestas
arkoni

No usaba vulkan el último juego de doom?

Jastro

#6 Como todo, Unity/Godot es una bestia de hacer juegos, pero lo usa alguien que no sabe y sale mierda terrible y mal optimizada. Eso pasa siempre xD

A ver que tal sale Vulkan + Godot.

1 respuesta
Jastro

#8

Videojuegos que soportan Vulkan

  • The Talos Principle - el primer juego con soporte de Vulkan.
  • Dota 2 - el soporte de Vulkan se lanzó en mayo de 2016.
  • Doom - el soporte de Vulkan se lanzó en julio de 2016.
  • vkQuake - un port de Vulkan fue lanzado en julio de 2016.
  • Roblox - en marzo de 2017, se agregó el soporte de Vulkan.
  • Star Citizen - el Director de programación de gráficos para la Cloud Imperium Games,
  • Mad Max - los desarrolladores agregaron compatibilidad beta para Vulkan exclusivamente para el port de Linux.
  • Ballistic Overkill - el soporte de Vulkan se lanzó en mayo de 2017.
  • Quake III Arena Kenny Edition - Una modificación del motor Quake 3 agregó el soporte Vulkan en mayo de 2017.
  • Ashes of the Singularity: Escalation - se agregará el soporte de Vulkan en una próxima versión.
  • Counter-Strike: Global Offensive - el juego se transferirá a Source 2 y será compatible con Vulkan.
  • vkDoom3 - un port Vulkan de soporte Doom3 BFG fue lanzado en agosto de 2017.
  • Wolfenstein II: The New Colossus - Lanzado en noviembre de 2017 con el soporte de Vulkan
  • F1 2017 - los desarrolladores del port de Linux (Feral Interative) solo dieron soporte Vulkan
  • No Man's Sky - A partir de la edición "Beyond" (2019), se elimina el uso de OpenGL para pasar a utilizar Vulkan como API exclusiva.
  • Red dead Redeptiom 2
1 respuesta
pantocreitor

#9 RDR2 no puedo correr también sobre Vulkan???

1 respuesta
Jastro

#10 Cierto!!

B

#6 Unity soporta Vulkan desde 2017...

#1 gracias, lo miro con tiempo

edit: no sabía, la preview es de 2016

Ridote

#8 Me refería a cosas de este tipo: https://www.reddit.com/r/DotA2/comments/5zzje0/render_performance_comparison/

Fíjate las mejoras de vulkan en algunas arquitecturas en la implementación de vulkan del dota. No es tan fácil, aunque eso fue hace dos años, imagino habrán pulido eso. A ver qué hace Juanillo, se supone que es consultor de vulkan o no sé qué hostias, o sea entender tiene que entender de lo que hace, me espero una buena implementación en Godot. De hecho en su github va haciendo mierdas en el proyecto de vulkan!

starfucker

UE4 soporta Vulkan tambien :D

r2d2rigo

#5 Vulkan no es una "alternativa" a OpenGL, es un concepto completamente distinto. El problema que tenia OpenGL es que arrastra mucho legacy pero las cosas mejoraron bastante con 3.3 y 4, permitiendo al desarrollador interactuar de una manera mas directa con la GPU y evitando perdida de rendimiento por el SO, driver, etc.

Dicho esto yo NO lo recomiendo para alguien que no tenga conocimientos avanzados de como funciona una API grafica. Vulkan y D3D12 te obligan a crear muchisimas cosas a bajo nivel, desde gestion de memoria de la GPU a semaforos/mutexes para evitar acceder a recursos en distintos estados de la pipeline. Si lo que quieres es pintar poligonos por pantallas hay cosas mucho mas accesibles que meterte a Vulkan de cabeza por las buenas.

#6 por una vez coincido completamente contigo, es un cristazo bastante gordo.

1 respuesta
Ridote

#15 Es que a la gente se le va la boca con vulkan, y si opengl ya es un engorro que te cagas, vulkan es como multiplicar la complejidad 4 veces. Yo eso de aprender vulkan por aprender y más de primeras lo veo una locura, pero bueh

Usuarios habituales

  • Ridote
  • r2d2rigo
  • starfucker
  • Jastro
  • pantocreitor
  • Leos
  • Beelzenef