keijiro / KlakSyphon

Syphon plugin for Unity
Other
240 stars 24 forks source link

red screen when switching to High Definition Render Pipeline #12

Closed makaruk closed 1 year ago

makaruk commented 5 years ago

Dear Keijiro,

I'm using the recent version of Klak Syphon with Unity 2018.3.4f1 Metal on OSX 10.14

The Klak Syphon Server works fine on a standard render pipeline, but the moment I swith to either High Definition or Lightweight Render pipeline - the Klak output video stream goes red and generally not much more happens.

Is there any setting I'm unaware of or the sriptable render pipeline is just not supported?

Kind Regards

keijiro commented 5 years ago

Thank you for reporting the issue. I have seen a similar issue in KlakNDI that only reproduces on macOS/Metal.

https://github.com/keijiro/KlakNDI/issues/20

Before starting detailed investigation, could you provide some additional information?

makaruk commented 5 years ago

Dear Keijiro,

Thank You for Your response.

I'm using MacBook Pro Touchbar 15,1 - 32GB RAM, 2018 Edition, 2,2 Ghz i7.

The computer has two GPUs Radeon Pro 555X 4096 MB, Intel UHD Graphics 630 1536 MB and is most definitely using the Radeon upon Launching the Unity Build - as observed in the GPU History of the Activity Monitor.

I cannot switch GPU's upon launch - the option is greyed out - please see the screenshot attached.

Kind Regards

screenshot 2019-02-26 at 04 30 55
keijiro commented 5 years ago

Thanks for replying. It's a little bit weird that it doesn't allow changing GPU to use. From my understanding, MacBook Pro Touch Bar 15-inch has Radeon Pro GPU. It should be explicitly selectable. Is there any graphics option in the System Preference, like Energy Saver?

makaruk commented 5 years ago

Yes, and I think it is actually using the Radeon. There is a setting in the Energy Saver but it only allows for switching to continous use of Radeon instead of Iris - which in this case makes no difference. I assume the app is using Radeon by looking at the GPU Usage in the activity monitor (please see the screenshots attached).

Kind Regards

screenshot 2019-02-26 at 05 26 07 screenshot 2019-02-26 at 05 30 09
keijiro commented 5 years ago

Thanks for the detailed clarification. I'll start looking into it based on the information.

OskarGroth commented 5 years ago

I'm having the same issue. Just tried using your https://github.com/keijiro/LwrpVfxTest:

Skärmavbild 2019-03-30 kl  16 05 17 Skärmavbild 2019-03-30 kl  16 05 29

2016 MBP with Radeon 460.

I have the ability to change the GPU to Intel in the launcher, but doing so results in a black Unity window (Unity VFX Metal shortcoming?) and red Syphon client.

makaruk commented 5 years ago

Dear Keijiro,

I just tested the setup with a MacBook Pro 2018, 2019.2.0b4 and Klak Syphon Client on a Lightweight Render Pipeline.

The result of the transmitted video is a red screen in a client software - same as the one described above.

Have You got any hints regarding how could I fix it? Does Klak Syphon support LWRP?

I should also add that I tried most if not all of the player settings, camera settings, lightweight render pipeline scriptable object settings and no change gives any result ever except when I swith the LWRP completely by removing it from Scriptable Render Pipeline Settings in Project Settings / Graphics

I would appreciate any help in this ...

Kind Regards

Dariusz

grigM commented 5 years ago

Hello Keijiro! First of all, thank's for all of yours great works that you make for Unity community! Everything you do, such a big inspiration for all of us!

But i've got a question. Is there any way to fix this red screen issue with HDRP render and syphon ?

my specs: MacBook Pro 2018 with eGPU - RadeonVII mac os 10.14.6, Unity 2019.2.0f1

Best regards

tomalouette commented 5 years ago

Hi Keijiro, The same issue for me, HDPR render making a red screen.

Best

piotrus04 commented 5 years ago

Hi, i also tried to find what is not working correctly in the xcode project but impossible to find any error. The red screen still here. I monitored both the _servertexture and the blit shader, it doesn't seems neither to be the problem.

sebxliv commented 5 years ago

I'm trying KlakSyphon on Unity 2019.1.2f1 on a MacOS 10. It works perfecto on normal project but on a HDRP I get a black screen. Anything we can do to debug this! It would be awesome to have it working!

gitcoinbot commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 0.163 ETH (30.05 USD @ $184.34/ETH) attached to it.

sebxliv commented 5 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done

This issue now has a funding of 0.163 ETH (30.05 USD @ $184.34/ETH) attached to it.

Just made this crypto bounty for anyone that fixes this issue 😀Anyone else wants to contribute too?

tomalouette commented 4 years ago

Hi, Red screen on the syphon client in HDRP mode. Any news ? The only way i found on forum, it's the render texture mode, the camera mode is out.

MrLeap commented 4 years ago

I'm also experiencing this issue. I've spent about an hour seeing if I could yield any more info. So far all I've got is restating what other people have said -- the issue appears to be with SyphonServer in HDRP. ( I encountered this issue with 2019.3.0.f5). It works fine in the pre-SRP 3d renderer.

Frame Debugger makes me think it's not an issue with Hidden/Klak/Syphon/Blit or anything obvious like that. I tried fussing around with render texture types, colorspace, video card configuration. Forcing the intel causes unity to crash, which is probably unrelated, but I got no change in the behavior at all.

If there's anything you'd like me to try with a known broken configuration, let me know! I'll poking at it throughout the day. I have a fun plan for this if I can get it working along side vfx graphs. :)

Thanks for all you do Keijiro!

(2019 MacBook Pro, Radeon Pro 560X 4 GB, Intel UHD Graphics 630 1536 MB Mojave 10.14.6)

rsodre commented 4 years ago

From the HDRP docs: "HDRP does not support OpenGL or OpenGL ES devices". Since Syphon relies on OpenGL, I would expect something like that. Syphon for Metal is already under development.

keijiro commented 4 years ago

@rsodre KlakSyphon does support Metal (that's the main aim of the plugin). This issue is a different thing.

shiyamon commented 4 years ago

For someone in trouble with this issue.

As I wrote in another topic this issue seems to occur due to the format of RenderTexture. #13 I confirmed that RenderTextureFormat.Default works with Unity2019.4.1f1, HDRP 7.4.1, Metal, macOS 10.15.3. So in the meantime, I, we, can send the scene RT with Syphon with the following steps.

(in runtime)

Strange thing is that the RenderTexture assets made in Project window don't work. I Debug.Log the format of RenderTexture that was generated in runtime with RenderTextureFormat.Default and it shows "BGRA32", btw.

eloimaduell commented 3 years ago

hi @shiyamon !

Could you please share your code to solve this issue ? I'm with OSX 11.5.1 with an AMD Radeon VEGA and Unity 2022.1.0a91212. I'm trying to get a Syphon texture out of a camera in Unity and what I get is a "red" texture. I tried your approach but I don't know how to implement the last step, setting the RT to the sourceTexture of the SyphonServer...

Thanks !

eloimaduell commented 3 years ago

(just to mention that I'm on the standard pipeline)

@shiyamon I found a solution... So here it's my code for this script that creates a render texture on Start() and assigns it to the camera and to the SyphonServer.sourceTexture.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class createRenderTextureSyphon : MonoBehaviour
{
    public RenderTexture rt;
    public Camera cam;
    public Klak.Syphon.SyphonServer sy;

    // Start is called before the first frame update
    void Start()
    {
        RenderTextureFormat rtf;
        rtf = RenderTextureFormat.Default;
        rt = new RenderTexture(2160, 420, 24, rtf);
        cam.targetTexture = rt;
        sy.sourceTexture = rt;

    }

    // Update is called once per frame
    void Update()
    {

    }
}

So I created and empty object, added this script, also added the SyphonServer script. Then dragged the camera that I want to share via syphon to the Cam parameter and dragged the SyphonServer script to the sy parameter.

Thanks everyone for the tips !

griv commented 3 years ago

Thanks this worked for me :)

(just to mention that I'm on the standard pipeline)

@shiyamon I found a solution... So here it's my code for this script that creates a render texture on Start() and assigns it to the camera and to the SyphonServer.sourceTexture.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class createRenderTextureSyphon : MonoBehaviour
{
    public RenderTexture rt;
    public Camera cam;
    public Klak.Syphon.SyphonServer sy;

    // Start is called before the first frame update
    void Start()
    {
        RenderTextureFormat rtf;
        rtf = RenderTextureFormat.Default;
        rt = new RenderTexture(2160, 420, 24, rtf);
        cam.targetTexture = rt;
        sy.sourceTexture = rt;

    }

    // Update is called once per frame
    void Update()
    {

    }
}

So I created and empty object, added this script, also added the SyphonServer script. Then dragged the camera that I want to share via syphon to the Cam parameter and dragged the SyphonServer script to the sy parameter.

Thanks everyone for the tips !

keijiro commented 1 year ago

I added URP/HDRP support in 1.0.0.

I close this issue at the moment. Please reopen it if it still reproduces.