Varjo Native SDK
Varjo.h
Go to the documentation of this file.
1 // Copyright 2019-2022 Varjo Technologies Oy. All rights reserved.
2 
3 #ifndef VARJO_H
4 #define VARJO_H
5 
6 #include "Varjo_types.h"
7 #include "Varjo_events.h"
8 #include "Varjo_export.h"
9 #include "Varjo_version_defines.h"
10 
11 #if defined __cplusplus
12 extern "C" {
13 #endif
14 
27 
33 VARJO_API const char* varjo_GetVersionString();
34 
47 VARJO_API const uint64_t varjo_GetVersion();
48 
63 VARJO_API struct varjo_Session* varjo_SessionInit(void);
64 
75 VARJO_API void varjo_SessionShutDown(struct varjo_Session* session);
76 
86 VARJO_API void varjo_SessionSetPriority(struct varjo_Session* session, int32_t priority);
87 
96 VARJO_API varjo_Nanoseconds varjo_GetCurrentTime(struct varjo_Session* session);
97 
110 VARJO_API varjo_Nanoseconds varjo_ConvertToUnixTime(struct varjo_Session* session, varjo_Nanoseconds varjoTime);
111 
121 VARJO_API struct varjo_FrameInfo* varjo_CreateFrameInfo(struct varjo_Session* session);
122 
128 VARJO_API void varjo_FreeFrameInfo(struct varjo_FrameInfo* frameInfo);
129 
136 VARJO_API void varjo_SetCenteredProjection(struct varjo_Session* session, varjo_Bool enabled);
137 
143 VARJO_API int32_t varjo_GetViewCount(struct varjo_Session* session);
144 
153 VARJO_API struct varjo_AlignedView varjo_GetAlignedView(double* projectionMatrix);
154 
169 VARJO_API void varjo_WaitSync(struct varjo_Session* session, struct varjo_FrameInfo* frameInfo);
170 
183 VARJO_API varjo_Nanoseconds varjo_FrameGetDisplayTime(struct varjo_Session* session);
184 
198 VARJO_API struct varjo_Matrix varjo_FrameGetPose(struct varjo_Session* session, varjo_PoseType type);
199 
212 VARJO_API struct varjo_Matrix varjo_GetTrackingToLocalTransform(struct varjo_Session* session);
213 
222 VARJO_API struct varjo_Matrix varjo_GetRelativePoseTransform(struct varjo_Session* session, varjo_PoseType src, varjo_PoseType dest);
223 
232 VARJO_API struct varjo_Matrix varjo_ApplyTransform(struct varjo_Session* session, struct varjo_Matrix* m1, struct varjo_Matrix* m2);
233 
245 VARJO_API void varjo_ResetPose(struct varjo_Session* session, varjo_Bool position, varjo_RotationReset rotation);
246 
259 VARJO_API struct varjo_ViewDescription varjo_GetViewDescription(struct varjo_Session* session, int32_t viewIndex);
260 
277 VARJO_API struct varjo_Mesh2Df* varjo_CreateOcclusionMesh(struct varjo_Session* session, int32_t viewIndex, varjo_WindingOrder windingOrder);
278 
284 VARJO_API void varjo_FreeOcclusionMesh(struct varjo_Mesh2Df* mesh);
285 
297 VARJO_API varjo_Error varjo_GetError(struct varjo_Session* session);
298 
304 VARJO_API const char* varjo_GetErrorDesc(varjo_Error error);
305 
311 VARJO_API void varjo_GazeInit(struct varjo_Session* session);
312 
323 VARJO_API void varjo_GazeInitWithParameters(struct varjo_Session* session, struct varjo_GazeParameters* parameters, int32_t parameterCount);
324 
333 VARJO_API varjo_Bool varjo_IsGazeAllowed(struct varjo_Session* session);
334 
344 VARJO_API void varjo_RequestGazeCalibration(struct varjo_Session* session);
345 
358  struct varjo_Session* session, struct varjo_GazeCalibrationParameters* parameters, int32_t parameterCount);
359 
371 VARJO_API void varjo_CancelGazeCalibration(struct varjo_Session* session);
372 
381 VARJO_API struct varjo_Gaze varjo_GetGaze(struct varjo_Session* session);
382 
393 VARJO_API varjo_Bool varjo_GetGazeData(struct varjo_Session* session, struct varjo_Gaze* gaze, struct varjo_EyeMeasurements* eyeMeasurements);
394 
405 VARJO_API int32_t varjo_GetGazeArray(struct varjo_Session* session, struct varjo_Gaze* array, int32_t maxSize);
406 
421 VARJO_API int32_t varjo_GetGazeDataArray(
422  struct varjo_Session* session, struct varjo_Gaze* gazeArray, struct varjo_EyeMeasurements* eyeMeasurementsArray, int32_t maxSize);
423 
429 VARJO_API void varjo_SyncProperties(struct varjo_Session* session);
430 
437 VARJO_API int32_t varjo_GetPropertyCount(struct varjo_Session* session);
438 
446 VARJO_API varjo_PropertyKey varjo_GetPropertyKey(struct varjo_Session* session, int32_t index);
447 
455 VARJO_API const char* varjo_GetPropertyName(struct varjo_Session* session, varjo_PropertyKey propertyKey);
456 
464 VARJO_API varjo_Bool varjo_HasProperty(struct varjo_Session* session, varjo_PropertyKey propertyKey);
465 
473 VARJO_API varjo_Bool varjo_GetPropertyBool(struct varjo_Session* session, varjo_PropertyKey propertyKey);
474 
482 VARJO_API double varjo_GetPropertyDouble(struct varjo_Session* session, varjo_PropertyKey propertyKey);
483 
491 VARJO_API int32_t varjo_GetPropertyInt(struct varjo_Session* session, varjo_PropertyKey propertyKey);
492 
504 VARJO_API void varjo_GetPropertyString(struct varjo_Session* session, varjo_PropertyKey propertyKey, char* buffer, uint32_t maxSize);
505 
514 VARJO_API uint32_t varjo_GetPropertyStringSize(struct varjo_Session* session, varjo_PropertyKey propertyKey);
515 
522 VARJO_API struct varjo_SwapChainLimits varjo_GetSwapChainLimits(struct varjo_Session* session);
523 
535 VARJO_API void varjo_GetSupportedTextureFormats(struct varjo_Session* session, varjo_RenderAPI renderApi, int32_t* formatCount, varjo_TextureFormat* formats);
536 
544 VARJO_API struct varjo_Event* varjo_AllocateEvent();
545 
553 VARJO_API void varjo_FreeEvent(struct varjo_Event* event);
554 
568 VARJO_API varjo_Bool varjo_PollEvent(struct varjo_Session* session, struct varjo_Event* evt);
569 
581 VARJO_API void varjo_GetTextureSize(struct varjo_Session* session, varjo_TextureSize_Type type, int32_t viewIndex, int32_t* width, int32_t* height);
582 
597 VARJO_API void varjo_D3D12UpdateVariableRateShadingTexture(struct varjo_Session* session, struct ID3D12GraphicsCommandList* commandList,
598  struct ID3D12Resource* texture, struct varjo_VariableRateShadingConfig* config);
599 
614 VARJO_API void varjo_D3D11UpdateVariableRateShadingTexture(struct varjo_Session* session, struct ID3D11Device* device, struct ID3D11Texture2D* texture,
615  struct varjo_VariableRateShadingConfig* config, struct varjo_ShadingRateTable* shadingRateTable);
616 
632 VARJO_API void varjo_GLUpdateVariableRateShadingTexture(struct varjo_Session* session, unsigned int texture, int width, int height,
633  struct varjo_VariableRateShadingConfig* config, struct varjo_ShadingRateTable* shadingRateTable);
634 
647 VARJO_API varjo_Bool varjo_GetRenderingGaze(struct varjo_Session* session, struct varjo_Gaze* gaze);
648 
663  struct varjo_Session* session, int32_t indexView, struct varjo_Gaze* gaze, struct varjo_FoveatedFovTangents_Hints* hints);
664 
674 VARJO_API struct varjo_FovTangents varjo_GetFovTangents(struct varjo_Session* session, int32_t viewIndex);
675 
686  struct varjo_Session* session, struct varjo_InterPupillaryDistanceParameters* parameters, int32_t parameterCount);
687 
688 #if defined __cplusplus
689 }
690 #endif
691 
692 #endif
varjo_InterPupillaryDistanceParameters
Parameters passed to varjo_SetInterPupillaryDistanceParameters function.
Definition: Varjo_types.h:519
varjo_Nanoseconds
int64_t varjo_Nanoseconds
Time in nanoseconds.
Definition: Varjo_types.h:147
varjo_GetGazeDataArray
int32_t varjo_GetGazeDataArray(struct varjo_Session *session, struct varjo_Gaze *gazeArray, struct varjo_EyeMeasurements *eyeMeasurementsArray, int32_t maxSize)
Gets gaze measurements since last query.
varjo_D3D11UpdateVariableRateShadingTexture
void varjo_D3D11UpdateVariableRateShadingTexture(struct varjo_Session *session, struct ID3D11Device *device, struct ID3D11Texture2D *texture, struct varjo_VariableRateShadingConfig *config, struct varjo_ShadingRateTable *shadingRateTable)
Updates variable rate shading texture.
varjo_AllocateEvent
struct varjo_Event * varjo_AllocateEvent()
Allocates an event.
varjo_GetPropertyCount
int32_t varjo_GetPropertyCount(struct varjo_Session *session)
Gets the number of system properties.
varjo_GetPropertyInt
int32_t varjo_GetPropertyInt(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Gets an integer value of a property.
varjo_GetTextureSize
void varjo_GetTextureSize(struct varjo_Session *session, varjo_TextureSize_Type type, int32_t viewIndex, int32_t *width, int32_t *height)
Gets texture size for specific varjo_TextureSize_type and view index.
Varjo_events.h
varjo_ApplyTransform
struct varjo_Matrix varjo_ApplyTransform(struct varjo_Session *session, struct varjo_Matrix *m1, struct varjo_Matrix *m2)
Applies transform using post multiplication.
Varjo_export.h
varjo_FreeEvent
void varjo_FreeEvent(struct varjo_Event *event)
Free an event.
varjo_GetPropertyString
void varjo_GetPropertyString(struct varjo_Session *session, varjo_PropertyKey propertyKey, char *buffer, uint32_t maxSize)
Gets a string value of a property.
varjo_FreeFrameInfo
void varjo_FreeFrameInfo(struct varjo_FrameInfo *frameInfo)
Frees an allocated frame info.
varjo_GazeInitWithParameters
void varjo_GazeInitWithParameters(struct varjo_Session *session, struct varjo_GazeParameters *parameters, int32_t parameterCount)
Initializes the gaze tracking system with provided parameters.
varjo_GazeParameters
Parameters passed to varjo_GazeInitWithParameters function.
Definition: Varjo_types.h:527
varjo_ViewDescription
View description.
Definition: Varjo_types.h:440
varjo_PoseType
int64_t varjo_PoseType
Definition: Varjo_types.h:199
varjo_ShadingRateTable
Definition: Varjo_types.h:589
varjo_D3D12UpdateVariableRateShadingTexture
void varjo_D3D12UpdateVariableRateShadingTexture(struct varjo_Session *session, struct ID3D12GraphicsCommandList *commandList, struct ID3D12Resource *texture, struct varjo_VariableRateShadingConfig *config)
Creates variable rate shading texture.
varjo_ConvertToUnixTime
varjo_Nanoseconds varjo_ConvertToUnixTime(struct varjo_Session *session, varjo_Nanoseconds varjoTime)
Calculates Real Time Clock value (i.e.
varjo_Gaze::gaze
struct varjo_Ray gaze
Normalized gaze direction ray.
Definition: Varjo_types.h:453
varjo_RenderAPI
int64_t varjo_RenderAPI
Render API flags.
Definition: Varjo_types.h:238
varjo_Bool
int32_t varjo_Bool
Definition: Varjo_types.h:140
varjo_Gaze
Gaze tracker vectors and tracking state.
Definition: Varjo_types.h:450
varjo_GetPropertyBool
varjo_Bool varjo_GetPropertyBool(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Gets a boolean value of a property.
varjo_ResetPose
void varjo_ResetPose(struct varjo_Session *session, varjo_Bool position, varjo_RotationReset rotation)
Resets pose tracking origin.
varjo_GetCurrentTime
varjo_Nanoseconds varjo_GetCurrentTime(struct varjo_Session *session)
Gets the current time in a format that Varjo API uses.
varjo_GetViewCount
int32_t varjo_GetViewCount(struct varjo_Session *session)
Gets numbers of views.
varjo_SyncProperties
void varjo_SyncProperties(struct varjo_Session *session)
Updates and synchronizes system properties with the system state.
varjo_WindingOrder
int64_t varjo_WindingOrder
Definition: Varjo_types.h:212
varjo_GetSupportedTextureFormats
void varjo_GetSupportedTextureFormats(struct varjo_Session *session, varjo_RenderAPI renderApi, int32_t *formatCount, varjo_TextureFormat *formats)
Gets supported texture formats in the order of most preferred to least preferred.
varjo_GetErrorDesc
const char * varjo_GetErrorDesc(varjo_Error error)
Gets error description for the specified error code.
varjo_GetGazeData
varjo_Bool varjo_GetGazeData(struct varjo_Session *session, struct varjo_Gaze *gaze, struct varjo_EyeMeasurements *eyeMeasurements)
Gets the current state of the user gaze.
varjo_FovTangents
Definition: Varjo_types.h:555
varjo_HasProperty
varjo_Bool varjo_HasProperty(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Checks if the key has value in the properties.
varjo_GetAlignedView
struct varjo_AlignedView varjo_GetAlignedView(double *projectionMatrix)
Gets an aligned view from a projection matrix.
varjo_PropertyKey
int64_t varjo_PropertyKey
System status properties.
Definition: Varjo_types.h:180
varjo_FrameGetPose
struct varjo_Matrix varjo_FrameGetPose(struct varjo_Session *session, varjo_PoseType type)
Gets a pose for the current frame.
varjo_GazeInit
void varjo_GazeInit(struct varjo_Session *session)
Initializes the gaze tracking system.
varjo_GetPropertyKey
varjo_PropertyKey varjo_GetPropertyKey(struct varjo_Session *session, int32_t index)
Gets a property key for a property index.
varjo_FrameGetDisplayTime
varjo_Nanoseconds varjo_FrameGetDisplayTime(struct varjo_Session *session)
Gets the time when the frame is scheduled to be displayed.
varjo_FrameInfo
Per-frame information.
Definition: Varjo_types.h:430
varjo_SessionInit
struct varjo_Session * varjo_SessionInit(void)
Initializes a Varjo client session.
varjo_GetPropertyName
const char * varjo_GetPropertyName(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Gets the name of the property key.
varjo_SetInterPupillaryDistanceParameters
void varjo_SetInterPupillaryDistanceParameters(struct varjo_Session *session, struct varjo_InterPupillaryDistanceParameters *parameters, int32_t parameterCount)
Sets interpupillary distance (IPD) parameters for HMD.
varjo_AlignedView
Axis aligned tangents from a projection matrix.
Definition: Varjo_types.h:408
varjo_GetRenderingGaze
varjo_Bool varjo_GetRenderingGaze(struct varjo_Session *session, struct varjo_Gaze *gaze)
Returns gaze which can be used for foveated rendering or to generate variable rate shading texture.
varjo_SwapChainLimits
Minimum and maximum limits for swap chain texture count and size.
Definition: Varjo_types.h:485
varjo_GetGaze
struct varjo_Gaze varjo_GetGaze(struct varjo_Session *session)
Gets the current state of the user gaze.
varjo_CreateFrameInfo
struct varjo_FrameInfo * varjo_CreateFrameInfo(struct varjo_Session *session)
Creates a frame info with initial values.
varjo_TextureFormat
int64_t varjo_TextureFormat
Definition: Varjo_types.h:216
varjo_Event
Event struct used for all the events by the event system.
Definition: Varjo_events.h:138
varjo_GetPropertyStringSize
uint32_t varjo_GetPropertyStringSize(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Gets the size of a buffer that is big enough to hold the property, including the null terminator.
varjo_SessionSetPriority
void varjo_SessionSetPriority(struct varjo_Session *session, int32_t priority)
Sets session overlay priority.
varjo_GazeCalibrationParameters
Parameters passed to varjo_RequestGazeCalibrationWithParameters function.
Definition: Varjo_types.h:535
varjo_GetRelativePoseTransform
struct varjo_Matrix varjo_GetRelativePoseTransform(struct varjo_Session *session, varjo_PoseType src, varjo_PoseType dest)
Gets a relative transformation from source pose to destination pose.
varjo_IsGazeAllowed
varjo_Bool varjo_IsGazeAllowed(struct varjo_Session *session)
Is gaze allowed to be used?
varjo_GLUpdateVariableRateShadingTexture
void varjo_GLUpdateVariableRateShadingTexture(struct varjo_Session *session, unsigned int texture, int width, int height, struct varjo_VariableRateShadingConfig *config, struct varjo_ShadingRateTable *shadingRateTable)
Updates variable rate shading texture.
varjo_CreateOcclusionMesh
struct varjo_Mesh2Df * varjo_CreateOcclusionMesh(struct varjo_Session *session, int32_t viewIndex, varjo_WindingOrder windingOrder)
Creates the occlusion mesh for a given view index.
varjo_GetTrackingToLocalTransform
struct varjo_Matrix varjo_GetTrackingToLocalTransform(struct varjo_Session *session)
Transform from tracking space to local client space.
varjo_GetViewDescription
struct varjo_ViewDescription varjo_GetViewDescription(struct varjo_Session *session, int32_t viewIndex)
Gets the display information for a given view.
varjo_GetVersionString
const char * varjo_GetVersionString()
Gets the short version of the runtime.
varjo_GetError
varjo_Error varjo_GetError(struct varjo_Session *session)
Gets the latest error code.
Varjo_types.h
varjo_IsAvailable
varjo_Bool varjo_IsAvailable()
Checks whether Varjo system is available.
varjo_Matrix
Double precision 4x4 matrix.
Definition: Varjo_types.h:330
varjo_RequestGazeCalibration
void varjo_RequestGazeCalibration(struct varjo_Session *session)
Requests a HMD gaze calibration.
varjo_PollEvent
varjo_Bool varjo_PollEvent(struct varjo_Session *session, struct varjo_Event *evt)
Polls events.
varjo_VariableRateShadingConfig
Definition: Varjo_types.h:600
varjo_Error
int64_t varjo_Error
Definition: Varjo_types.h:13
varjo_GetFovTangents
struct varjo_FovTangents varjo_GetFovTangents(struct varjo_Session *session, int32_t viewIndex)
Returns tangents for a given view index.
varjo_GetPropertyDouble
double varjo_GetPropertyDouble(struct varjo_Session *session, varjo_PropertyKey propertyKey)
Gets a floating point value of a property.
varjo_CancelGazeCalibration
void varjo_CancelGazeCalibration(struct varjo_Session *session)
Cancels currently active gaze calibration routine, if any, and resets gaze tracker to default state.
varjo_RotationReset
int64_t varjo_RotationReset
Rotation reset types.
Definition: Varjo_types.h:172
varjo_GetSwapChainLimits
struct varjo_SwapChainLimits varjo_GetSwapChainLimits(struct varjo_Session *session)
Gets swap chain limits.
varjo_SetCenteredProjection
void varjo_SetCenteredProjection(struct varjo_Session *session, varjo_Bool enabled)
Forces the provided projection matrices to be centered.
varjo_FreeOcclusionMesh
void varjo_FreeOcclusionMesh(struct varjo_Mesh2Df *mesh)
Frees the memory allocated by varjo_CreateOcclusionMesh.
varjo_GetVersion
const uint64_t varjo_GetVersion()
Gets the version number of the runtime.
varjo_GetFoveatedFovTangents
struct varjo_FovTangents varjo_GetFoveatedFovTangents(struct varjo_Session *session, int32_t indexView, struct varjo_Gaze *gaze, struct varjo_FoveatedFovTangents_Hints *hints)
Returns foveated view tangents for a given index and gaze vector.
varjo_SessionShutDown
void varjo_SessionShutDown(struct varjo_Session *session)
Shuts down a session and releases all the resources internally allocated by Varjo session.
varjo_GetGazeArray
int32_t varjo_GetGazeArray(struct varjo_Session *session, struct varjo_Gaze *array, int32_t maxSize)
Gets gaze measurements since last query.
varjo_Mesh2Df
2D triangle list mesh.
Definition: Varjo_types.h:397
varjo_WaitSync
void varjo_WaitSync(struct varjo_Session *session, struct varjo_FrameInfo *frameInfo)
Called at the start of a frame.
varjo_FoveatedFovTangents_Hints
Definition: Varjo_types.h:562
varjo_EyeMeasurements
Gaze tracker estimates of user's eye measurements.
Definition: Varjo_types.h:468
varjo_RequestGazeCalibrationWithParameters
void varjo_RequestGazeCalibrationWithParameters(struct varjo_Session *session, struct varjo_GazeCalibrationParameters *parameters, int32_t parameterCount)
Requests a HMD gaze calibration with provided parameters.
varjo_TextureSize_Type
int64_t varjo_TextureSize_Type
Definition: Varjo_types.h:540