Vulkan / Metal support direction


There have been various conversations about implementing support for Vulkan and Metal over the years, but I haven’t seen any clear decision on what path the community should take. Here’s an example:

There have been a few suggestions that Google’s ANGLE would be a good candidate for translating OpenGL calls to support Direct3D, Vulkan and Metal. I think that supporting GLSL shaders is also a must, and ANGLE can help there too. In addition, ANGLE has already been implemented in part for WinRT within lime.

Can any project leads weigh in on this? I think once there’s a clear and final decision, work can begin. Do we need to organize a fundraiser or some type of fiscal incentive to get the ball rolling on it? I think it’s better to start sooner than later, especially since OpenGL has been deprecated on macOS for years now.

Please let me know how I can help!

1 Like

I would certainly be willing to try to help someone who wants to implement an ANGLE renderer for OpenFL/Lime. I’m not experienced with low-level graphics APIs, but I am experienced with integrating C++ CFFI stuff in Lime, and I have a good understanding of how things are organized in both OpenFL and Lime to help figure out where things should go.

In my opinion, while there could be value in separate low-level Vulkan, Metal, or DX renderers, something a bit higher level that can target all of those is probably better for our project, in terms of ease of maintenance and stability. Not only does something like ANGLE give us a unified API to work with, but it may add support for new low-level targets in the future, without us needing to do much beyond updating to a new version.

WebGPU would also be a nice option to consider. However, that would need to be further in the future, since it is still being actively designed, and its APIs are still likely to change. With that in mind, I think that ANGLE is a better option than WebGPU, for the time being.