MCPcopy Create free account
hub / github.com/LibreVR/Revive / UpdateHmdDesc

Method UpdateHmdDesc

Revive/Session.cpp:160–239  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158}
159
160void ovrHmdStruct::UpdateHmdDesc()
161{
162 HmdDesc.Type = ovrHmd_CV1;
163
164 // Get HMD name
165 vr::VRSystem()->GetStringTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_ModelNumber_String, HmdDesc.ProductName, 64);
166 vr::VRSystem()->GetStringTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_ManufacturerName_String, HmdDesc.Manufacturer, 64);
167
168 // Some games require a fake product name
169 if (UseHack(HACK_FAKE_PRODUCT_NAME))
170 strcpy_s(HmdDesc.ProductName, 64, "Oculus Rift");
171
172 // TODO: Get HID information
173 HmdDesc.VendorId = 0;
174 HmdDesc.ProductId = 0;
175
176 // Get serial number
177 vr::VRSystem()->GetStringTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_SerialNumber_String, HmdDesc.SerialNumber, 24);
178
179 // TODO: Get firmware version
180 HmdDesc.FirmwareMajor = 0;
181 HmdDesc.FirmwareMinor = 0;
182
183 // Get capabilities
184 HmdDesc.AvailableHmdCaps = 0;
185 HmdDesc.DefaultHmdCaps = 0;
186 HmdDesc.AvailableTrackingCaps = ovrTrackingCap_Orientation | ovrTrackingCap_Position;
187 if (!vr::VRSystem()->GetBoolTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_WillDriftInYaw_Bool))
188 HmdDesc.AvailableTrackingCaps |= ovrTrackingCap_MagYawCorrection;
189 HmdDesc.DefaultTrackingCaps = ovrTrackingCap_Orientation | ovrTrackingCap_MagYawCorrection | ovrTrackingCap_Position;
190
191 // Get the render target size
192 ovrSizei size;
193 vr::VRSystem()->GetRecommendedRenderTargetSize((uint32_t*)&size.w, (uint32_t*)&size.h);
194
195 // Update the render descriptors
196 for (int eye = 0; eye < ovrEye_Count; eye++)
197 {
198 ovrEyeRenderDesc& desc = RenderDesc[eye];
199
200 OVR::FovPort eyeFov;
201 vr::VRSystem()->GetProjectionRaw((vr::EVREye)eye, &eyeFov.LeftTan, &eyeFov.RightTan, &eyeFov.DownTan, &eyeFov.UpTan);
202 eyeFov.LeftTan *= -1.0f;
203 eyeFov.DownTan *= -1.0f;
204
205 desc.Eye = (ovrEyeType)eye;
206 desc.Fov = eyeFov;
207
208 desc.DistortedViewport = OVR::Recti(eye == ovrEye_Left ? 0 : size.w, 0, size.w, size.h);
209 desc.PixelsPerTanAngleAtCenter = OVR::Vector2f(size.w * (MATH_FLOAT_PIOVER4 / eyeFov.GetHorizontalFovRadians()),
210 size.h * (MATH_FLOAT_PIOVER4 / eyeFov.GetVerticalFovRadians()));
211
212 if (UseHack(HACK_RECONSTRUCT_EYE_MATRIX))
213 {
214 float ipd = vr::VRSystem()->GetFloatTrackedDeviceProperty(vr::k_unTrackedDeviceIndex_Hmd, vr::Prop_UserIpdMeters_Float);
215 desc.HmdToEyePose.Orientation = OVR::Quatf::Identity();
216 desc.HmdToEyePose.Position.x = (eye == ovrEye_Left) ? -ipd / 2.0f : ipd / 2.0f;
217 }

Callers

nothing calls this directly

Calls 4

RectiClass · 0.85
QuatfClass · 0.85
Vector2fClass · 0.70
PosefClass · 0.70

Tested by

no test coverage detected