Skip to content

Commit 6d11ceb

Browse files
authored
Merge pull request #29 from FireDragonGameStudio/fdgs-webrtc-vulkan-support
Fdgs webrtc vulkan support
2 parents d2df95f + 6a818a4 commit 6d11ceb

File tree

2 files changed

+53
-8
lines changed

2 files changed

+53
-8
lines changed

Media/QrCodeDetection.png

Lines changed: 3 additions & 0 deletions
Loading

README.md

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,15 @@ https://github.com/user-attachments/assets/a4cfbfc2-0306-40dc-a9a3-cdccffa7afea
6161
|------------------------------------------------|
6262
| ![WebRTC](Media/PCA_WebRTC.gif) |
6363

64+
## 7. 📅 Experimental QR Code detection
65+
66+
- **Purpose:** Detect and track QRCodes without having to use a third-party library.
67+
- **Description:** As this feature is still in experimental state, make sure to use experimental mode on your Quest3 when testing. Unity usually asks for enabling that, before building. You can activate it via command line command using Meta Quest Hub too. More information can be found here - [MR Utility Kit QRCode Detection](https://developers.meta.com/horizon/documentation/unity/unity-mr-utility-kit-qrcode-detection) and here - [Mobile Experimental Features](https://developers.meta.com/horizon/documentation/native/android/mobile-experimental-features/)
68+
69+
| 7. 📅 Experimental QRCode detection |
70+
|------------------------------------------------|
71+
| <p align="center" width="100%"><img alt="QrCodeDetection" width="33%" src="Media/QrCodeDetection.png"></p> |
72+
6473
# Getting Started with PCA
6574

6675
| **Information** | **Details** |
@@ -332,9 +341,20 @@ You can send commands and receive results in any of these languages:
332341

333342
- Open the `Package Manager`, click on the + sign in the upper left/right corner.
334343
- Select "Add package from git URL".
335-
- Enter URL: ```https://github.com/endel/NativeWebSocket.git#upm``` and click in Install.
344+
- Enter URL and click on Install:
345+
```
346+
https://github.com/endel/NativeWebSocket.git#upm
347+
```
348+
- After the installation finished, click on the + sign in the upper left/right corner again.
349+
- Enter URL and click on Install:
350+
```
351+
https://github.com/Unity-Technologies/com.unity.webrtc.git
352+
```
336353
- After the installation finished, click on the + sign in the upper left/right corner again.
337-
- Enter URL ```https://github.com/FireDragonGameStudio/SimpleWebRTC.git?path=/Assets/SimpleWebRTC``` and click on Install
354+
- Enter URL and click on Install:
355+
```
356+
https://github.com/FireDragonGameStudio/SimpleWebRTC.git?path=/Assets/SimpleWebRTC
357+
```
338358
- Open the `WebRTC-Quest` scene.
339359
- Link up your signaling server on the `Client-STUNConnection` component in the `Web Socket Server Address` field.
340360
- Build and deploy the `WebRTC-Quest` scene to your Quest3 device.
@@ -347,19 +367,41 @@ You can send commands and receive results in any of these languages:
347367
- If there are compiler errors, make sure all packages were imported correctly.
348368
- Open the `Package Manager`, click on the + sign in the upper left/right corner.
349369
- Select "Add package from git URL".
350-
- Enter URL: ```https://github.com/endel/NativeWebSocket.git#upm``` and click in Install.
370+
- Enter URL and click on Install:
371+
```
372+
https://github.com/endel/NativeWebSocket.git#upm
373+
```
351374
- After the installation finished, click on the + sign in the upper left/right corner again.
352-
- Enter URL ```https://github.com/FireDragonGameStudio/SimpleWebRTC.git?path=/Assets/SimpleWebRTC``` and click on Install
375+
- Enter URL and click on Install:
376+
```
377+
https://github.com/Unity-Technologies/com.unity.webrtc.git
378+
```
379+
- After the installation finished, click on the + sign in the upper left/right corner again.
380+
- Enter URL and click on Install:
381+
```
382+
https://github.com/FireDragonGameStudio/SimpleWebRTC.git?path=/Assets/SimpleWebRTC
383+
```
353384
- Use the menu `Tools/Update WebRTC Define Symbol` to update the scripting define symbols if needed.
354385
- Make sure your own websocket signaling server is up and running. You can find more information about the necessary steps [here](https://youtu.be/-CwJTgt_Z3M?t=1458).
355386
- If you're going to stream over LAN, make sure the `STUN Server Address` field on `[BuildingBlock] Camera Rig/TrackingSpace/CenterEyeAnchor/Client-STUNConnection` is empty, otherwise leave the default value.
356387
- Make sure to enable the `Web Socket Connection active` flag on `[BuildingBlock] Camera Rig/TrackingSpace/CenterEyeAnchor/Client-STUNConnection` to connect to the websocket server automatically on start.
357-
- WebRTC video streaming does **NOT** work, when the **Graphics API** is set to **Vulkan**. Make sure to switch to **OpenGLES3** under `Project Settings/Player`.
358-
- When using Oculus: Make sure to **DISABLE** the **Low Overhead Mode (GLES)** setting for Android in `Project Settings/XR Plug-In Management/Oculus`. Otherwise this optimization will prevent your Quest from sending the video stream to a receiving client.
359-
- When using OpenXR: Make sure to **DISABLE** the **Meta Quest: Occlusion** and **Meta XR Subsampled Layout** settings for OpenXR in `Project Settings/XR Plug-In Management/OpenXR`. Otherwise this will prevent your Quest app from building, as these features are not supported by OpenGL. Future versions of the Unity WebRTC package will hopefully fix the Vulkan transmission issue, to make use of Vulkans full capabilities. Details can be found [here](https://github.com/Unity-Technologies/com.unity.webrtc/issues/1085)
388+
- WebRTC video streaming **DOES** work, when the **Graphics API** is set to **Vulkan** (as of Unity WebRTC version 3.0.0). It works with **OPENGLES3** too. Make sure to use the right **Graphics API** for your project under `Project Settings/Player`.
389+
- When using **OPENGLES3** and **Oculus**: Make sure to **DISABLE** the **Low Overhead Mode (GLES)** setting for Android in `Project Settings/XR Plug-In Management/Oculus`. Otherwise this optimization will prevent your Quest from sending the video stream to a receiving client.
390+
- When using **OPENGLES3** and **OpenXR**: Make sure to **DISABLE** the **Meta Quest: Occlusion** and **Meta XR Subsampled Layout** settings for OpenXR in `Project Settings/XR Plug-In Management/OpenXR`. Otherwise this will prevent your Quest app from building, as these features are not supported by OpenGL.
360391

361392
> [!WARNING]
362-
> The Meta Project Setup Tool (PST) will show 3 warnings (opaque textures, low overhead mode GLES (-> only when working with the Oculus package) and camera stack). Do NOT fix this warnings.
393+
> The Meta Project Setup Tool (PST) will show 3 warnings (opaque textures, low overhead mode GLES (-> only when working with **OPENGLES3** and the Oculus package) and camera stack). Do NOT fix this warnings.
394+
395+
## 7. **[Experimental QRCode detection](https://github.com/xrdevrob/QuestCameraKit?tab=readme-ov-file#-experimental-qrcode-detection)**
396+
397+
- Make sure TextMeshPro essentials are installed.
398+
- Enable experimental mode on your Quest3. You can find more information about the necessary steps [here](https://developers.meta.com/horizon/documentation/unity/unity-mr-utility-kit-qrcode-detection).
399+
- Build and deploy the `QRCodeDetection` scene to your Quest3 device.
400+
- Use your controllers to interact with the UI. No hand tracking support yet.
401+
402+
**Troubleshooting**:
403+
- Go to `Window/TextMeshPro` and click on `Import TMP Essential Resources`
404+
- Make sure experimental mode is active. You can find more information about the necessary steps [here](https://developers.meta.com/horizon/documentation/unity/unity-mr-utility-kit-qrcode-detection).
363405

364406
# General Troubleshooting & Known Issues
365407

0 commit comments

Comments
 (0)