Star Shelter : Is there an easy to explain fix for this non-PP issue?

Lighting issue without PP (all else seems fine, I think) :

I have mentioned it to the dev in discord but only from the user / PP / performance / angled screen perspective. I don’t know how to explain it decently from a dev perspective.

The game seems to be written in Unity (there’s the splash as it loads). Is there an easy fix / way to troubleshoot it for him? Or a good way I can explain the issue that may help him resolve it?

The game is great, btw, and runs pretty well even with PP on, recommend it.

2 Likes

What exactly is the issue?

2 Likes

You see the screenshot? The lighting is wrong in both eyes without PP. As you move / turn / tilt your head it changes. It seems to be only this particular effect that you see on the pic.

E.g. in the right eye here the effect is only rendered on the right side of the screen. On the left eye it’s only there on the left top “quarter”.

1 Like

I am looking at the screenshot (actually was before I posted my question), but I cannot figure out, what is wrong with the lighting. It is difficult without knowing the game.
Plus there seems to be an overlay rendered over the 3D, which makes it even more confusing.
Could you mark in the picture the problem?

1 Like

Guide him to pimaxvr website. There is a unity sdk.

Here it is labelled a bit, hopefully it makes sense? The light blue stuff in the original is a HUD.

2 Likes

I am not really familiar with Unity, but from the short time I spent debugging some lighting issues in BeatSaber also related to PP mode, I can say that Unity alone does support non-parallel views quite fine. It means the objects (geometry) are correctly rendered and so on.

What happened on BeatSaber (I was eventually able to pin down) was that the game used a custom shader for some lighting effects which was “optimized” for single-pass stereo rendering, in other words, it was hardcoded for parallel views and completely ignored the (non-parallel) view geometry, advertised by the headset and consequently by Unity to the app.

Now, thinking about it, and how BeatGames actually (not) treated this problem, I am starting to think that there might be some optional libraries (or components) for Unity, maybe not even part of the package, but some public repo, from where the devs can get some cool effects, but those devs actually do not fully understand all the implications. I am not sure anymore BeatGames know how to fix their issues.

I can give only a generic advice (as I cannot really say this issues is of the same nature as the one in BeatSaber), but this could never the less help a bit, especially if he is clueless.

In order to work with non-parallel views, the app has to handle correctly the view geometry advertised by the headset (and then by OpenVR) via IVRSystem::GetEyeToHeadTransform.

In Unity, this matrix is however not directly exposed, as Unity uses its own Camera.GetStereoProjectionMatrix Camera.GetStereoViewMatrix, which is basically the inversion of the former.

Since Unity alone works fine, he should review all the additional effects he added (especially if they were 3rd party effects, and such) and confirm that those effects correctly handle non-parallel geometry reported by Camera.GetStereoProjectionMatrix Camera.GetStereoViewMatrix. If he uses some single pass stereo shaders they would probably be a good candidates (could be for lighting or the overlay for HUD, etc.).

4 Likes

Link for Dev to Unity Sdk on main site.

1 Like

I had to correct myself, the right matrix in Unity (which corresponds to eye to head transform from OpenVR) is Camera.GetStereoViewMatrix. (I am still confused by Unity naming :blush:). Fixed that in my reply above as well.

3 Likes