| ▲ | socalgal2 4 hours ago | |||||||||||||||||||||||||||||||
Nice article, though the diagram showing [OpenGL] [WebGL] [WebGPU] being built on Vulkan and then from Vulkan to D3D12 and Metal is wrong. WebGL and WebGPU go directly to D3D and Metal, they do not go through Vulkan first Also, Vulkan is labeled as Open Source. It is not open source. The are other mistakes in that area as well. It claims WebGPU is limited to Browsers. It is, not. WebGPU is available as both a C++ (Dawn) and a Rust (WGPU) library. Both run on Windows, MacOS, Linux, iOS, and Android. It is arguably the most cross platform library. Tons of native projects using both libraries. Vulkan is also not really cross-platform any more than DirectX . DirectX runs on 2 platforms (listed in the aritcle). Vulkan runs on 2+ platforms, Android, and Linux. It runs on Windows but not on all windows. For example, in a business context using Remote Desktop, Vulkan is rarely available. It is not part of Windows, and is not installed by default. Graphics card companies (NVidia, AMD) include it. Windows itself does not. Vulkan also does not run on MacOS nor iOS | ||||||||||||||||||||||||||||||||
| ▲ | kasool 4 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||
To elaborate on this, Vulkan is an open _standard_ whose many implementations (user mode driver) may or may not be open source. Vulkan is just a header file, it's up to the various independent hardware vendors (IHVs) to implement it for their platform. Also a small correction: Vulkan actually _does_ run Apple platforms (via Vulkan-to-Metal translation) using MoltenVK and the new KosmicKrisp driver, and it works quite well. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | kreco 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
> Vulkan is also not really cross-platform any more than DirectX. [...] Vulkan is not entirely cross-platform, but it's still way "more" cross-platform than DirectX by your own point of view. DirectX: - Windows - Xbox Vulkan: - Linux - Android - Windows - Nintendo Switch - Nintendo Switch 2 Metal: - MacOS - iOS | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | kreco 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
> It claims WebGPU is limited to Browsers. It is, not. WebGPU is available as both a C++ (Dawn) and a Rust (WGPU) library. Both run on Windows, MacOS, Linux, iOS, and Android. It is arguably the most cross platform library. Tons of native projects using both libraries. I feel like it's important to mention that WebGPU is a unified API on top of whatever is native to the machine (DirectX, Vulkan or Metal). | ||||||||||||||||||||||||||||||||
| ▲ | pjmlp 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
Also all Khronos APIs have endless extensions, many of which are proprietary and never made part of core, thus many applications cannot be ported across graphics card vendors or operating systems. Playstation also doesn't do Vulkan, even though people routinely say otherwise. Also while the Switch does OpenGL and Vulkan, it is really NVN what everyone that wants to get all the juice out of it uses. | ||||||||||||||||||||||||||||||||
| ▲ | dahart 3 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
At least Vulkan runs on Windows, that certainly makes it more cross-platform than DirectX. According to Google, some VNCs on Linux don’t support Vulkan, but I don’t think that’s a fair reason to suggest Vulkan doesn’t run on Linux in general, right? You’re right Vulkan isn’t part of the OS. Does that usually matter, if most people get Vulkan support through their driver? | ||||||||||||||||||||||||||||||||
| ▲ | LoganDark 4 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||
The Vulkan specification is Open Source. Many Vulkan implementations are not. Vulkan also isn't built on D3D at all, and only MoltenVK (an open-source implementation for Apple platforms) is built on Metal. (Edit: It appears Mesa also now has KosmicKrisp as a Vulkan translation layer for extremely recent (≤5 years) Mac devices.) > WebGPU is available as both a C++ (Dawn) and a Rust (WGPU) library. WebGPU is implemented by both a C++ library (Dawn) and Rust crate (wgpu-rs), but like Vulkan, is itself only a specification. Also I'd still hesitate to even call wgpu-rs an implementation of WebGPU, because it's only based on the WebGPU specification, not actually an exact conforming implementation like Dawn is. > Vulkan is also not really cross-platform any more than DirectX . Sure it is: DirectX makes assumptions that it's running on Windows, and uses Windows data structures in its APIs. Vulkan makes no such assumptions, and uses no platform-specific data structures, making it automatically more cross-platform. Sure, users of DirectX can be cross-platform with the use of translation layers such as Wine or Proton, but the API itself can't be ported natively to other platforms without bringing the Windows baggage with it, while Vulkan can. Additionally, Vulkan provides a lot more metadata that can be used to adapt to differing situations at runtime, for example the ability to query the graphics devices on the system and select which one to use. DirectX did not have this capability at first, but added it two years after Vulkan did. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||