VR Performance Optimization Round 1: Yr Opinions on Certain Features

Hi Community,

I am very close to having the 1.0 version of my vr multiplayer human-swarm interaction/architecture game complete! Before hitting the 1.0, I need to make more “cool graphics.” I am probably going to do this in stages. Meaning (1.) my game isn’t performance optimized yet, so I’m going to add a couple cool things. After 1.0, (2.) I’ll do a big refactor, and add more cool graphics things, and so forth and so on. Right now, I see this going up to 3.0. (2020+ VR Project: Gevurah — △Ark).

I am putting out a list of features here (below) and a guess as to how demanding they are (performance-wise). If I don’t know, I’ll put (?). It would be great to have these estimations be corrected by people in our community who know better, so I can appropriately shuffle them into the 1.0, 2.0 and 3.0 roadmap. Here’s my estimates:

cool fonts: easy on performance
video textures: hard on performance
PBR: easy on performance (?)
different textures on different sides of 500+ meshes: hard on performance (?)
2D gui in 3D space: medium on performance (?)
Fog: makes performance better (?)
Procedural clouds: hard on performance (?)
Volumetric light: hard on performance (?)

In addition to this, does anyone have any tips for making good “atmosphere” (not literal atmosphere though literal atmosphere helps for making figurative atmosphere), but just like “mood”. I guess in high difficulty level would be finding a super sick custom shader (like a cel shader, e.g.) that would fit the game, but that’s pretty next level and I’m not there yet.

I added the multi-view option to my scene and I think it sped things up quite a bit.

Thank you for any advice/opinions/thoughts/ideas/feelings you may have.

Good Luck with your project :slight_smile:

From my experience on Lenovo Mirage Solo and Oculus Quest 2 I know the following:

On Performance:

Textures get heavy and so limit the number you use. Combining them into a single texture or just a few and then updating the UVs boosted things big time for me.

Fog? is does seem to work as a z-culling type thing if the scene is setup a certain way. Because I merge so much, I tend to always have the meshes active and so I don’t really notice any performance benefits because all the meshes are set to render regardless anyway. I did find that I had good results on a project using fog and setting the camera maxZ to just past the fog end point.

Atmosphere:
If you want a cool effect using fog, you can set your skybox to not have fog enabled creating a haze over terrain rather than it killing the skybox altogether. I use this to haze out distant mountains but keep the sky visible.

Volumetric light:
Is a postprocess - not a good fit for VR in my opinion. If you had VERY little going on you may be able to use and it not be a bad thing.

500 Meshes?
That is what I would change if anything. My rule of thumb is “If it doesn’t need to move, merge it!”.
If you merge anything that does not move you can really reduce the mesh count.

Video and GUI Textures
They are pretty heavy in VR if you have a lot going on. If you keep the scene simple you can get away with a nice resolution and good frame rate but not with a not happening or you will find you have to make a real reduction in the video quality.

Overall:
I look at this as a math problem, how many cycles are happening in the render loop? The number of meshes, lights, materials, transformNodes, postProcesses, etc… will determine your performance along with the complexity of the geometries.

Reduce these and I think you will find it is well worth it.

My 2 cents :slight_smile:

BTW, thanks for asking this question. I am always looking to improve performance on VR and hearing different perspectives is great.

2 Likes

Hi There,

Thank you for this, I’m going to ask some follow up questions:

-Right now I have 10 lightweight image textures and its runs really fast. But, no animated textures (currently). What kind of textures seem to sink the frame rate for you/

-I guess fog just looks really cool

-Can you show me a picture of this haze you speak of :stuck_out_tongue:

-Ugh, volumetric light is so cool, but (a.) I can’t get it to work in VR, I hit up R. about it. And, (b.) like… I don’t know, it doesn’t work enough like real light. e.g. if it is partially occluded you can’t see any volumetric light, whereas in the real world you’d see some; it’s sublte but noticeable. The effect I’m going for here is deep fog w/some light orbs with volumetric light, but maybe we’re in unreal territory then :<

-Can you merge meshes after they’re created? Sounds like this is the main performance thing that’s tripping me up. Does creating a lot of materials (like way too many) also slow down performance; I’m new to this…

-Video/Gui Textures damn, yeah, I think they’re pretty heavy…

-What kind of VR work do you take on/do?

Hi

So any materials not frozen will impact the performance. Animated textures can’t be frozen so you may find they drain things a bit. All depends on how many textures you have though.


I have uploaded example of fog enabled and disabled on skybox to give you an idea.

Volumetric light, I have not used it much myself so I would be speculating on this.

Material count and Mesh count should be reduced as much as possible for sure. I think you may want to check out multimaterialmeshes as well.

The projects I do are about 50% training experiences and the rest is a mix of games and product applications.

2 Likes