From f146c9fe7704529df0f4ac1a8b24b5038c80443c Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 30 Jan 2019 10:17:57 -0800 Subject: [PATCH] Quest frame player work --- android/apps/questFramePlayer/CMakeLists.txt | 2 +- android/apps/questFramePlayer/build.gradle | 4 ++-- .../questFramePlayer/src/main/AndroidManifest.xml | 2 +- .../questFramePlayer/src/main/cpp/RenderThread.cpp | 6 +++++- android/settings.gradle | 12 ++++++------ libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp | 4 ++++ libraries/gpu/src/gpu/FrameReader.cpp | 4 ++++ 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/android/apps/questFramePlayer/CMakeLists.txt b/android/apps/questFramePlayer/CMakeLists.txt index a22524222a..5889585a6c 100644 --- a/android/apps/questFramePlayer/CMakeLists.txt +++ b/android/apps/questFramePlayer/CMakeLists.txt @@ -1,4 +1,4 @@ -set(TARGET_NAME framePlayer) +set(TARGET_NAME questFramePlayer) setup_hifi_library(AndroidExtras) link_hifi_libraries(shared ktx shaders gpu gl oculusMobile ${PLATFORM_GL_BACKEND}) target_include_directories(${TARGET_NAME} PRIVATE ${HIFI_ANDROID_PRECOMPILED}/ovr/VrApi/Include) diff --git a/android/apps/questFramePlayer/build.gradle b/android/apps/questFramePlayer/build.gradle index 6b77eb72de..13d806c3a4 100644 --- a/android/apps/questFramePlayer/build.gradle +++ b/android/apps/questFramePlayer/build.gradle @@ -19,12 +19,12 @@ android { externalNativeBuild { cmake { arguments '-DHIFI_ANDROID=1', - '-DHIFI_ANDROID_APP=framePlayer', + '-DHIFI_ANDROID_APP=questFramePlayer', '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared', '-DCMAKE_VERBOSE_MAKEFILE=ON' - targets = ['framePlayer'] + targets = ['questFramePlayer'] } } } diff --git a/android/apps/questFramePlayer/src/main/AndroidManifest.xml b/android/apps/questFramePlayer/src/main/AndroidManifest.xml index a4c4ec1f2f..721e8cee89 100644 --- a/android/apps/questFramePlayer/src/main/AndroidManifest.xml +++ b/android/apps/questFramePlayer/src/main/AndroidManifest.xml @@ -30,7 +30,7 @@ android:configChanges="screenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode" > - + diff --git a/android/apps/questFramePlayer/src/main/cpp/RenderThread.cpp b/android/apps/questFramePlayer/src/main/cpp/RenderThread.cpp index 507bfd08b9..c07394cbe9 100644 --- a/android/apps/questFramePlayer/src/main/cpp/RenderThread.cpp +++ b/android/apps/questFramePlayer/src/main/cpp/RenderThread.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -62,7 +63,7 @@ JNIEXPORT void JNICALL Java_io_highfidelity_frameplayer_QuestQtActivity_nativeOn } } -static const char* FRAME_FILE = "assets:/frames/20190115_0948.json"; +static const char* FRAME_FILE = "assets:/frames/20190121_1220.json"; static void textureLoader(const std::string& filename, const gpu::TexturePointer& texture, uint16_t layer) { QImage image; @@ -193,9 +194,12 @@ void RenderThread::renderFrame() { // Quest auto frameCorrection = _correction * ovr::toGlm(tracking.HeadPose.Pose); _backend->setCameraCorrection(glm::inverse(frameCorrection), frame->view); + vec4 fovs[2]; ovr::for_each_eye([&](ovrEye eye){ const auto& eyeInfo = tracking.Eye[eye]; eyeProjections[eye] = ovr::toGlm(eyeInfo.ProjectionMatrix); + auto& fov = fovs[eye]; + ovrMatrix4f_ExtractFov(&eyeInfo.ProjectionMatrix, &fov.x, &fov.y, &fov.z, &fov.w); eyeOffsets[eye] = ovr::toGlm(eyeInfo.ViewMatrix); }); _backend->recycle(); diff --git a/android/settings.gradle b/android/settings.gradle index 23e54b0457..64eb246719 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -12,8 +12,8 @@ project(':qt').projectDir = new File(settingsDir, 'libraries/qt') // Applications // -//include ':interface' -//project(':interface').projectDir = new File(settingsDir, 'apps/interface') +include ':interface' +project(':interface').projectDir = new File(settingsDir, 'apps/interface') include ':questInterface' project(':questInterface').projectDir = new File(settingsDir, 'apps/questInterface') @@ -22,8 +22,8 @@ project(':questInterface').projectDir = new File(settingsDir, 'apps/questInterfa // Test projects // -//include ':framePlayer' -//project(':framePlayer').projectDir = new File(settingsDir, 'apps/framePlayer') +include ':framePlayer' +project(':framePlayer').projectDir = new File(settingsDir, 'apps/framePlayer') -//include ':questFramePlayer' -//project(':questFramePlayer').projectDir = new File(settingsDir, 'apps/questFramePlayer') +include ':questFramePlayer' +project(':questFramePlayer').projectDir = new File(settingsDir, 'apps/questFramePlayer') diff --git a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp index 138710ebe6..a407ab8e80 100644 --- a/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp +++ b/libraries/gpu-gl-common/src/gpu/gl/GLBackend.cpp @@ -418,6 +418,10 @@ public: #endif }; +#ifndef GL_CLIP_DISTANCE0 +#define GL_CLIP_DISTANCE0 GL_CLIP_DISTANCE0_EXT +#endif + #define GL_PROFILE_RANGE(category, name) \ PROFILE_RANGE(category, name); \ GlDuration glProfileRangeThis(name); diff --git a/libraries/gpu/src/gpu/FrameReader.cpp b/libraries/gpu/src/gpu/FrameReader.cpp index 00591ce78b..622263c2ee 100644 --- a/libraries/gpu/src/gpu/FrameReader.cpp +++ b/libraries/gpu/src/gpu/FrameReader.cpp @@ -380,6 +380,7 @@ ShaderPointer Deserializer::readShader(const json& node) { // FIXME support procedural shaders Shader::Type type = node[keys::type]; + std::string name = node[keys::name]; uint32_t id = node[keys::id]; ShaderPointer result; switch (type) { @@ -395,6 +396,9 @@ ShaderPointer Deserializer::readShader(const json& node) { default: throw std::runtime_error("not implemented"); } + if (result->getSource().name != name) { + throw std::runtime_error("Bad name match"); + } return result; }