3
$\begingroup$

Is there a way to render things in eevee using the CPU or is it just a GPU render engine?

$\endgroup$
7
$\begingroup$

Blender EEVEE uses OpenGL for all the rendering, so NO, no CPU rendering is supported at all.

Base knowledge

The way the CPU and GPU run commands (instructions) is different, CPU is for more general tasks with higher frequency and shorter latency; GPU is for parallel computation like graphic pipe-line. So they don't really understand the same instructions, OpenGL uses mostly GPU instructions that CPU is bad at it. CPUs (x86) can only simulate the instructions instead of directly supporting them.

Example

Imagine that CPU is a secretary or housekeeper, GPU is a group of workers. You told the secretary to render your scene, so the secretary gathers those object information and convert it to a blue print (OpenGL). Then those workers do the rendering job based on the blue print (instructions) and their tools (GPU hardware).

So your question is basically telling an office secretary build a house by hand, with no tools.

That's why the development Wiki sais it would be very inefficient to run on pure CPU structure. Maybe there might be some strange guys trying to force the secretary to build things by hand, who knows?

Addition

So will we ever be able to use CPU on EEVEE?

No we can't, EEVEE stand for Extra Easy Virtual Environment Engine using the power of OpenGL to achieve something, and the structure is stable right now, it is almost impossible and meaningless to make it compatible with CPU instructions. If there must be a CPU version, it might not be called EEVEE but something else like Cycles v2, and that thing will be hugely different from EEVEE for sure.

$\endgroup$
5
$\begingroup$

The Blender EEVEE render engine uses OpenGL for all the rendering, so YES, rendering on the CPU should be completely doable, as long as a viable CPU-based OpenGL implementation is also installed and enabled.

In particular, Blender lists system requirements of only "OpenGL 3.3", which is officially supported by both softpipe and LLVMpipe.


Base Knowledge

OpenGL is just a standard interface that programmers can use to perform operations that are commonly related to computer graphics. What happens when a program actually runs that code is completely up to the system it's running on.

In most cases, a program that runs OpenGL code will have its processing redirected by the OS to the GPU, because the GPU is specifically designed to be more efficient than the CPU at running the kinds of operations that OpenGL is used for.

However, there is nothing fundamentally different about the mathematics that the CPU is capable of doing and that the GPU is capable of doing, so it is also possible for the OS to simply compute the result of each OpenGL operation entirely on the CPU, without the program ever touching the GPU (or knowing any better).

Analogy

Imagine that the CPU is a secretary, and the GPU is a group of workers. Usually, when a blueprint (OpenGL call) comes in, the secretary passes it along to the workers to do the heavy lifting (rendering).

However, there's nothing that's actually stopping the secretary from rolling up their sleeves and helping with the work themselves— so long as they have the proper training (OpenGL software implementation). They might not be as skilled or in as great shape, so they'll be slower, but they can still do it.

Caveats

There are only some limited situations where this would come in handy:

  1. You do not have access to a GPU, for either a lack of compatible hardware or software.

  2. You have a surplus of CPU power, and you want to squeeze out as much rendering speed as possible from what you have without caring about the efficiency and electricity usage.

Basically, if you have the choice, using the GPU will almost certainly be both faster and more efficient than the CPU. In order to match the speed of a \$50, 30 watt integrated GPU, you would probably need a \$400, 150 watt server-grade CPU. But in cases where GPU-rendering simply isn't an option, setting up a CPU pipeline should be fully possible too.

Addendum

Wikipedia has some information on the software OpenGL capabilites on most Linux desktop and workstation computers:

The following software projects all purport to offer some degrees of support for CPU-only software rendering of OpenGL (and potentially other graphic APIs):

Phoronix.com has also done a performance benchmark of two of the above options:

(Note that the above tests were done on an 80-thread server-grade CPU— and it still struggled to reach a playable framerate in simple video games.)

These guys seem to have successfully run Eevee using openswr:

$\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.