Skip to main content
Up and Coming
February 16, 2016

Higher level C++ API for Oculus SDK?

Thanks for all the feedback on the scripting language for VR. I did try them all (including SecondLife) but unfortunately they all have some performance issues.

I started working with the Tiny Room demo and actually it works great. I was able to build a lot of the things that I want and was very happy with the FPS rates (judder doesn't make me sick, but it just exhausts me and feels awful).

I was starting to write a bunch of code to do higher level tasks (geometric objects, text, input, etc) but wanted to check to see if anyone had started an API like that or even just more example code.

Cheers

    22 replies

    Up and Coming
    February 22, 2016
    Definitely won't have different shaders. I don't see any visual benefit there.

    I agree, animating millions of objects could be hard to do performance wise. But anything extraneous that reduces the amount of data that can be visualized needs to be pruned away, which is why I'd rather start from something as bare bones as possible.
    Inspiring
    February 22, 2016
    With that many objects, you may want to look at DirectX 12 or Vulkan. Though Oculus doesn't have support for either of those APIs yet, you may be able to do some interop tricks to get it working. Vulkan to OpenGL should work, however the Vulkan drivers (at least on Nvidia) don't have VR support yet. I'm not sure about DX12, but that could be an option as well.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Up and Coming
    February 22, 2016
    Yes, I'm having some luck with Lamour42's https://github.com/ClemensX/ShadedPath12 for d12

    I'm a bit skeptical about Vulkan, performance wise. Cross platform rarely screams "performance".
    Up and Coming
    February 23, 2016
    You asked 6 days ago, a bare bone application that loads textures, display text and draw a bunch of stuff does not need much more time to write you know ? And it is the needs you describe.

    Vulkan will be great in an unknow future, for the same reasons dx12 is a great step forward. But just like dx12, you will fight with drivers bugs for a few years from now.

    EDIT: i have some doubt you are at the skills to arguments, performance wise, about dx11,dx12, vulkan or unity/unreal. I may be wrong. But it is how your answers tastes.

    You should describe what you want to achieve and then we can arguments on the best way to do it. But asking for a c++ api is probably too biased from the original problem that it will lead nowhere.

    So what you want to do in the first place, some numbers for the expected load, the expected supported hardware, etc.
    Up and Coming
    February 23, 2016
    :D

    I've never met a API that's goals included cross platform which performed better than an API that focused on a specific platform.

    I'm very excited that you think Vulkan will be faster than direct12 apps written specifically for Windows. I love being proved wrong when I'm skeptical about something.

    EDIT: To be fair, I will agree an abstraction layer is always nice in case Vulkan proves out. But for now, Apple doesn't seem interested in making gaming machines.
    Inspiring
    February 23, 2016
    I don't think there is any reason, inherently, that Vulkan would be slower than DirectX 12. The only issue is that game developers and hardware vendors may favorite DirectX and hence you end up with better drivers for DX12 so maybe better performance. But that really isn't anything about the API.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Up and Coming
    February 23, 2016
    You might be right, but my experiences is that in every API trade offs are always required. In cross platform APIs, certain sacrifices will need to be made in order to be compatible with disparate OSs and Hardware. If performance is your overriding concern, I've always seen focusing on a specific API for a specific OS/Hardware situation works best.

    If cross platform is more important (say, you want to support Macs), then yah .. Java over C++, OpenGL over DirectX, etc.
    Up and Coming
    February 23, 2016
    Vulkan and dx12 on PC should have quite close performance if drivers are well optimized, my bet is dx12 will be ahead based on how the real world works. Personnaly, i have no interest in vulkan as i work on games for windows, ps4 and xboxone only. If i had to do smartphone, i would go vulkan.

    For the cross platform thing, it is true that some nasty details are still hidden, but what is important was to unlock a better view of how GPUs handle stuff.
    Up and Coming
    February 23, 2016
    For Data Visualization,
    "galopin" wrote:

    For the cross platform thing, it is true that some nasty details are still hidden, but what is important was to unlock a better view of how GPUs handle stuff.


    Another significant problem with cross platform is that it necessarily leads to commoditization which is something no Vendor wants (Apples versus Microsoft).

    As much as us developers want open, cross platform standards, there is no real economic incentive to make these as it becomes a race to the bottom where only cheap, chinese manufacturers (or whoever. Doesn't have to be chinese, that's just the current state of things) win.

    So while we can look from the current state and say cross platform is the way to go, the companies will always invent new ways to do things faster if you just lock into their particular api/platform.
    Up and Coming
    February 23, 2016
    "blazespinnaker2" wrote:
    For Data Visualization,


    That's why i do not credit a lot of trust to what you said, saying "for data visualization" is as helpful as an empty glass when you are thirsty... If you want to do data visualization, i suggest you to use Microsoft Excel, and i am still relevant :)

    In regards to 3d API, yes dx12 and vulkan are not perfect, but are pretty good in their design, light years in front of the DX11 and GL, and where let's say could have be a little deeper, it would only be relevant for maybe 0.1% of the developers working with these APIs.

    Most heavy rendering applications, and this is 90% of games here, hit a terrible CPU bottle neck in the previous render API, but a modern renderer under DX12 or Vulkan is able to render more than ever for a fraction of that CPU cost. You can expect the GPU to finaly be the bottleneck in 99% of the applications. And yes, maybe the lower access would have allow to optimize an extra 1-2% of the GPU timing, but that's really not a scenario that push for that all bare metal hiting..