MSFS 2020 Parallel Projection & Frustum Culling Fix

Hello all - As we all know MSFS as of this moment in time at least, requires “compatible with parallel projections” enabled in pitool to work correctly otherwise it suffers from frustum culling at the edges of the periphery.

I know this has been mentioned in the middle of other threads & posted in a couple of places on the MSFS Forum but to consolidate it into a single focused effort which the devs actually monitor according to their recent roadmap/discussion, please can everyone who has not done so already on this particular post, take a couple of minutes to hit Vote in the top left corner of this post, created by Legia92:

I don’t know if Pimax are already working with Asobo/Microsoft or the OpenXR platform to make this work correctly but more attention brought to this can only be a good thing to get the issue resolved as quickly as possible as I think there is a better chance of this being resolved for this title than others such as Star Wars Squadrons due to it using the recent industry standard OpenXR runtime and the fact it almost works as it is and should hopefully not require any huge fundamental changes to code.

@SweViver if there is anything you know or wish to add your input it would be much appreciated as I’m sure all us of that play MSFS with a pimax headset are eagerly awaiting an update.

Thanks!

8 Likes

I am not sure you are asking for the right thing. “Compatible with parallel projection” mode is a workaround for canted rendering, i.e. when the (two) rendered views (one for each eye) are not parallel, but slightly canted (facing outwards). This has nothing to do with the size of the FOV except that high-FOV headsets are more likely to employ this canted geometry in order to save the GPU performance.

But, it does not mean that every high-FOV headset does, must, or even can, use canted rendering, or that the “low-FOV” headsets do not. An example is Index which can use canted rendering (“raw camera mode” in Valve’s speak), but for Index it actually is not worth enough to justify all the compatibility problems. Therefore Index is by default in “parallel projection mode”.

I believe if you want to make an argument with Asobo, you should be technically correct about what exactly do you want - Support for VR headsets which use canted view geometry. This should imply not only a culling fix, but much more down the road.

1 Like

Thanks risa and yes I understand the fundamentals of rendering with respect to cantered displays and the fact the post created by Legia92 could be more technically accurate but it is the only relevant post being tracked by the Asobo dev team. There are no other threads on the FS forum about the issue other than one originally created by Sweviver which is not tracked & I didnt want to start another one to avoid losing a single point of focus. The post still gets the same basic point across even if it doesn’t technically cover the specific issue in detail or the fact it is not 100% completely accurate.

Im pretty certain Asobo are fully aware the issue is related to support for cantered displays as they discussed it in one of their interviews/roadmaps recently. The thing that is not clear is whether it is due to the games internal code or if it is a dependency within OpenXR which does not completely support correct rendering for cantered displays yet - with specific regard to how it calculates the frustum culling area which may not respect the cantered displays perhaps as an oversight.

In either case Pimax would likely need to work with the relevant party to resolve the issue and if it lies with OpenXR it is even more important this is fixed otherwise it could likely affect a lot of future titles going forward, making pimax headsets less desirable in general.

1 Like

Object culling is an engine feature even though it may not look so, when e.g. Unity uses an “OpenVR plugin” which implements culling in a wrong way. But in the end it is an engine feature, because it is up to the engine to decide which objects it will render and which not. The VR API (OpenVR, OpenXR), only provides the view geometry (position, orientation, FOV) and it is up to the application to correctly calculate the culling view (FOV) and cull the objects respectively.

In short, the culling bug is a problem in Asobo engine.

What is a real shame (of all those “buggy” apps), is that you can only manage to implement this bug by explicitly ignoring the data (about the view geometry) which the API provides. It is not like I forgot to take into account some obscure detail hidden somewhere, it is more of the type I was getting this 3x4 matrix and I was deliberately ignoring its 3x3 submatrix because it would make my life easier.

4 Likes

Thanks for alerting us of that MSFS thread! I’ve added my vote.

a lot of the time the devs think they’re being super clever, they make an effect that starts to get real expensive because it’s rendered twice for both eyes and they realize, hey if i just do the effect once i can duplicate and offset it with a constant in the x axis – they test on their rift or vive and high five with the project manager and move on. then later when they get feedback about canted screens they say that’s out of scope because they were only asked to test on parallel display headsets by coincidence.

3 Likes

Hello all - I have had an official response from the MSFS support team on this matter as below.

They seem to suggest it is in fact Pimax who do not yet fully support OpenXR, which according to Pimax’s own support page is indeed the case at the current time. What do we think to this - could this really be the cause of the problem in MSFS?

@SweViver @PimaxQuorra is there any official word on the above from Pimax?

Support (Microsoft Flight Simulator)

Mar 3, 2021, 15:25 GMT+1

Hi Andrewuk1990,

Microsoft Flight Simulator VR works with OpenXR.

Pimax’s headsets don’t officially support OpenXR:

> Will Pimax support the OpenXR Standard and if so when?
> YES. We do plan to support OpenXR. No exact timeline at this time.

Source: https://support.pimax.com/en/support/solutions/articles/60000667147-pimax-now-summary-8kx-handmotion-eye-tracking-mas-stretch-goal

To report this issue, please contact the Pimax team directly.

Best regards,
Microsoft Flight Simulator Support Team

Andrewuk1990

Mar 3, 2021, 13:12 GMT+1

Hello, I am writing to ask if you are working on a fix for cantered display HMDs such as pimax etc.

There is a forum wishlist of votes which a lot of people seem to be participating in but I don’t see this reflected in the official “Feedback snapshot VR”.

An update on this would be much appreciated.

https://forums.flightsimulator.com/t/support-for-wide-fov-vr-headsets-removing-frustum-culling-issue/350903/15

3 Likes

Pimax does not have its own SDK for OpenXR, but it supports OpenVR and OpenXR (over OpenVR) should work seamlessly. Unless there is a problem in Valve’s implementation of OpenXR.

I guess the devs just misread the Pimax statement. It is the same as saying that HP Reverb G2 does not support OpenXR. HP Reverb however runs in Windows MR and Windows MR supports OpenXR.

You may ask them, what exactly is it that Pimax does not support (in OpenXR) and then complain at Valve ;).

4 Likes

I went back to their support team following their initial answer above & they essentially just said it’s with Pimax to sort out the issue. I have attached the exact extract below for anyone interested.

Support (Microsoft Flight Simulator)

Mar 4, 2021, 15:23 GMT+1

Hi Andrewuk1990,

SteamVR supports OpenVR not OpenXR.

Pixmax currently doesn’t support OpenXR officially. They plan to support OpenXR but they don’t share a release date.

Will Pimax support the OpenXR Standard and if so when?
YES. We do plan to support OpenXR. No exact timeline at this time.

Source: https://support.pimax.com/en/support/solutions/articles/60000667147-pimax-now-summary-8kx-handmotion-eye-tracking-mas-stretch-goal

There’s currently nothing we can’t do on our side to support these headsets.

Thank you for your understanding.

Best regards.
Microsoft Flight Simulator Support Team

Andrewuk1990

Mar 4, 2021, 0:00 GMT+1

Hi I appreciate the response but if this is the case please can you specifically clarify what Pimax do not support within OpenXR? I ask this because Pimax headsets work within the SteamVR ecosystem and should in theory be completely compatible with OpenXR due to this unless SteamVR’s implementation of OpenXR is missing something and If so I’d like to know what so that I can correctly report this to Valve or Pimax.

Alternatively, are you sure the frustum culling issue is simply not just due to the games code not correctly respecting the none parallel displays within the headset and instead assuming the projections are parallel (which is true for oculus or HP headsets for example) when in fact this isn’t the case for a HMD which uses cantered displays such as Pimax or Xtal etc?

Someone needs to go to Asobo about this and talk to devs directly. This is apparently above the level of the support team.

4 Likes

Yeah it seems you’re probably right to be honest but we can only hope Pimax have already done that & are actively speaking with their development team to get it sorted, perhaps even if the support team have no idea themselves.

It would be nice to get some kind of confirmation of this from Pimax though. Given the popularity & likely longevity of MSFS it is a huge commercial opportunity for Pimax to sell many more HMD’s & build a much needed improved reputation by ensuring their headsets perform well & work seamlessly with MSFS.

Knowing the way Pimax treat their customers, I couldn’t help but laugh.

Given the main Microsoft Flight Simulator (MSFS) thread on this very forum has almost 10,000 views now, more than any other Game thread on the forum and one of the highest viewed threads across the entire forum in general and VR was only released in December 2020 for this sim surely that is evidence enough just how many Pimax users want the best possible experience with MSFS using their Pimax HMD’s.

So please can Pimax inform the community whether or not they are aware of the issue raised in this thread & whether they are actively working to resolve this issue in order to allow MSFS to work seamlessly on a Pimax HMD without the need for “Compatible with Parallel Projections”; whether that be via working directly with Asobo, the OpenXR team, Valve or any other third parties. @PimaxQuorra @PimaxUSA @SweViver @PiSupport @PimaxVR

Coincidentally the second highest viewed game thread is for Star Wars squadrons which low and behold also suffers from the need to use “Compatible with Parallel Projections”. This really should highlight the importance of pushing forward awareness and information to developers so that this workaround is no longer required for new games.

Thankyou.

6 Likes

This letters say all…
Look at the current stuttering problem. All that Asobo says about it is “put your resolution down - it’s not up to us”