Search Unity

Can I render cameras by external devices(capture card, non local graphics card)

Discussion in 'Multiplayer' started by Brainslum, Sep 13, 2019.

  1. Brainslum

    Brainslum

    Joined:
    Jan 10, 2017
    Posts:
    57
    Hey,

    I am trying to make a 'local multiplayer' third person action game without messing with networking.

    By that, I mean there are multiple players inputs, controlling each one's own characters, ywt each player POV camera needs to be rendered through seperated graphics device, whether rendered through another computer graphics card, or a capture card if that's an option. the main game camera, however, is a spectator cinemachine that roam around and see what's happening like in Counter strike. So, in a nutshell, I can keep multiple inputs and all the logics local in one computer, but for the sake of FPS, each player POV rendered by seperated devices(I dont mind hacking ways). This is gonna be running hdrp

    I tried client + photon but do not want to go that route again. This doesn't need to worry about server authorization at all it's meant to be a locally shared game with necessary hardwares.

    Does anyone have solution on how to delegate the rendering to other devices?
     
  2. LukeDawn

    LukeDawn

    Joined:
    Nov 10, 2016
    Posts:
    404
    Have you checked the depth at the deep-end?
     
  3. doctorpangloss

    doctorpangloss

    Joined:
    Feb 20, 2013
    Posts:
    270
    The multi-displays API exists, I don't know how reliable it is in the very latest versions. Lots of multiplayer games use it. You may pretty good luck using it within the editor, and running your game that way too.
     
  4. Brainslum

    Brainslum

    Joined:
    Jan 10, 2017
    Posts:
    57
    deep end???? depth you mean the camera api?
     
  5. Brainslum

    Brainslum

    Joined:
    Jan 10, 2017
    Posts:
    57
    However the rendering still goes through one computer right? Multi Display but it is still basically rendering multiple cameras by one computer to different screens.

    I want the machine to run all the logics, yet only handles the spectator camera rendering. the other displays are ideally handled by other graphics cards or even capture cards if thats possible?

    The problem is how to delegate rendering. as the screen is basically only a display device
     
  6. Brainslum

    Brainslum

    Joined:
    Jan 10, 2017
    Posts:
    57
    Since this is gonna be HDRP and set at a pretty high graphics standard, my logics running machine can only handle all the game logics and one spectator camera rendering. the other displays must be rendered else where by other GPU.
     
  7. LukeDawn

    LukeDawn

    Joined:
    Nov 10, 2016
    Posts:
    404
    I meant that you seem to have jumped into the deep end without being able to swim. i.e. out of your depth.

    You cannot render to other devices. You can stream to them, but they would have to have a streaming client which you'd need to write for each OS that you wished to stream to, and that client would need to be installed on each device. And this all involves some hefty networking.
     
  8. Brainslum

    Brainslum

    Joined:
    Jan 10, 2017
    Posts:
    57
    Apparently if unity gets their cluster rendering right this might work
     
  9. doctorpangloss

    doctorpangloss

    Joined:
    Feb 20, 2013
    Posts:
    270
    No.

    I'm pretty confident Unity only supports rendering with a single logical GPU on all platforms. However, you gotta understand that your operating system correctly renders images in an accelerated fashion from that one logical GPU onto multiple displays, even if those displays are not connected to the logical GPU that did the rendering.

    Some technologies like AMD CrossFire present multiple physical GPUs as a single logical GPU. You need to be aware of the limitations of that approach though, because it may not even support the multi-display API correctly. You also cannot use many of the built-in image effects.

    In general, you should just use the fastest single GPU available and see how far that takes you. Use Unity's multi-displays API to rendering different cameras to different displays.

    Alternatively, scale back your graphics requirements. Killer Queen is a pixel art game!

    This is the most I can say on the matter.
     
    Joe-Censored likes this.