Recently I have been playing with the geometry and the HAM and tried what I call “HAM mod” (HAM = hidden area mask).
The original HAM for the parallel projection mode is just a copy-paste from the native mode, i.e it does not take into account the actual projection. Below is a visualization of the native and parallel projection HAMs for Pimax 5k+ with Normal FOV:
The blue mesh is the native HAM (canted by 10°), which is projected into the parallel plane (checkerboard) as the green mesh. Technically, to hide the same area in the parallel projection mode as in the native one, the HAM in the parallel projection mode should have the green shape. Yet it has the red shape (i.e. the copy paste).
The consequence is that there are areas in PP mode, which are rendered into, but never visible, because they are out of the native viewing frustum (anything outside the green trapezoid) or because they should not be visible (green area).
So I modified the HAM to make it follow the green shape this way:
effectively increasing the HAM size from 8.73% to 21.49%, which has a consequence that in SteamVR the automatic SS factor changed from 0.42 to 0.50 (for PiTool RQ=1.0) and it seemed to improve the FPS slightly as well (when comparing with SteamVR SS set to 100%). I tried to get some idea in Elite game menu, and it seemed to give 4-7 FPS more.
I guess it is not much, but since it is free, I am not complaining.
Now doing all this was definitely not a trivial task, so I cannot really recommend it as DIY mod, but the point is that it should be pretty easy to fix for Pimax, they would just need to define the HAMs correctly for PP modes.
Now when you look at the new HAM, you can also notice that there are “non-zero” margins at the top and the bottom of the projection, which are masked. These could technically also be cut off (by changing the viewing frustum) to make the vertical size of the render target smaller and save more performance. Again, an easy thing to do for Pimax, but quite difficult for an “ad-hoc” patch.
Could you fix it, @SweViver, @PimaxUSA, @PimaxVR ? @Sean.Huang @Alex.liu