How to correctly use SRGB on Oculus Mobile Native (C++)?
This is a Go+Quest question. I have a Oculus Mobile C++ app forked from the VRCubeWorld_NativeActivity example in the Oculus Mobile native SDK. I hooked in my own code in `ovrRenderer_RenderFrame`, so right after the framebuffer and the eye matrices are set up I call my own rendering code. This rendering code is shared with desktop, it enables `GL_FRAMEBUFFER_SRGB` and it exclusively draws the SRGB color space. I am trying to figure out how to convert VRCubeWorld_NativeActivity from RGB to SRGB. I want the SRGB drawn by my rendering code to be correctly treated by the NativeActivity.cpp's framebuffer and EGL surface. I have found a way that "works" (I see the colors I expect) but I do not know if it is correct. You can see my exact NativeActivity code here (it is open source). What I did: Pass `GL_SRGB8_ALPHA8` instead of `GL_RGBA8` in ovrFramebuffer_Create Set `VRAPI_MODE_FLAG_FRONT_BUFFER_SRGB` in `parms.flags` when we call `vrapi_EnterVrMode`() What I did NOT do— because I tried these things and they had no effect: Call `setEGLattrib(EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR);` after calling `eglCreateContext()` (I think we do this in our glfw version, and it is recommended in a long comment in VrApi_Types.h). Comment out the many `VRAPI_FRAME_LAYER_FLAG_INHIBIT_SRGB_FRAMEBUFFER` lines left over from the sample code. What I need to know: Am I doing something wrong or unsafe, or incurring any penalty (like unnecessary conversions RGB->SRGB and back again) by failing to explicitly set the EGL_GL_COLORSPACE_SRGB_KHR egl attrib? What do the various VRAPI_FRAME_LAYER_FLAG_INHIBIT_SRGB_FRAMEBUFFER flags do? What does this "layer" code (the "black layer" and "loading icon layer") do, and can I safely remove it? (I have removed a lot of the code from the NativeActivity example because I was sure I did not need it, but there are other parts I did not understand so I have left it in. Because there is not really any comments/documentation on the sample code it is hard to tell what is necessary and what Oculus merely left for us as a convenience.)1.9KViews1like2CommentsGO port to QUEST
We created a custom app on the GO and sideloaded it on to a number of GO devices. But now the GO is gone, and the client wants 30 more headsets with the exact same app. (Which is a very simple game). Can we easily port this to a Quest? Or are there better alternatives. Any help here would be greatly appreciated.1KViews0likes2CommentsDistribute dev build to Quest and Go?
I've successfully published my app to the Go, and I can see the app in Developer Feed on the Quest - but how do I actually _play_ it simultaneously on the Quest and Go? Specifically - I'd imagine that maybe the reason it doesn't show on the Quest is due to V2 signing? or maybe needing headtracking enabled? Assuming that's the case... since there is no dedicated Quest release platform, how do people do this? I don't mind having the same exact build (e.g. just 3dof on the Quest), just want to be able to actually find it in my library and play it on both headsets! I'm building in Unity, but I do the signing as an external step (via `jarsigner` currently... I suppose I need to switch to `apksigner` to do V2 signing?) Not talking about Store distribution, this is specifically for development or internal team stuff only. Thanks!750Views0likes1CommentOculus Quest App framerate way slower than same app on Oculus Go
Hello everyone, I recently developped an app for Oculus Go on Unity using the OVR Plugin, and now I'm trying to port it to the Oculus Quest. The Oculus Go App was a bit laggy because there was a lot of world space UI, so I found ways to make it run smoothly at 60 fps. When developping it for the Quest, I had to recreate a matching InputManager so it could work well with the controllers, and I changed OVRManager's target device from Go to Quest. But when I build the app, it runs at maximum 40 fps on the Quest, even though it was really smooth on the Go. Comparing both Profilers on my PC, I can't manage to find any difference : it looks like a lot of CPU usage is taken by EventSystem ( because of World space UI), Camera Rendering and OVRManager.Update() (which obviously can't be too altered by me (the raycasting part takes the most time)). Of course this is because my PC isn't using all the resources of the scene since VR isn't activated, but to my knowledge there is still no way to connect the Unity profiler to an Android Oculus device. Here is the Go App Profiler : And here is the Quest's : Behaviour script Update takes even less time on the Quest because I managed to optimize some things. So basically I want to know why the application takes way more resources on the Quest than on the Go. It can't only be the 6 DOF component. Any suggestion is welcome, Thank you !808Views0likes1CommentGuardian crashing app when you leave it
Hi, The app I am developing for Oculus Quest works functionally. However when I step outside of my guardian the Oculus returns to the home screen and says that my app has crashed. I am writing to see if this is a common issue with the quest or if this is specific to my application. If it is specific to my application then I will look over it. Kind Regards J430Views0likes0CommentsOVR seems to think my Quest is a Go since today. I don't understand why, or how to fix/revert this.
Game Engine: Unity 2019.1.2f1 Oculus Utilities v1.36.0 OVRPlugin v1.36.0 SDK v1.1.22.00 I've been working on a Quest experience for a while now, and when I arrived at the office this morning to test a new (completely unrelated) feature, my dev build loaded with only a single controller using the Oculus Go controller model, which I found weird. I added a debug.log statement and asked it what product the device was (using OVRPlugin.productName), and it prints "Oculus Go". I have full positional tracking, and if I press a button on the other controller, the system shifts which hand is active and deactivates the other. So, it somehow realizes it's a Quest, but it tells my system it's a Go anyways. ADB recognizes the device as a Quest, so it's something software related. I have tried restarting my Quest to see if that'll help, but it did not2.9KViews0likes12CommentsWhich levels of __android_log_print go to logcat?
I am developing an app in C using the native Oculus Mobile SDK, version 1.23.0. I can print things out with: __android_log_print(ANDROID_LOG_DEBUG, ""MESSAGE1"); or: __android_log_print(ANDROID_LOG_WARN, "MESSAGE2"); or any of the standard Android log levels here. I am finding it inconsistent whether ANDROID_LOG_DEBUG gets into the output of "adb logcat". On at least some of my configurations, it does not. ANDROID_LOG_WARN seems to always go into "adb logcat". Can you clarify: - Which log levels appear in "adb logcat" and which do not? - Is this different for debug vs release builds? - Is this different for Go vs Quest? - Is this different depending on whether we have set the AndroidManifest.xml values for a store build, as described here? Rather than testing different configurations it would be handy to know what is "supposed" to happen, so I can tell if something is wrong. There is a page in the Oculus documentation for logcat but it does not address this.1KViews0likes0CommentsBUG: Quest shows up as Go - UnityEngine.XR.XRDevice.model
Hello, I am using Oculus Quest 64Gb with Unity 2019.1.0f2. Environment is working with Unity's Android support. Our project uses Unity's Native XR Support with Oculus packages downloaded from Package Manager. Building and connection to the devices work. We don't use any Oculus made prefabs and the tracking system has worked well with the native one. " UnityEngine.XR.XRDevice.model " returns wrong string after the last update. When connected to Quest, it used to return a string as "Oculus Quest" but now it returns "Oculus Go", so there is no way (that I know of) to detect if the hardware is actually a Quest. Cheers! -Sakari2.1KViews0likes3Comments