Jump to content

tedw4rd

Verified Members
  • Posts

    16
  • Joined

  • Last visited

Everything posted by tedw4rd

  1. @JustinVive Any update on this? It really would make configuring large numbers of headsets much easier. @JustinVive
  2. @Corvus I had to reconstruct some of the work I threw out, but here's the gist of what I was working with: using UnityEngine; using wvr; namespace Core.Cognivive.Multiplayer.Streaming { public class WaveScreenCapture : StreamingScreenCapture { private uint _screenWidth; private uint _screenHeight; private bool _setupComplete; private RenderTexture _internalTexture; private RenderTexture _botheyeTexture; protected override int ScreenWidth { get { return (int) _screenWidth; } } protected override int ScreenHeight { get { return (int) _screenHeight; } } protected override void PerformCapture() { _botheyeTexture = WaveVR_Render.Instance.botheyes.GetCamera().activeTexture; if (!_setupComplete) { Setup(_botheyeTexture); } Graphics.Blit(_botheyeTexture, _internalTexture); } protected override byte[] GetScreenData(int srcX, int srcY, int srcWidth, int srcHeight, int outputBlockWidth, int outputBlockHeight) { RenderTexture.active = _internalTexture; _tex.ReadPixels(new Rect(0, 0, _internalTexture.width, _internalTexture.height), 0, 0); _tex.Apply(); return _tex.EncodeToJPG(); } private void OnEnable() { Camera.onPostRender += TryTickStream; } private void OnDisable() { Camera.onPostRender -= TryTickStream; } private void TryTickStream(Camera cam) { if (cam != WaveVR_Render.Instance.botheyes.GetCamera()) { return; } PerformCapture(); } private void Setup(RenderTexture src) { Interop.WVR_GetRenderTargetSize(ref _screenWidth, ref _screenHeight); _internalTexture = RenderTexture.GetTemporary(src.width / 2, src.height / 2, src.depth, src.format); _tex = new Texture2D(_internalTexture.width, _internalTexture.height); _setupComplete = true; } } } The idea was to Blit the main camera texture to a smaller rendertexture and then pull that downscaled image out every couple of frames with GetScreenData. GetScreenData would always return a blank image. We're using single pass rendering, and I can confirm that the contents of _botheyetexture is correct when we perform the blit operation.
  3. Hello! I'm working on a Vive Focus Plus project using Unity 2018.3. We're trying to build a screensharing feature into our VR application. Currently, we do this by getting the active render texture off of the main camera and using Graphics.Blit to copy its contents to a different, equally sized render texture. That all happens in a Camera.onPostRender callback. Later, we stream the contents of that second texture to the receiver. I'd like to have the second texture (the one that gets copied to) be smaller than the main camera texture so we can save on texture memory, bandwidth, frame time etc. However, if I try to blit the main camera texture to a smaller texture, the smaller texture always ends up black. I've tried changing the filter modes on both textures and come up with similar results. Is blitting to a different sized texture simply not supported on the Vive Focus, or am I missing something?
  4. I've purchased a number of Vive Focus Pluses and I'm starting to set them up to be distributed. The batch config utility works great for getting my built application onto the devices. However, I would also like to update the devices' OS to the latest version before shipping. Is there a way to do that using the batch config utility? I'm currently manually updating every headset patch by patch, and it's a huge pain. Also, is there a way to have a device automatically sign into a Viveport account with the batch config utility? @Cotta @JustinVive
  5. Update: I've been messing around with this for a while now and I'm still having z-fighting troubles. Typically my view frustrum is only 500 units deep (0.1 to 500), but even when I reduce it to 10 units (0.1 to 10) I still see all sorts of flickering. According to a few tests I've done, the camera is rendering to a RenderTexture with a 24-bit depth buffer. I'm not sure how to increase the precision any more.
  6. Bundling up the relevant scene is going to be really difficult at the moment. However, I have two planes that are parallel and 0.02 units apart that are z-fighting right now. I also have some meshes that actually intersect that have z-fighting along the intersection. Even though the intersection is on the orange line, I'll still see z-fighting out to the purple line. I guess it would make sense that this is a floating point precision issue. I'll give some of these tips a try.
  7. I'm working on a project using Unity 2018.3.10 and WaveSDK 3.1.6. There are several objects in my main scene that render perfectly fine when running off my desktop, but experience significant z-fighting when running on the Focus Plus. Some of the objects that are z-fighting are almost 1 cm apart. It makes the whole scene look terrible, especially because this also happens where any two meshes intersect. All of these objects are using the standard Unity shader. Is this a known issue? Is there anything I can do to reduce the z-fighting (aside from restructuring my scene)?
  8. I don't think you can. It should be setting the FOV to match the FOV of the device you're playing it on.
  9. I'd just like to say that this is an incredible improvement for my team and our product. We're looking to give Kiosk Mode enabled headsets to people at home, and were very concerned about the process of setting up wifi when the user gets home. This removes something like 4 screens and a passcode from that process for our end users. It's so much simpler. Thank you and please keep doing more along this line of thinking!
  10. Will I have to use a different bundle ID too? @Ken Lee
  11. I'm trying to update an application on the Enterprise Portal. I successfully uploaded the APK, and all the initial manifest checks were successful. I was able to successfully submit it, but when I return to the dashboard, I see the following: I can't find anything to tell me why the status is "Error", and reuploading the APK does nothing to change the status. Can we get some better feedback about these kinds of errors please? @Ken Lee
  12. @Caden For what it's worth, it's still possible to update Kiosk Mode apps via the usual sideloading-via-adb method. I suspect you're looking for a way to update them over the air, though, and frankly, so am I.
  13. I just spent a week trying to fix some really strange performance issues in my Vive Focus project. Despite having a very simple scene (literally 3 meshes and less than a dozen draw calls), my Focus was rendering at ~40FPS according to ADB. After profiling, I found that the framerate was actually super inconsistent, and the Focus was spending a lot of time on the GPU after rendering: There you can see I'm spending over 20ms in Gfx.ProcessCommands after both Camera.Render calls complete, but without any obvious reason. This happened on 50-70% of the frames. (Side note: I was using multipass at the time of this screenshot, thus the two render calls. Friendly reminder to use singlepass if at all possible.) After removing almost everything from the scene, I realized there was a Screen Space Canvas in the scene that we use to render a desktop menu in the Oculus version of our app. That Canvas wasn't being displayed on the Focus. However, when I removed the Canvas from the scene, the overall frame time became consistent again and my framerate returned to normal. tl;dr: Disable any and all screen space Canvases you may have. They won't be displayed, but they still take up time on the GPU. @Tony PH Lin
  14. @Tony PH Lin,Thanks for your response. On the positive side, you helped me fix a different problem with our interaction middleware. It was generating those extra Virtual Reality SDKs which were causing some issues. Thanks for that! Unfortunately, it didn't solve the rendering problem with single-pass stereo. I tried to reproduce the issue with a simpler project, and found that the issue happened after I incorporated the Lightweight Rendering Pipeline from Unity. Do you have any plans to support Unity's Scriptable Render Pipeline in the near future? Do you know of any quick fixes or patches I can use to enable support for SRP? @Cotta
  15. I should clarify that when I say "nothing appears in the right eye" I mean nothing game related. I do occasionally see the controller connection dialog in the right eye (for some reason) @Tony PH Lin @Cotta
  16. I'm working on a Vive Focus Plus project using Unity. I'm using Wave SDK v3.1.1 (Beta) and Unity 2018.3.10. I've been trying to get single pass stereo rendering to work properly for a while and I keep running into the same issue. When I try to turn on SPS using the WaveVR settings dialog (see below), I see both passes rendered side-by-side in the left eye of the Focus, and nothing in the right eye. It's as if one had taken what should be in the right eye and shoved it over to the left eye. Here's all the settings I think would be relevant: When I don't enable the last WaveVR settings option (the Single Pass Stereo support one) the application runs fine. Both eyes render properly, but it's clear it's using multipass rendering. How can I fix Single Pass Stereo rendering, and what am I doing wrong?
×
×
  • Create New...