Hello everyone.

The Mixed Reality Forums here are no longer being used or maintained.

There are a few other places we would like to direct you to for support, both from Microsoft and from the community.

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.

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, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.

And always feel free to hit us up on Twitter @MxdRealityDev.

Residual rendering artifacts in the C++ Holographic DirectX11 App template in Release mode.

edited February 2018 in Q&A and Discussions

I'm checking out the C++ Holographic DirectX11 App template (the colored cube app). I had to fix the template to work with my multi-GPU system (I'm on a Surface Book with an Intel GPU and an NVidia GPU), as it was choosing the wrong adapter and crashing. Once I got it selecting the adapter that WindowsHolographic wanted, it runs fine for the most part. However, in Debug mode it randomly flashes a bright random color for a single frame, and in Release mode it randomly flashes residue of previous frames together. I know this because if I start the app and don't move my head, the colored cube and the residue stay in the center of the screen. If I look to my left, the cube moves to the right of the screen and the residue looks like a horizontal band with the cube's height from the center of the screen to the right of the screen. If I look right, the residue band spreads across the entire screen. Looking up, down, around, etc. spreads the residue around the screen. I've attached a screenshot of the residue capture from my phone. I have a short video as well at https://1drv.ms/v/s!Aobf-6_VE2qWk6NAomHwRPtk4tFpKg. This doesn't happen in Cliff House, only in the app template (and in my app, which is derived from the app template). Additionally, it only happens when running on the HMD. If I run on the WMR Simulator or the HoloLens Emulator, it works just fine.

I'm using Visual Studio 2017 v15.5.5. I'm working in Windows 10 v10.0.16299 Build 16299 on a Surface Book 1 (i7, 8GB, GPU). I have the HP HMD and am connected to the Surface Book using a Surface HDMI-to-Mini-Display adapter. It runs Cliff House just fine, so I'm pretty sure that it isn't a hardware issue.

If you need any additional info, let me know and I'll get it. Thanks for any help you can provide.

Answers

  • edited February 2018

    I don't understand this. It cleared up over the weekend somehow. I finally got my engine running correctly Monday night and showed it to some friends on Wednesday. It worked flawlessly. Even the template was rendering properly. Then, I tried to add some features today (Friday) and the corruption was back. I reverted all of my changed code, thinking that it was something I changed (I'm trying to get controllers to work), but the corruption was still there. Then I tried the template project again and the corruption was back there as well! I don't understand what is happening. Please help!

  • edited February 2018

    I think that I may have figured out what changed. The DirectX Holographic template (and so also my engine) provide one path for GPUs which allow the Vertex Shader to set the RenderTargetView array index and another path which sets this index from the Geometry Shader. It turns out that the Geometry shader path in my engine was broken (it rendered only to array index 0, the left eye). The fact that I was able to run perfectly on Wednesday tells me that the HolographicSpace was choosing the one of my two GPUs which supports setting this index from the VS on Wednesday and that today my other GPU which doesn't support this feature is being selected. So one of my GPUs can handle Immersive Headsets and the other cannot. Incidentally, I've fixed my Geometry Shader path, so now the only problem is the corruption on that GPU. I'm trying to figure out how to force it to use the other GPU again. I'll post back here if I can.

  • I wasn't able to fix the Holographic Space to a specific GPU. I tried using the NVidia Control Panel, but it seemed to just ignore my settings. However, I did figure out a potential solution. Apparently, contrary to the template project's code, you aren't supposed to discard your RenderTargetView and DepthStencilView after presenting each frame. I've removed that code and I get no more corruption. Unfortunately, I now have serious stutter as I look around in the headset. It doesn't seem to be a rendering issue, as it doesn't show up if I keep my head still and just move or look around with my controller. I suspect that it's coming from the holographic camera view or projection matrix prediction. If I figure it out, I'll post back here.

Sign In or Register to comment.