Hacker News new | past | comments | ask | show | jobs | submit login

I’m curious whether people who hold this view are graphics developers themselves who’ve developed games?

The reason I ask is because there are so many different graphics APIs, of which Vulkan is the one that has the lowest rates of direct targeting.

You’re looking at custom platform APIs everywhere but Linux. Windows and Xbox only officially supports DirectX (including console variants here), PlayStation have their own, Switch supports their own plus Vulkan (and most people don’t target Vulkan on there).

Even Metal has significantly more games targeting it due to iOS support. Before people say those are only mobile games, thats a severe underestimation of what games are on mobile.

So every cross platform game needs to support multiple APIs anyway, and even if you count every API , Vulkan is by far in last place.

Edit: I’ll also add that both macOS and Linux had lack of games when their only API was a cross platform one: OpenGL. yes, macs GL is outdated today but it wasn’t always , and just like Vulkan, very few games directly targeted GL anyway.




Yes.

Windows supports Vulkan just fine, but engine support is lacking. IMO Metal prevents it from being universal in engines such as Unity, so instead a lot of effort goes into DX11 as the lowest-common-denominator to emulate i.e. with shaders. As a result, DX12 AND Vulkan progress is held back IMO because shader performance is necessarily worse when you have multiple layers of inefficient transpiling instead of running SPIR-V everywhere.

To add to that, I don't think most mobile developers are going to Metal directly; a huge number of them make use of it through Unreal or Unity. With Unity, customizing the rendering backend is not really possible without an insane amount of internal knowledge about it (not to mention source access at the read-only level or above).

I think that Vulkan is not particularly behind as an API, it's closer to a usable "almost there" state in terms of developer access. If Unity threw their weight behind improving their shader compilation pipeline and building it around SPIR-V/Vulkan, I think it would rapidly become more universal.


spir-v can be transpiled to MSL just fine so I’m not sure how Metal is holding Vulkan back.

Even then, none of these game engines are using direct authored shaders anymore, instead using shader graphs which are much easier to target any backend on.

In the case of Unity they also support WebGL which is much more limited than any of the other APIs and somehow WebGL isn’t holding those back.


Speaking as a professional gamedev...no. Shader Graph is being pushed but still results in sufficient boilerplate that it's worth optimizing directly.


Anectotal, but my current engine of choice does not support Metal. As OpenGL is deprecated on MacOS, I do not wish to release my games there.

Supporting open APIs does matter, moreso if «everyone» can get onboard, allowing for momentum to grow in service of continued support and development.


As a gamedev, what matters is ROI: can we recoup the costs of supporting this new platform/API/etc. by selling to a large enough consumer base?

The numbers have been run many times by game studios large and small: it only makes sense to support Windows/DirectX and the three major consoles. Maybe Metal if you're targeting iOS.

No open standards. Those only earn you Stallman good boy points and you can't pay your bills with those.

No one is using OpenGL or Vulkan to a significant extent any more.


> No one is using OpenGL or Vulkan to a significant extent any more.

Absolutely untrue. See also: Android.


And steam deck. Right now I am about to launch a game on steam deck (Valheim). It has two options - launch with Vulkan or launch with opengl.


I thought that Windows and PlayStation also supported Vulkan ??

EDIT : Ok, I see, more details here : https://news.ycombinator.com/item?id=33742823

----

Also, not every game has to target every platform, especially when we're talking about radically different inputs / outputs !

I'm honestly surprised about Factorio going to the Switch (especially since they supposedly started working on it before the Steam Deck, which I could have seen as having been a «tech demo stepping stone»), considering how much Factorio relies on precise mouse clicking !


Windows doesn’t officially support Vulkan. It’s exposed by third party drivers, but isn’t the official API (and was indeed limited in use for a while). One could argue that it’s moot though but there are ramifications.

PlayStation supports GNM not Vulkan.

Afaik the switch is the only recent console to support Vulkan but it’s not preferred, instead using the NVN api. Not counting the SteamDeck since it’s a general purpose computer.


> Windows doesn’t officially support Vulkan. It’s exposed by third party drivers, but isn’t the official API (and was indeed limited in use for a while). One could argue that it’s moot though but there are ramifications.

There aren't really any practical differences and if anything, Direct3D being official never stopped it from rotting away at a faster rate than OpenGL and Vulkan - older games relying on Direct3D, even D3D9 despite how widespread that one was, are way more to likely to be broken in modern Windows than games using OpenGL and gamers nowadays often end up using tools like DXVK (which implement Direct3D on top of Vulkan) to get their older games work properly even under Windows.

The main reason Direct3D is more widespread than OpenGL and Vulkan is that D3D was also available on Microsoft's consoles which were themselves very popular. It isn't a coincidence that games were as likely to use OpenGL as Direct3D (or even offering backends for both) at the past but somewhere around the mid-2000s when XBox and XBox360 consoles started taking off Direct3D also took off.


DX9 was a steadfast because of DX10 was both a highly breaking update and required a new , highly unpopular OS.

Unfortunately that meant DX9 had the most market share at the time and for many years after.

While I agree that consoles helped the adoption of DX10/11/12, I disagree that it was driven mainly by the popularity of the XBox.

The big reason IMHO, and it’s similar with Vulkan, is that GL was fractured with tons of vendor extensions, much higher variation of feature support etc… DX was a more stable and consistent target.

There’s also the renewed investment by Microsoft into DX at the time, with a lot of investment into abstracting the other parts of the OS. That was probably driven by the Xbox like you say, but I think it’s a subtle difference in that it became the better API surface to target vs GL+other audio and input libs, instead of the ubiquity of the consoles.


Vendor extensions aren't really an issue in practice though - if your program needs the functionality the extension provides, you'll use it and have it as a requirement. If it is good/essential functionality, it'll either become part of ARB or EXT at some point or at the very least will be implemented by multiple vendors.

It isn't like applications have to support all of extensions or anything like that. If some functionality was provided by, e.g. D3D10 then the same functionality would also be provided by OpenGL + some extensions.

If anything extensions are a good thing because it is thanks to them that OpenGL wasn't stuck in OpenGL 1.1 that Microsoft provided with Windows and how a lot of new hardware functionality was exposed to applications before even D3D had access to it - without even being locked to a specific OS or OS version (like the Vista you mentioned). And unlike Direct3D you didn't had to do a D3D9->D3D10/11->D3D12 complete rewrite of your code, you just used the new functionality where that makes sense.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: