cancel
Showing results for 
Search instead for 
Did you mean: 

PCVR Development Dilemma - Seeking Community Guidance

Rehes
Protege

Hello Meta Community,

 

I hope everyone is doing well in the world of virtual reality. I'm an enthusiastic PCVR developer, and I've been fortunate enough to work with a consulting company that has helped me immensely in the past. However, I've reached a point in my journey where I want to dive deeper into PCVR development and handle challenges independently. That's why I'm here today, seeking your invaluable expertise.

 

I'm currently facing a rather complex PCVR development challenge that has me scratching my head. 

 

I've developed several VR applications in the past with the help of a consulting company. This time, I'm working on a PCVR project that demands a high level of technical expertise, and I'm determined to tackle it on my own.

 

The Dilemma:

 

  • My PCVR application is running into performance issues. It's not as smooth as I'd like it to be, and I suspect there's room for optimization. Are there any best practices or tools you recommend for optimizing PCVR experiences?
  • I want my application to be accessible to a wide range of PCVR hardware, but I'm struggling with compatibility issues. How can I ensure that my app works seamlessly across various PCVR setups?
  • Integrating intuitive and responsive input controls is crucial for a great VR experience. I'd love some advice on how to make the most of PCVR input options and create a more immersive experience.
  • I'm used to relying on the consulting company for debugging, but I need to learn how to effectively troubleshoot and debug my VR applications independently. What debugging tools or techniques do you recommend for PCVR development?
  • Can you point me to any specific community resources, tutorials, or documentation that have been particularly helpful to you as you've developed your own PCVR applications?

 

I'm excited about this journey toward self-sufficiency in PCVR development, but I know there's a lot to learn. Your guidance and shared experiences will be incredibly valuable as I navigate this challenge.

 

While I've had a wonderful experience working with a consulting company in the past, I believe it's time to expand my knowledge and capabilities. I appreciate any help and insights you can provide to help me overcome these PCVR development hurdles.

 

Thank you all in advance for your time and expertise!

 

Best regards,

Rehes

2 REPLIES 2

Optimisation is quite an art and requires a good understanding of the render pipeline. You don't mention which engine you're developing in which makes it tricky to give specific advice. In broad terms, you should be looking at

  • reducing the complexity of your shaders,
  • atlas your textures so you can fewer materials and share them across multiple meshes (allows them to be batched),
  • bake your lights if in forward rendering (dynamic lights and shadows are expensive),
  • use occlusion culling (in Unity this has to be baked, in Unreal it comes by default),
  • mesh combine materials with the same material but do so in a way that still allows occlusion culling to work its magic (if you combine everything into a huge mesh, then if only part of that mesh is visible to the camera then all of its verts are computed),
  • keep vert counts sensible (use LODs, optimise meshes so they're game-ready. This includes good modelling best practice like not having non-manifold geometry, having good lightmap UVs, etc. If you're buying off the shelf environment assets you'll find they can often be quite badly modelled!)
  • use GPU instancing and static batching as appropriate
  • skinned meshes (character avatars) are expensive
  • post processing (although doable on PCVR) are expensive. Choose those full screen effects carefully
  • Be careful with overdraw (transparencies and render order) Draw calls are expensive even on PCVR

For compatibility across different PCVR hardware... You have no control over your end user's PCs so decide on your minimum tagret platform and test on that. For headsets, this also requires a lot of testing (different Inputs can be especially difficult) but use OpenXR as your backend to make things more widely compatible. And don't use features from platform specific SDKs.

In terms of community resources, I'd highly recommend the Oculus developer docs. Start here for PCVR: https://developer.oculus.com/documentation/unity/unity-perf/ but do also have a look at the standalone (Quest) recommendations.

The above articles mention some profiling tools. Generally your engine's built-in tools should be adequate if you don't have that much experience. If you want to go deeper then RenderDoc is also incredibly useful for frame debugging. I can't overstate this enough - learn to profile! Find where your bottle neck lies and optimise for that. Are you CPU or GPU bound? Optimising for one can be detrimental to the other. This is for Unity mobile platforms but is still incredibly valuable advice: https://blog.unity.com/technology/optimize-your-mobile-game-performance-tips-on-profiling-memory-and...

For application debugging, that's just game dev stuff. In VR it's useful to have an in-app console or some for of on-screen logging so you can see what's going on without having to take off the headset to look at the engine's output console. The Meta XR Simulator looks useful for this too, but I've never used it (only just heard about it at the recent Connect event).

Re. input options to make the experience more immersive. Floating UI panels are generally considered to be immersion breaking. (think laser pointer being used to highlight and click on buttons) You might instead consider diegetic UI, where buttons and interface elements exist within the world and are part of that world. (this is a brief intro to this concept https://uxdesign.cc/vr-diegetic-interfaces-dont-break-the-experience-554f210b6e46 )

 

Good luck on your journey. Hopefully you can now appreciate what you were paying that consultancy firm for 🙂

@baroquedub,

 

Thank you so much for the comprehensive and insightful response! Your guidance is immensely valuable, and I appreciate the time you took to share your expertise.

 

I'm developing in Unity, and your optimization tips provide a fantastic roadmap for addressing the performance challenges I'm facing. Reducing shader complexity, texture atlasization, and careful consideration of lighting strategies are excellent points to focus on. I'll also delve into the Oculus developer docs and the provided links to further fine-tune my understanding of PCVR development.

 

Your emphasis on profiling is well-taken. Identifying and optimizing bottlenecks is crucial, and I'll explore the suggested tools, including RenderDoc, for a deeper analysis. The link to mobile game performance optimization tips is a great resource, and I'll adapt the principles to the PCVR environment.

 

I'm intrigued by the idea of diegetic UI for a more immersive experience. Your provided link on the concept is a valuable starting point, and I'll explore ways to integrate it into my application.

 

As for debugging, an in-app console or on-screen logging sounds like a practical solution, and I'll look into the Meta XR Simulator as well.

 

Your wishes and encouragement mean a lot as I embark on this journey of self-sufficiency. Your detailed response has indeed given me a clearer understanding of the intricacies involved, and I'm grateful for your generosity in sharing your knowledge.

 

And yes, your closing remark made me smile – the consultancy firm certainly earned their keep, but I'm eager to embrace the challenges and learning opportunities ahead.

 

Thank you again, and I'll keep the community posted on my progress.

 

Best regards,

 

Rehes