Skip to content

Crystal Super Ultrawide — severe geometric distortion introduced in SBoYS3 1.3.0-beta 2 and final version when using iRacing OpenVR #104

Description

@Yakumo60

Crystal Super Ultrawide — severe geometric distortion in SBoYS3 1.3.0-beta 2 and final version with iRacing OpenVR

Hardware / Software

  • Headset: Pimax Crystal Super Ultrawide
  • GPU: NVIDIA RTX 5080
  • CPU: AMD Ryzen 7 7800X3D
  • OS: Windows 11 Pro
  • VR runtime: SteamVR
  • Driver: SBoYS3 CustomHeadsetOpenVR
  • Affected version: 1.3.0
  • Tested application: iRacing using OpenVR

Problem

With SBoYS3 1.3.0, I get severe geometric distortion when running iRacing through OpenVR.

This is not simply an incorrect FOV, scaling, or resolution issue. The geometry itself appears to deform dynamically when I move my head.

For example, during slow horizontal or vertical head movements:

  • the center of the image can appear strongly convex/concave;
  • straight lines bend and change shape;
  • rigid objects such as the dashboard and windshield frame appear to stretch or shift;
  • track edges and distant geometry visibly "swim" or warp;
  • the deformation changes continuously with head position.

The effect is severe enough to make iRacing difficult to use.

Head tracking itself appears to work correctly, so this looks more like a projection/distortion correction problem than a tracking problem.

The normal SteamVR environment does not show this distortion. So far I have reproduced it only in iRacing using OpenVR; I have not yet tested other OpenVR games.

Version comparison

I tested the following versions with the same headset and system:

Version Result
1.3.0-beta.0 No severe distortion
1.3.0-beta.1 No severe distortion
1.3.0-beta.2 Severe distortion
1.3.0 Severe distortion

The problem therefore appears between beta.1 and beta.2.

I do not have the beta.2 source code, so I cannot identify the exact change that introduced it.

Important profile A/B test

There is an additional result that seems to rule out the Crystal Super Ultrawide profile parameters themselves as the main cause.

Beta.1 did not yet use the final dedicated Ultrawide profile. I copied the exact same Crystal Super Ultrawide profile used by 1.3.0 into the beta.1 driver:

"distortionProfile": "Crystal Super Ultrawide Default",
"distortionProfileDeviceType": "CrystalSuperUltrawide",
"resolutionX": 3840,
"resolutionY": 3744,
"displayRotation": 2,
"maxFovX": 111.0,
"maxFovY": 107.0,
"fovClamping": true,
"eyeRotation": 9.0,
"parallelProjection": true,
"enableEyeTracking": true

Results:

  • beta.1 + its original profile: no distortion
  • beta.1 + exact 1.3.0 Ultrawide profile: no distortion
  • 1.3.0 + the exact same Ultrawide profile: severe distortion

The final Ultrawide profile gives a much larger FOV when used with beta.1, but the severe geometric warping does not appear.

This suggests that the profile parameters alone are not responsible and that a change in the distortion implementation may be involved.

Other tests

  • Disabling DFR / eye tracking: no change
  • SPS enabled or disabled: no noticeable change
  • beta.0 driver: no severe distortion
  • Normal SteamVR environment: no visible distortion

Potentially relevant source change

I noticed the following change between the available 1.3.0-beta source and the 1.3.0 source in:

CustomHeadsetOpenVR/src/Distortion/RadialBezierDistortionProfile.cpp

The beta source contains:

distortion.y -= (topTan - bottomTan) / (topTan + bottomTan);

while 1.3.0 contains:

distortion.y += (topTan - bottomTan) / (topTan + bottomTan);

This change is present in commit:

c7a30ee7bb1d06f5f985917d0df4f5721549b384

[PATCH 26/32] Improved Crystal Super 50PPD distortion

I cannot confirm that this is the cause because I do not have the beta.2 source. However, the version behavior is consistent with a distortion-related change introduced around beta.2.

Could you please check whether this vertical distortion sign change, or another distortion-related change introduced between beta.1 and beta.2, could explain the behavior of the Crystal Super Ultrawide when running iRacing through OpenVR?

I can provide screenshots or a video showing the deformation if needed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions