Hello everyone.

We have decided to phase out the Mixed Reality Forums over the next few months in favor of other ways to connect with us.

The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.

The plan between now and the beginning of May is to clean up old, unanswered questions that are no longer relevant. The forums will remain open and usable.

On May 1st we will be locking the forums to new posts and replies. They will remain available for another three months for the purposes of searching them, and then they will be closed altogether on August 1st.

So, where does that leave our awesome community to ask questions? Well, there are a few places we want to engage with you. For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality. If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers. And always feel free to hit us up on Twitter @MxdRealityDev.

What's the exact rendering capacity for HoloLens? How to optimize?

Hi, I am wondering how to optimize the rendering for my application. I have 105 * 68 cubes need to be rendered, however, it turns out flickering a lot.
Any thoughts to solve that problem?

Answers

  • There is no exact rendering capacity, the number of instructions per vertex will change how many vertices can be rendered at 60FPS.

    First things first - if your using unity, ensure you profile the app using the unity profiler (it will detect hololens as a remote target). Before you improve anything, you need to be able to understand where your bottleneck is. If your not using unity, VS has a frame debugger but I haven't been able to get it working.

    In specific terms though, we can make educated guesses. Assuming 16 verts per cube, 114K verts is quite low, in my app we draw over 500K. However, 7000 individual objects could result in 7000 draw calls, which will run like a 3-legged dog.

    To see how much overhead is in the actual rendering code, write your own shader that does nothing. If you still run slow, your most likely CPU-bound (most likely, draw-call bound).

    To reduce draw calls (assuming identical cubes) make sure you have an instancing shader (https://docs.unity3d.com/540/Documentation/Manual/GPUInstancing.html). I would recommend not using the Standard shader though, as the pixel shader in HL seems particularly weak. Use one of the shaders in the Hololens toolkit, ideally an un-lit shader, and convert it to support instancing. If your not using unity, there are hundreds of tutorials on instancing in DX11.

    Other options are to implement batching https://docs.unity3d.com/540/Documentation/Manual/DrawCallBatching.html.

    Also - if you aren't using Unity, ensure you render front-to-back to prevent overdraw.

Sign In or Register to comment.