Open ghost opened 1 year ago
Yes, all operations make the engine and final S3D image sent via cable like a common 2D image so you don't need to use S3D cable standards and no bandwidth overhead required until you really need full frame S3D for 2in1 displays(like Zalman Trimon).
If Unity can output to separate 2 displays at same time so no problem to make an option in my plugin to not mix final S3D image by output shader and send full left/right images as is to separate displays. But if DX or NVidia drivers can't make such output and OpenGL can for example then it's not a Unity problem I think :) I'll test it.
I see, I looked and see the final shader, it is definitely not a Unity problem. Unity can, in Windows Extended Desktop mode (Windows Display setting to use Display 1 as primary display and extend desktop to display 2) Unity is able to see both displays and set camera 1 to display 1 and Camera 2 to Display 2. This example from Unity's site works, this display activation has to be executed first, before the camera 2 will be able to output to display 2. I put added this code and it worked, without the code it doesn't work.
' using UnityEngine; using System.Collections;
public class ActivateAllDisplays : MonoBehaviour
{
void Start ()
{
Debug.Log ("displays connected: " + Display.displays.Length);
// Display.displays[0] is the primary, default display and is always ON, so start at index 1.
// Check if additional displays are available and activate each.
for (int i = 1; i < Display.displays.Length; i++)
{
Display.displays[i].Activate();
}
}
}
`
However, if the Windows Desktop Settings is set to clone mode, then Unity Does not detect more than one display. It is interesting that this happens. I will test on Windows 11. A friend told me that Unity can see two displays in clone mode on Windows 11.
Windows 10 Desktop Clone Desktop Mode 3D Stereo Dual Piped (Dual Video Cables) and Windows 10 Desktop Extended Display Mode 3D Stereo Dual Piped (Dual video cables)
I see that your plugin by-passes the need for having any direct support for 3D Stereoscopic modes presented by the Nvidia GPU Graphics driver. All of your work is done directly in the Game Engine and adds native support with some very sophisticated and clean approaches to this architecture. Your approach is novel and I fairly understand how it applies to a single frame over a single video cable. I can't figure out how to get the frame to split and output effectively to two separate displays/video cables.
I was able to get a quick and dirty solution working with Windows 10 Desktop Extended Desktop 3D Stereo Dual Piped output to work by using a simple dual camera rig, modifying the code to detect and enumerate Displays on awake, then assign the Right eye to display number 2. This approach isn't the best and isn't as capable as yours.
This "works" for dual piped in Windows 10 Extended Desktop mode but isn't ideal due to complications with running Windows applications in extended desktop then switching over to 3D Stereo in extended desktop. It is preferred to use Windows 10 Desktop Clone mode for 3D Stereo Dual Piped, but with Unity and DX; Windows 10 only presents one single display upon display detection to Unity. So the left eye ends up going out both channels as the Right eye never gets assigned to Display 2 in clone mode, again, Unity cant see Display https://github.com/Vital-Volkov/Stereoscopic-3D-system-for-Unity-2019-/issues/2 in Clone mode. I'll put in a trouble ticket with Unity for this, but I believe its is a Win10 subsystem issue.