|
@@ -322,7 +322,7 @@ static void DrawDefaultBuffers(int eyesCount); // Draw default internal buffers
|
|
|
static void UnloadDefaultBuffers(void); // Unload default internal buffers vertex data from CPU and GPU
|
|
|
|
|
|
// Set internal projection and modelview matrix depending on eyes tracking data
|
|
|
-static void SetOculusView(int eye, Matrix matProjection, Matrix matModelView);
|
|
|
+static void SetStereoView(int eye, Matrix matProjection, Matrix matModelView);
|
|
|
|
|
|
static void SetShaderLights(Shader shader); // Sets shader uniform values for lights array
|
|
|
|
|
@@ -2001,7 +2001,7 @@ void rlglDrawMesh(Mesh mesh, Material material, Matrix transform)
|
|
|
|
|
|
for (int eye = 0; eye < eyesCount; eye++)
|
|
|
{
|
|
|
- if (eyesCount == 2) SetOculusView(eye, matProjection, matModelView);
|
|
|
+ if (eyesCount == 2) SetStereoView(eye, matProjection, matModelView);
|
|
|
else modelview = matModelView;
|
|
|
|
|
|
// Calculate model-view-projection matrix (MVP)
|
|
@@ -2504,8 +2504,9 @@ void DestroyLight(Light light)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-// Init Oculus Rift device (or Oculus device simulator)
|
|
|
-void InitOculusDevice(void)
|
|
|
+// Init VR device (or simulator)
|
|
|
+// NOTE: If device is not available, it fallbacks to default device (simulator)
|
|
|
+void InitVrDevice(int hmdDevice)
|
|
|
{
|
|
|
#if defined(RLGL_OCULUS_SUPPORT)
|
|
|
// Initialize Oculus device
|
|
@@ -2557,7 +2558,7 @@ void InitOculusDevice(void)
|
|
|
|
|
|
if (!oculusReady)
|
|
|
{
|
|
|
- TraceLog(WARNING, "VR: Initializing Oculus simulator");
|
|
|
+ TraceLog(WARNING, "HMD Device not found: Initializing VR simulator");
|
|
|
|
|
|
// Initialize framebuffer and textures for stereo rendering
|
|
|
stereoFbo = rlglLoadRenderTexture(screenWidth, screenHeight);
|
|
@@ -2571,8 +2572,8 @@ void InitOculusDevice(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// Close Oculus Rift device (or Oculus device simulator)
|
|
|
-void CloseOculusDevice(void)
|
|
|
+// Close VR device (or simulator)
|
|
|
+void CloseVrDevice(void)
|
|
|
{
|
|
|
#if defined(RLGL_OCULUS_SUPPORT)
|
|
|
if (oculusReady)
|
|
@@ -2596,20 +2597,20 @@ void CloseOculusDevice(void)
|
|
|
oculusReady = false;
|
|
|
}
|
|
|
|
|
|
-// Detect if oculus device is available
|
|
|
-bool IsOculusReady(void)
|
|
|
+// Detect if VR device is available
|
|
|
+bool IsVrDeviceReady(void)
|
|
|
{
|
|
|
return (oculusReady || oculusSimulator) && vrEnabled;
|
|
|
}
|
|
|
|
|
|
-// Enable/Disable VR experience (Oculus device or simulator)
|
|
|
-void ToggleVR(void)
|
|
|
+// Enable/Disable VR experience (device or simulator)
|
|
|
+void ToggleVrMode(void)
|
|
|
{
|
|
|
vrEnabled = !vrEnabled;
|
|
|
}
|
|
|
|
|
|
-// Update Oculus Rift tracking (position and orientation)
|
|
|
-void UpdateOculusTracking(void)
|
|
|
+// Update VR tracking (position and orientation)
|
|
|
+void UpdateVrTracking(void)
|
|
|
{
|
|
|
#if defined(RLGL_OCULUS_SUPPORT)
|
|
|
if (oculusReady)
|
|
@@ -2641,7 +2642,7 @@ void UpdateOculusTracking(void)
|
|
|
}
|
|
|
|
|
|
// Set internal projection and modelview matrix depending on eyes tracking data
|
|
|
-static void SetOculusView(int eye, Matrix matProjection, Matrix matModelView)
|
|
|
+static void SetStereoView(int eye, Matrix matProjection, Matrix matModelView)
|
|
|
{
|
|
|
if (vrEnabled)
|
|
|
{
|
|
@@ -2675,12 +2676,12 @@ static void SetOculusView(int eye, Matrix matProjection, Matrix matModelView)
|
|
|
// Setup viewport and projection/modelview matrices using tracking data
|
|
|
rlViewport(eye*screenWidth/2, 0, screenWidth/2, screenHeight);
|
|
|
|
|
|
- static float IPD = 0.064f; // InterpupillaryDistance
|
|
|
+ static float IPD = 0.064f; // InterpupillaryDistance
|
|
|
float HScreenSize = 0.14976f;
|
|
|
- float VScreenSize = 0.0936f; // HScreenSize/(1280.0f/800.0f)
|
|
|
- float VScreenCenter = 0.04675f;
|
|
|
+ float VScreenSize = 0.0936f; // HScreenSize/(1280.0f/800.0f) (DK2)
|
|
|
+ float VScreenCenter = 0.04675f; // VScreenSize/2
|
|
|
float EyeToScreenDistance = 0.041f;
|
|
|
- float LensSeparationDistance = 0.064f; //0.0635f (DK1)
|
|
|
+ float LensSeparationDistance = 0.064f; //0.0635f (DK1)
|
|
|
|
|
|
// NOTE: fovy value obtained from device parameters (Oculus Rift CV1)
|
|
|
float halfScreenDistance = VScreenSize/2.0f;
|
|
@@ -2730,13 +2731,13 @@ static void SetOculusView(int eye, Matrix matProjection, Matrix matModelView)
|
|
|
MatrixTranspose(&eyeProjection);
|
|
|
}
|
|
|
|
|
|
- SetMatrixModelview(eyeModelView); // ERROR! We are modifying modelview for next eye!!!
|
|
|
+ SetMatrixModelview(eyeModelView);
|
|
|
SetMatrixProjection(eyeProjection);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Begin Oculus drawing configuration
|
|
|
-void BeginOculusDrawing(void)
|
|
|
+void BeginVrDrawing(void)
|
|
|
{
|
|
|
#if defined(RLGL_OCULUS_SUPPORT)
|
|
|
if (oculusReady)
|
|
@@ -2771,7 +2772,7 @@ void BeginOculusDrawing(void)
|
|
|
}
|
|
|
|
|
|
// End Oculus drawing process (and desktop mirror)
|
|
|
-void EndOculusDrawing(void)
|
|
|
+void EndVrDrawing(void)
|
|
|
{
|
|
|
#if defined(RLGL_OCULUS_SUPPORT)
|
|
|
if (oculusReady)
|
|
@@ -3414,7 +3415,7 @@ static void DrawDefaultBuffers(int eyesCount)
|
|
|
|
|
|
for (int eye = 0; eye < eyesCount; eye++)
|
|
|
{
|
|
|
- if (eyesCount == 2) SetOculusView(eye, matProjection, matModelView);
|
|
|
+ if (eyesCount == 2) SetStereoView(eye, matProjection, matModelView);
|
|
|
|
|
|
// Set current shader and upload current MVP matrix
|
|
|
if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0))
|