Monado OpenXR Runtime
Distortion utilities
Collaboration diagram for Distortion utilities:

Files

file  u_distortion.c
 Code to handle distortion parameters and fov.
 
file  u_distortion.h
 Code to handle distortion parameters and fov.
 
file  u_distortion_mesh.c
 Code to generate disortion meshes.
 
file  u_distortion_mesh.h
 Code to generate disortion meshes.
 

Data Structures

struct  u_cardboard_distortion_arguments
 These are the values that you need to supply to the distortion code to setup a u_cardboard_distortion properly. More...
 
struct  u_cardboard_distortion_values
 Values to create a distortion mesh from cardboard values. More...
 
struct  u_cardboard_distortion
 Both given and derived values needed for cardboard distortion. More...
 
struct  u_panotools_values
 Values to create a distortion mesh from panotools values. More...
 
struct  u_vive_values
 Values to create a distortion mesh from Vive configuration values. More...
 

Functions

void u_distortion_cardboard_calculate (const struct u_cardboard_distortion_arguments *args, struct xrt_hmd_parts *parts, struct u_cardboard_distortion *out_dist)
 Take cardboard arguments to turn them into a u_cardboard_distortion and fill out a xrt_hmd_parts struct. More...
 
bool u_compute_distortion_panotools (struct u_panotools_values *values, float u, float v, struct xrt_uv_triplet *result)
 Distortion correction implementation for Panotools distortion values. More...
 
bool u_compute_distortion_vive (struct u_vive_values *values, float u, float v, struct xrt_uv_triplet *result)
 Distortion correction implementation for the Vive, Vive Pro, Valve Index distortion values found in the HMD configuration. More...
 
bool u_compute_distortion_cardboard (struct u_cardboard_distortion_values *values, float u, float v, struct xrt_uv_triplet *result)
 Distortion correction implementation for the Cardboard devices. More...
 
bool u_compute_distortion_ns_p2d (struct u_ns_p2d_values *values, int view, float u, float v, struct xrt_uv_triplet *result)
 Distortion correction implementation for North Star 2D/Polynomial. More...
 
bool u_compute_distortion_ns_meshgrid (struct u_ns_meshgrid_values *values, int view, float u, float v, struct xrt_uv_triplet *result)
 Moshi Turner's North Star distortion correction implementation. More...
 
bool u_compute_distortion_none (float u, float v, struct xrt_uv_triplet *result)
 Identity distortion correction sets all result coordinates to u,v. More...
 
bool u_distortion_mesh_none (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *result)
 Helper function for none distortion devices. More...
 
void u_distortion_mesh_fill_in_compute (struct xrt_device *xdev)
 Given a xrt_device generates meshes by calling xdev->compute_distortion(), populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 
void u_distortion_mesh_fill_in_none (struct xrt_device *xdev)
 Given a xrt_device generates a no distortion mesh, populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 
void u_distortion_mesh_set_none (struct xrt_device *xdev)
 Given a xrt_device generates a no distortion mesh, also sets xdev->compute_distortion() and populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 
void u_distortion_mesh_fill_in_compute (struct xrt_device *xdev)
 Given a xrt_device generates meshes by calling xdev->compute_distortion(), populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 
void u_distortion_mesh_fill_in_none (struct xrt_device *xdev)
 Given a xrt_device generates a no distortion mesh, populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 
void u_distortion_mesh_set_none (struct xrt_device *xdev)
 Given a xrt_device generates a no distortion mesh, also sets xdev->compute_distortion() and populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models. More...
 

Detailed Description

Function Documentation

◆ u_compute_distortion_cardboard()

bool u_compute_distortion_cardboard ( struct u_cardboard_distortion_values values,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Distortion correction implementation for the Cardboard devices.

◆ u_compute_distortion_none()

bool u_compute_distortion_none ( float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Identity distortion correction sets all result coordinates to u,v.

Referenced by u_distortion_mesh_none().

◆ u_compute_distortion_ns_meshgrid()

bool u_compute_distortion_ns_meshgrid ( struct u_ns_meshgrid_values values,
int  view,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Moshi Turner's North Star distortion correction implementation.

◆ u_compute_distortion_ns_p2d()

bool u_compute_distortion_ns_p2d ( struct u_ns_p2d_values values,
int  view,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Distortion correction implementation for North Star 2D/Polynomial.

◆ u_compute_distortion_panotools()

bool u_compute_distortion_panotools ( struct u_panotools_values values,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Distortion correction implementation for Panotools distortion values.

◆ u_compute_distortion_vive()

bool u_compute_distortion_vive ( struct u_vive_values values,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Distortion correction implementation for the Vive, Vive Pro, Valve Index distortion values found in the HMD configuration.

References u_vive_values::center.

◆ u_distortion_cardboard_calculate()

void u_distortion_cardboard_calculate ( const struct u_cardboard_distortion_arguments args,
struct xrt_hmd_parts parts,
struct u_cardboard_distortion out_dist 
)

#include <auxiliary/util/u_distortion.h>

Take cardboard arguments to turn them into a u_cardboard_distortion and fill out a xrt_hmd_parts struct.

References xrt_hmd_parts::blend_modes.

◆ u_distortion_mesh_fill_in_compute() [1/2]

void u_distortion_mesh_fill_in_compute ( struct xrt_device xdev)

#include <auxiliary/util/u_distortion_mesh.h>

Given a xrt_device generates meshes by calling xdev->compute_distortion(), populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

◆ u_distortion_mesh_fill_in_compute() [2/2]

void u_distortion_mesh_fill_in_compute ( struct xrt_device xdev)
related

Given a xrt_device generates meshes by calling xdev->compute_distortion(), populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

◆ u_distortion_mesh_fill_in_none() [1/2]

void u_distortion_mesh_fill_in_none ( struct xrt_device xdev)

#include <auxiliary/util/u_distortion_mesh.h>

Given a xrt_device generates a no distortion mesh, populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

◆ u_distortion_mesh_fill_in_none() [2/2]

void u_distortion_mesh_fill_in_none ( struct xrt_device xdev)
related

Given a xrt_device generates a no distortion mesh, populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

References xrt_device::hmd.

◆ u_distortion_mesh_none()

bool u_distortion_mesh_none ( struct xrt_device xdev,
uint32_t  view,
float  u,
float  v,
struct xrt_uv_triplet result 
)

#include <auxiliary/util/u_distortion_mesh.h>

Helper function for none distortion devices.

References u_compute_distortion_none().

◆ u_distortion_mesh_set_none() [1/2]

void u_distortion_mesh_set_none ( struct xrt_device xdev)

#include <auxiliary/util/u_distortion_mesh.h>

Given a xrt_device generates a no distortion mesh, also sets xdev->compute_distortion() and populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

◆ u_distortion_mesh_set_none() [2/2]

void u_distortion_mesh_set_none ( struct xrt_device xdev)
related

Given a xrt_device generates a no distortion mesh, also sets xdev->compute_distortion() and populates xdev->hmd_parts.distortion.mesh & xdev->hmd_parts.distortion.models.

References xrt_hmd_parts::distortion, xrt_device::hmd, and xrt_hmd_parts::models.