From e0eafde8a66b25fdee741469c712f6ff61d743b2 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Thu, 13 Aug 2020 09:40:37 +0300 Subject: [PATCH] Add VR log outputs --- .../streams/src/renderers/openvr_render.cpp | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/components/streams/src/renderers/openvr_render.cpp b/components/streams/src/renderers/openvr_render.cpp index 62e1b1088..77902f3cd 100644 --- a/components/streams/src/renderers/openvr_render.cpp +++ b/components/streams/src/renderers/openvr_render.cpp @@ -251,6 +251,8 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { meta["id"] = host_->getID(); meta["uri"] = std::string("device:openvr"); meta["device"] = std::string("OpenVR Render"); + + vr::VRCompositor()->SetTrackingSpace(vr::TrackingUniverseStanding); } //if (!frame_out.has(Channel::Pose)) { // rgbdframe.setPose() = Eigen::Matrix4d::Identity(); @@ -259,8 +261,9 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { int width = rgbdframe.getLeft().width; int height = rgbdframe.getLeft().height; - vr::VRCompositor()->SetTrackingSpace(vr::TrackingUniverseStanding); + LOG(INFO) << "WAIT GET POSE"; auto vrerr = vr::VRCompositor()->WaitGetPoses(rTrackedDevicePose_, vr::k_unMaxTrackedDeviceCount, NULL, 0 ); + LOG(INFO) << "GOT POSE"; if (vrerr != vr::VRCompositorError_None) { frame_out.message(ftl::data::Message::Error_OPENVR, "Could not get VR pose"); @@ -348,6 +351,8 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { // TODO: Get controller data if available... + LOG(INFO) << "MAKE OPENGL TEXTURES"; + texture1_.make(width, height, ftl::utility::GLTexture::Type::BGRA); texture2_.make(width, height, ftl::utility::GLTexture::Type::BGRA); @@ -368,6 +373,8 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { ftl::operators::Poser::get(origin_name, origin); }*/ + LOG(INFO) << "START RENDER"; + try { renderer_->begin(rgbdframe, ftl::codecs::Channel::Left); renderer2_->begin(rgbdframe, Channel::Colour2); @@ -436,6 +443,7 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { } } + LOG(INFO) << "START MIX"; mixer_.mix(); // Write mixed audio to frame. @@ -446,6 +454,7 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { int fcount = mixer_.frames(); mixer_.read(list.emplace_front().data(), fcount); } + LOG(INFO) << "END MIX"; // TODO: Blend option @@ -458,6 +467,8 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { frame_out.message(ftl::data::Message::Error_RENDER, e.what()); } + LOG(INFO) << "END RENDER"; + if (!post_pipe_) { post_pipe_ = ftl::config::create<ftl::operators::Graph>(host(), "post_filters"); post_pipe_->append<ftl::operators::Poser>("poser"); @@ -467,18 +478,25 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { post_pipe_->apply(rgbdframe, rgbdframe, 0); + LOG(INFO) << "END PIPELINE"; + if (host_->value("enable_touch", false)) { ftl::render::collision2touch(rgbdframe, renderer_->getCollisions(), sets, my_id_, host_->value("touch_min", 0.01f), host_->value("touch_max", 0.05f)); } + LOG(INFO) << "FINISHED TOUCH DATA"; + // FIXME: Use a stream ftl::cuda::flip<uchar4>(rgbdframe.set<cv::cuda::GpuMat>(Channel::Colour), 0); ftl::cuda::flip<uchar4>(rgbdframe.set<cv::cuda::GpuMat>(Channel::Colour2), 0); + LOG(INFO) << "DONE FLIP"; + texture1_.unmap(renderer_->getCUDAStream()); texture2_.unmap(renderer2_->getCUDAStream()); //return true; + LOG(INFO) << "UNMAP AND SEND TO VR"; // Send left and right textures to VR headset vr::Texture_t leftEyeTexture = {(void*)(uintptr_t)texture1_.texture(), vr::TextureType_OpenGL, vr::ColorSpace_Gamma }; @@ -486,7 +504,9 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) { vr::Texture_t rightEyeTexture = {(void*)(uintptr_t)texture2_.texture(), vr::TextureType_OpenGL, vr::ColorSpace_Gamma }; vr::VRCompositor()->Submit(vr::Eye_Right, &rightEyeTexture ); + LOG(INFO) << "ABOUT TO FLUSH"; glFlush(); + LOG(INFO) << "FINISH VR FRAME"; } -- GitLab