Warping Filter for VR

For my school project, I am developing a warping system in virtual reality (VR) using the Oculus Quest 2 and Quest Pro devices, along with Unreal Engine 5.1.1. The objective of this project is to create an immersive experience where the main camera image is dynamically warped around a black dot that can be positioned at different locations on the user’s eye. I have already attempted an initial solution by adding an extra camera that captures a 2D scene and renders it onto a render target. This render target is then used as a material on a plane mesh, which has predefined morph targets to warp the image around a predefined position, such as the center.

However, I would like the warping system to be more dynamic, allowing easy adjustment of the black dot’s position for flexible warping around different spots on the user’s eye. I am looking for guidance or suggestions on how to achieve this dynamic warping effect within the given hardware and software setup. Are there any specific techniques, APIs, or Unreal Engine features that could help me accomplish this goal efficiently and effectively?

The mesh

Without warping

With warping

Can you use post process for VR?

Hi, thanks for your answer! Yeah I can use post processing but this tutorial is using refraction which I can’t use when creating a postprocessing material. This is maybe my fault for not explaining it well enough. It’s not really about creating the black dot, but more of creating the warping/refraction around such a dot, oval or shape. Because the people who this project is for have AMD(Age-related Macular Degeneraiton) this dot/shape(scotoma) in their eyes.
Perhaps you would know how to use the refraction in a post process material or have any other ideas based on the extra information?

1 Like

I think you would probably be able to impersonate the refraction with UV warping? Radial gradient exponential?

I will check, thanks again!

1 Like

Something along these lines

Also more efficient ( which you will be thinking of, in the VR world ), to do it with a mask texture :wink: