adamrehn / ue4-runtime

Container images for running packaged Unreal Engine projects via the NVIDIA Container Toolkit
https://hub.docker.com/r/adamrehn/ue4-runtime
MIT License
82 stars 26 forks source link

Issue using Vulkan for a packaged 4.23 project #7

Closed corwinjs closed 4 years ago

corwinjs commented 4 years ago

Hi Adam,

I have an Unreal project which I use to generate camera image data in the form of png files and actor pose information in the form of csv files. I had been using your adamrehn/ue4-runtime:18.04-opengl image to add my packaged project to, and it was running and generating data perfectly while I was using Unreal 4.22 / OpenGL to build that project. However, now I am trying to use Unreal 4.23 / Vulkan. I am able to package my project still and I can verify that the packaged project still works. However, when build the docker image and test within that I now see the following error:

[2020.07.21-01.06.47:309][  0]LogLinux: Warning: MessageBox: Failed to load Vulkan Driver which is required to run the engine.
The engine no longer fallbacks to OpenGL4 which has been deprecated.: Message:
[2020.07.21-01.06.47:309][  0]LogCore: FUnixPlatformMisc::RequestExit(bForce=true, ReturnCode=1)
[2020.07.21-01.06.47:309][  0]LogCore: FUnixPlatformMisc::RequestExit(1)

I just now spent a bit of time trying to figure out what is causing that error, and it seems like this error is sometimes caused when vulkan-utils is not installed. I can't tell if that's the issue here though because I don't have root access when using your image. Do you know how to fix the issue I'm seeing?

My Dockerfile is pretty simple:

FROM adamrehn/ue4-runtime:18.04-vulkan
WORKDIR /home/ue4
COPY . /home/ue4

Thanks, Corwin

adamrehn commented 4 years ago

Could you please share the docker run command (or Docker Compose YAML, Kubernetes pod spec, etc.) that you're using to run the container?

corwinjs commented 4 years ago
docker run -it -v /home/cstout16/Documents/UnrealProjects/PluginSimulatorExampleProject/scenario.yaml:/home/ue4/scenario.yaml -v /home/cstout16/Documents/UnrealProjects/PluginSimulatorExampleProject/BuildOutput/LinuxNoEditor/output:/home/ue4/output --gpus all ftsim_main:1
adamrehn commented 4 years ago

Okay, so you've enabled GPU acceleration but you're not bind-mounting the host system's X11 socket or propagating the DISPLAY environment variable. As stated in the project's README:

Vulkan rendering under Unreal Engine 4.24 or older will require bind-mounting the X11 socket from the host system and propagating the DISPLAY environment variable so that output can be rendered to a window.

If you want to perform offscreen rendering with Unreal Engine 4.24 or older then you'll need to use OpenGL. You can also perform offscreen rendering with Vulkan using Unreal Engine 4.25 or newer.

corwinjs commented 4 years ago

I see. I must have skimmed through that section without realizing the implications here. I thought since I didn't need to see the viewport (I just need the output files being generated) that I wouldn't need to do anything to enable that display option. Thanks for your help.