adamrehn / ue4-runtime

Container images for running packaged Unreal Engine projects via the NVIDIA Container Toolkit

Home Page:https://hub.docker.com/r/adamrehn/ue4-runtime

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue using Vulkan for a packaged 4.23 project

corwinjs opened this issue · comments

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

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

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

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.

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.