Camera fade is not working on Oculus Quest 2?

Hi all,
I am currently working on a project where I want to implement a screen fade in\out when the user is teleporting. When I test it in the editor all works fine using the "Start Camera Fade " blueprint, but when I do a package build on the Quest 2 headset the camera fade is not working. I do not have the Mobile HDR feature enabled, due to performance reasons.

Thank you for your time and I wish you a plesent day / evening.

1 Like

When you test in the editor, are you launching via the project launcher or Play In Editor button?

I use the Color scale node. I think I read somewhere Oculus recommends it.
I’m using the VR exspansion plugin so I use both, one for the Quest and one for testing on the desktop.

2 Likes

Mobile HDR is not supported on Oculus Quest and as such you can’t use the default Camera Fade functionality. @Alh_n’s solution works well!

How do you determine if the game is running on Quest or in Editor VR Preview?

You can use GetPlatformName and if it equals Android it’s running on Quest.

1 Like

Clarifying that this solution from @Alh_n won’t work with the 4.27 XR implementation since it uses the “Set Color Scale and Offset” node from the Oculus Library, correct?

@VictorLerp

3 Likes

I tried this method in C++ in UE5.1.

Using OpenXR + MetaXR plugins.

In this UE C++ API document, it says that the function SetColorScaleAndOffset is deprecated (for UE5.2).

In UE5.1, even though it is not mentioned as deprecated, still I am unable to use this function at all.

Need to include a OculusHMD module, but it won’t compile. Did as below (added the module name to the end:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput", "UMG", "Niagara", "OculusHMD" });

What is interesting, it appears in BP window:

Can anyone help me understand following:

  1. What am I doing wrong in C++ in order to use the function SetColorScaleAndOffset ?
  2. Why it appears in BP as part of Oculus Library?
  3. Why is it deprecated in newer UE versions (5.2/5.3)?

@VictorLerp

Edit: Initially I also tried to make CameraFade, but after finishing with coding it turned out that it doesn’t work without MobileHDR enabled. Currently I am trying to achieve it with SetColorScaleAndOffset(). If it wouldn’t work I guess there are 4 more approaches worth trying:

  • Modify tint or some other parameter in post-process settings (through quest tonemapping to overcome MobileHDR requirement for the post-process effects)
  • Use level sequencer (though I am afraid of this one, since I need to clear/resume the fade depending on the application events, don’t know how difficult will it be to communicate with the level sequencer through C++).
  • https://www.youtube.com/watch?v=QBgo4M6gG3A
  • Modify strength of lighting and emissive materials.

If someone has already gone through this, would appreciate your recommendations.

2 Likes

Turns out with “r.Mobile.TonemapSubpass 1” and Oculus branch, CameraFade works without turning on MobileHDR. I think it is more logical to use Camera Fade (which is UE API) instead of SetColorScaleAndOffset (which is Oculus API).

So, it was a fix for me.

For detailed info you can check this.

2 Likes

@RafigRzayev When you build to device, do you see the camera fade working as expected? last I tested, I was having the fade work everywhere but the very center of the frame (leaving a little window into the view still rendered)

@Kavan

Just saw your post.

It works as expected. I didn’t see any artefacts.

You can follow instructions here to enable oculus branch + enable tonemapping.

And this is how I called the fade in C++:

CameraManager = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0);
CameraManager->SetManualCameraFade(MyFadeValue,MyFadeColor, false);

MobileHDR is disabled in my build. Using UE5.1

1 Like