7 ms·
Introducing Vulkan-Hpp – Open-Source Vulkan C++ API
- overcast 10y agoEnjoying Vulkan so far in the recently patched Doom, which netted me a minimum 10% increase in frames per second. I really hope this gets adopted / patched into current games, and those on the horizon. Seems like a big win for cross platform development.
- SolarNet 10y agoThe problem is that Vulkan isn't so much a replacement for OpenGL as it is a library that you can use to write OpenGL in the first place, it's another layer removed, and hence requires quite a lot of work to integrate.
- criddell 10y agoAre there any scene graph libraries that use Vulkan?
- gnarbarian 10y agoUnreal Engine 4 supports it. https://wiki.unrealengine.com/Vulkan https://wiki.unrealengine.com/Vulkan
- riotdash 10y agoAs a game developer I'm pretty excited about this. There is really no reason to use DX12 backend anymore in the future game development, because of the ease of development, performance and multiplatform features of the Vulkan.
- pjmlp 10y agoExcept the little detail that there is zero Vulkan support on: - iOS - macOS - PSP, PS3, PS4 - Wii U, 3DS - XBox 360, ONE - any Android version < Android 7 - UWP
- supergreg 10y agoAnd there is DX12 support for those?
- deleted 10y ago[deleted]
- pjmlp 10y agoYes for the XBox ONE, although there are some small differences with the desktop version, at least until the upcoming Aniversary update. But the point he was making was that there is no need for DX12 because Vulkan works everywhere else. Right now Vulkan is only supported on custom Android 6 forks for Samsung S7 and NVidia Shield, Android 7, GNU/Linux and Windows on a restricted set of graphic cards. Hardly a market to target for game developers that want to reach as much eyes as possible.
- mtgx 10y agoVulkan market is MUCH bigger than DX12 market right now, no matter how you put it. It's like at least 3-4x bigger. Just think how much more popular Windows 7 is compared to DX12. Xbox One is nothing in comparison.
- pjmlp 10y agoHave you checked Steam hardware survey lately? Windows 10 users are already 45%, with around 41% having DX 12 GPUs + plus around 20 million Xbox One units. As for market size of Vulkan, some S7 and NVidia shield as part of 10% Android 6, 0% on Android 7 until it reaches stable and of course those other 55% users that might have a Vulkan compatible card.
- shmerl 10y agoYou didn't answer the question. DX12 has less market than Vulkan, and will always be limited to MS systems. It's not available on PS or iOS and such. So bringing them as a reason to use DX12 instead of Vulkan was pointless.
- dmytroi 10y agoWell, considering game industry experience with OpenGL on Windows (which is in short - it doesn't work on production scale) as a game developer I, unfortunately, really doubt that it will gain any traction on Windows based platforms.
- izym 10y agoHow doesn't it work and how does that transfer to Vulkan?
- BinaryIdiot 10y agoTo be fair I've seen many game developers complain about the version of OpenGL that is included in Windows. Perhaps this had changed but I used to work with a few folks that did game developer on the side and it seemed to be a constant headache. Though I'm sure there are ways around it, etc. I'm not very knowledgable on the subject but I'd certainly love to know more :)
- Sknowman 10y agoExcept every id game is OpenGL, many of the first 3D Blizzard games, and the original source engine, all had OpenGL support.
- subb 10y agoI think the pain point of DX12 is it's incompatibility with Windows 7 (and 8). However, Windows 10 is getting a lot of traction and has surpassed Windows 7 in gamers market share (see http://store.steampowered.com/hwsurvey/directx/ http://store.steampowered.com/hwsurvey/directx/). With that in mind, if you are working on a AAA game that will come out in a couple of years, your target platforms will most likely be PS4, Xbox One and Windows 10. With those three, Vulkan doesn't make sense; DX12 will be used on Windows and Xbox One, and PS4 has its own proprietary API. Why complicate things with another API if you can use (almost) the same implementation for Xbox One and Windows 10? If Windows 7 proves itself to be still somewhat popular amongs gamers, then Vulkan might be used to port games to this platform, since it's similar to DX12 so it will be way easier than a DX11 port. However, right now, if game developers wants to use the latest API, Vulkan is a good choice since you will still be able to target Windows 7. If a lot of big games are released with Vulkan within 2 years, then it might slow down Windows 10's adoption and the market share of Vulkan systems (Windows Vista and up) will stay greater than the DX12 one (Windows 10) for longer. But for how many years? At one point, Windows 10 (or whatever's after) will dominate and the backward compatibility of Vulkan will stop being a useful marketing point. So I'm not sure why you say there's no reason to use DX12. There's many. There's also a lot of good reasons to choose Vulkan that I didn't talk about here. I just don't see how Vulkan can dominates the Windows market, much like OpenGL.
- kayamon 10y agoA lot of their "improvements" could be done just by using C99 designated initializers.
- mlvljr 10y agoAnd why the downvotes? Class-based wrappers may very well add confusion, overhead and leaky abstractions, not to mention bugs.
- astrange 10y agoAnd why are they claiming C doesn't have type-safe enums?
- banachtarski 10y agoBecause C doesn't have type-safe enums. edit: for the downvoters, I'd LOVE to be happily corrected with a link to documentation about C language support for a type safe enum.
- loeg 10y agoIt isn't type-safe in the sense you're used to in C++. But common pitfalls can be avoided if you don't destroy the type information by assigning through a vanilla integer. enum a { A }; enum b { B }; static enum a a = B; $ clang -Wenum-conversion -Werror a.c b.c:4:19: error: implicit conversion from enumeration type 'enum b' to different enumeration type 'enum a' [-Werror,-Wenum-conversion] static enum a a = B; ~ ^ 1 error generated.
- banachtarski 10y agoThe easy ability to assign it to a vanilla integer or cast it implicitly (through an arithmetic operator or comparison for example) is what I mean when I say they aren't typesafe. A warning is also a fair bit weaker than a flat out compile error, although I'll grant that compiling with -Werror (a really challenging thing for most companies) alleviates that.
- lubesGordi 10y agoVulkan is an NVIDIA gpu api. https://www.khronos.org/vulkan/ https://www.khronos.org/vulkan/
- SwellJoe 10y agoAs I understand it, the goal is a cross-platform GPU API, not specific to nVidia.
- deleted 10y ago[deleted]
- Nekit1234007 10y ago> Vulkan is an NVIDIA gpu api Your statement couldnʼt have been more misleading. Vulkan is a cross{vendor,platform} API, based on AMD Mantle.
- Asooka 10y agoActually it's AMD gpu api and it wasn't certain for a while if nVidia would get behind it.
- vuldin 10y agoI wish I could somehow flag or block people who make such false comments disguised as fact. Less than 30 seconds looking into Vulkan would have told anyone almost the opposite if what you came up with.
- izym 10y agoThis is what was previously the vkcpp project from Nvidia, which seems to have been transferred to the Khronos group.
- Hello71 10y agoSo hold on. Assuming that I understand C++ linking right, you're saying that I should include this 17000-line file in every single cpp unit in my application that uses Vulkan APIs? And people wonder why C++ programs compile so slowly.
- banachtarski 10y agoYou may understand the mechanics of C++ linking (although I doubt it because including a header has nothing to do with linkage, I'm assuming you mean ADL, overload resolution, etc), but it doesn't seem you understand the mechanics of how C++ compilers are built and optimized. Furthermore, how many cpp units do you expect to require the Vulkan API? If it's much more than a few dozen, I would argue you haven't organized your engine well. Source: former graphics engineer.
- sjolsen 10y ago>And people wonder why C++ programs compile so slowly. People have been aware of this problem for some time. It's one of the reasons the C++ community is trying to develop a proper module system (or was the last time I checked, which was a while back).
- IshKebab 10y agoBy the time C++ has a working module system it will be as relevant as Fortran is now.
- TillE 10y agoThere's an experimental module system already in Visual C++, and I think in clang as well. It will be in the 2019 standard at the very latest. I like Rust and all, but C++ isn't going away in the next three years.
- BinaryIdiot 10y agoWhoa now that is cool! Are there any games out there that currently use this C++ API of Vulkan? Very curious to know if there are any major issues with using it versus the direct C API. I'm not very knowledge regarding Vulkan so hopefully that isn't a stupid question but I want to brush up on my C++ skills and play with this! Also how similar is Vulkan to SDL? I used to use SDL quite a bit back in the day and it was awesome but I'm assuming Vulkan is far more comprehensive?
- Narishma 10y ago> Also how similar is Vulkan to SDL? They are not. You use SDL to create and manage your window and handle input, and use Vulkan or OpenGL to draw to that window.
- BinaryIdiot 10y agoThat makes a lot more sense. Thanks!
- gulpahum 10y agoThe new Vulkan C++ API from Khronos is based on vkcpp. Here's examples for vkcpp to give an idea how code with the C++ API looks like: https://github.com/jherico/Vulkan https://github.com/jherico/Vulkan Here's a basic tutorial with comments for the Vulkan C API. Vulkan is a very low level API, so there's a lot of code. It should be straightforward to port the C tutorial to use the C++ API. http://av.dfki.de/~jhenriques/development.html http://av.dfki.de/~jhenriques/development.html
- izym 10y agoDo also look at the recently released http://vulkan-tutorial.com http://vulkan-tutorial.com.