0
$\begingroup$

I am using a computer without good graphics card and a remote LINUX server with a K40 Tesla card. I am operating on a remote server by MobaX to get the rendering working. For now I'm using Cycles to render and everything works just fine, here is my command:

blender -b -noaudio /Path/to/File/NAME.blend -P /Path/to/scripts/linux_enable_GPU.py -P /Path/to/demo/run.py -o //results/part{variable}.mp4 -a -- variable 

The linux_enable_GPU.py helps me to enable the GPU as well as setting the engine to Cycles and Cuda and the run.py helps me to create actions.


However, sometimes it is quite expensive to render a simple scene using Cycles so I'd like to use Eevee to render my animations.

I tried lot to make it work. According to the official guide, I use:

blender -b  -noaudio test_eevee.blend -E BLENDER_EEVEE -a 

to call for Eevee engine but it failed. In debug mode I get:

Version 280 sub 39 date unknown hash unknown /run/user/1205/gvfs/ non-existent directory Read blend: /home/blender/works/demo/test_eevee.blend read file /home/blender/works/demo/test_eevee.blend Version 292 sub 15 date 2021-02-24 16:25 hash 02948a2cab44 Writing: /tmp/test_eevee.crash.txt Segmentation fault (core dumped)

And in debug-all mode I get a lot of errors:

it seems to be caused by the errors in the picture

Seems that Eevee does not support headless rendering: Headless Eevee rendering However, it seems that we can fake a display to use Eevee. But the script in that Q&A is not crystal clear and I'm using Blender 2.92 version.

Is there any way to render headless using EEVEE?

$\endgroup$
5
  • $\begingroup$ AFAICT rendering should work if you have a graphics card installed. Have you tried setting the render engine in your blend file? ... and then run the usual blender -b file.blend -a? Seems you GL configs are messed up. Related: blender.stackexchange.com/questions/150526/… Also I recommend take the tour to learn how this site works: blender.stackexchange.com/tour $\endgroup$
    – brockmann
    Jul 16 at 6:49
  • $\begingroup$ How can I fake a display? The method in the first link is not very clear $\endgroup$
    – Frank Joe
    Jul 16 at 7:14
  • $\begingroup$ Did you read my comment? $\endgroup$
    – brockmann
    Jul 16 at 7:15
  • $\begingroup$ Yes I have set the engine as EEVEE before, and I also learned that eevee does not support headless render. I think that maybe there is something wrong with my gl but I dont know much about it $\endgroup$
    – Frank Joe
    Jul 16 at 7:24
  • $\begingroup$ ... and you get the same error? Again, if you have a graphics card installed it should work fine, rendering headless does not work without a graphics card installed however, or any hacks to fake a display driver (seems not needed in your case). $\endgroup$
    – brockmann
    Jul 16 at 7:30
1
$\begingroup$

Check my self answered question here:

How do you use Eevee renderer in a Docker container using bpy?

It's instructions for how to use Eevee in a container, but the instructions are directly translatable to your scenario.

Basically what you would do is create a service that starts xvfb.

Fair warning though, in my experience Eevee doesn't have nearly as impressive a speedup when run in this manner. Not sure if it's because xvfb doesn't offer the best performance, but after I tested for a while I decided to simply stick to Cycles when running in a headless environment. Eevee was faster, but an image that took maybe 5 seconds to render when running Eevee on my actual computer took like 10 times longer running as a container, whereas Cycles was maybe 3 times longer.

So, for me at least, my result was that:

Eevee = 5 seconds per frame * 10 times slowdown = 50 seconds per frame using xvfb

Cycles = 30 seconds per frame * 3 times slowdown = 1 minute 30 seconds per frame, doesn't require xvfb

So again, for me Eevee was still faster, and rendering roughly 30% faster is still nice, but I so vastly prefer the results from Cycles that it didn't feel worth the added hassle just to get a worse result faster. When Eevee was vastly superior in performance I could live with a less appealing result, but headless Eevee led me to prefer the idea of running multiple Cycles renders simultaneously on multiple servers then merging the results.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.