I’m sure you’ve heard that computers can render graphics in software or with a GPU. What is the difference and which one should I choose? Today we will tackle this question head-on to help you make an informed decision when it comes to your next purchase.
- what is software rendering?
- what is gpu rendering?
- difference between software and GPU renderings
- 1. Speed
- 2. Memory
- 3. Performance
- 4. Flexibility
- 5. Learning curve
- 6. Memory leaks
- 7. Price/Performance ratio
- 8. GPUs vs CPUs for specific tasks
- 9. Workloads
- 10. Memory allocation
- 11. GPUs vs CPUs in Unity
- Advantages and Disadvantages of software rendering
- Advantages of software rendering:
- Disadvantages of software rendering
- Advantages of GPU rendering:
- Disadvantages of GPU rendering:
- software rendering vs gpu rendering: which one is best method:
- How to set up a computer for both types of rendering?
- Tips on getting the best performance from your graphics card:
- Examples of when to use software or GPU renderings:
what is software rendering?
Software rendering is when your CPU takes the 3D geometry data in memory, processes it very often with mathematics to turn triangles into pixels on your screen. The keywords are in-memory and processing. If you were to create a polygon soup (random unordered polygons) and render them, software rendering would take longer than having the GPU do it.
This is not always true though as GPUs have become very, very good at processing lots of triangles! Also, software rendering can do things that hardware does not support or cannot process efficiently, like shadow mapping or SSAO (Screen Space Ambient Occlusion).
to summarize: Software rendering uses your CPU to render 3D graphics.
what is gpu rendering?
GPU rendering is when your computer sends the 3D geometry data to the GPU through OpenGL or DirectX, then the PSU powers your GPU and it takes over from there. The GPU then begins processing all that geometry into pixels on your monitor using its own set of special processors called shaders (more about that later), and it does this super fast.
In the case of DirectX, your computer gets simplified commands from your CPU then sends them to the GPU through a bus interface that has limited bandwidth. In the case of OpenGL, you have a bit more freedom to send any kind of data you want for rendering at any time in any way you want. This is great for flexibility but can bog down your CPU if you don’t know what you are doing.
to summarize: GPU rendering uses the GPU to render 3D graphics.
difference between software and GPU renderings
eg: Mental Ray and V-Ray
It is important to understand the main differences between software rendering (CPU) and GPU rendering, which I discussed in detail at:
GPUs are faster than CPUs at performing calculations (rendering an individual pixel or primitive). However, GPUs are not as flexible as CPUs and you will need to do a lot more tweaking to get the same result as with CPU rendering.
GPU memory is slower than CPU memory but it also has less of it! Furthermore, GPU memory does not work like CPU memory which can be allocated as needed. GPUs have a very small amount of memory (12 GB on high end GPUs) which is divided into banks and only accessible by certain parts of the GPU at any given time! You can think of it like having 128 or 256 different 12GB sticks where you can put one object in each stick, but objects cannot be moved around in the sticks. For example, there may be a stick in which your scene is rendered in, a stick in which you have a shadow in and a stick in which your reflection map resides so when one object moves or gets replaced by another, all objects need to be swapped to other memory banks.
GPUs are faster than CPUs because they can do more in parallel. The downside is that GPUs are limited to certain tasks; you cannot use them for everything like rendering, physics simulation or sound generation (though GPUs do have specific processors for physics and sound).
GPUs are not flexible at all! You cannot render any type of geometry you want but only the primitives that the graphics card supports. You cannot do mesh deformation or nurbs surfaces either. In fact, most operations done by software renderers are not possible with GPU rendering!
5. Learning curve
GPU rendering requires a lot more tweaking and experience before you can get good results out of it! It is very difficult to look at a scene and know exactly how long it will take to render on a specific graphics card without spending hours doing trial and error testing (which is what I did for my article). As with any technology, there are tricks which help achieve better results faster so there is certainly hope though!
6. Memory leaks
I could not find an accurate definition memory leak but GPUs constantly need to render things so they cannot afford to swap large objects around all the time. The problem is that GPUs read data much slower than CPUs so it takes a lot of CPU power to constantly transfer data back and forth between CPU and GPU. This can cause intermittent rendering errors (random triangles not appearing) which are very difficult to find! Worse still, if there is not enough memory for your scene on your graphics card, you will get an out of memory error without any warning.
7. Price/Performance ratio
GPUs vary massively in price but their performance varies depending on the task at hand (rendering, physics simulation or sound generation). For example, the Radeon HD 7970 is currently top dog for both rendering tasks but ranks lower when it comes to physics simulation and sound generation. It is important to note that a graphics card that does not have a fast GPU will perform much lower when it comes to rendering compared to one with a much better GPU.
8. GPUs vs CPUs for specific tasks
GPUs are always faster at performing rendering tasks versus CPUs even when the CPU has more cores or threads! Also, GPUs cannot efficiently utilize all their cores much like PC processors which means only a certain number can be used in parallel. This directly affects how many objects each core can render per second (calculations per second) though this may vary from scene to scene depending on its settings and complexity. You therefore need to carefully balance the number of cores your graphics card has with the size of your scenes to avoid potential bottlenecks.
CPUs on the other hand can be utilized much better and quickly since they have more flexibility than GPUs. This means that any CPU is always faster than a GPU for certain tasks such as physics simulation or sound generation unless of course we are talking about GPUs specifically designed to do these tasks! For example, some graphics cards have powerful dedicated processors which help them achieve very high physics simulation speeds or sound generation capabilities. In fact, CPUs can even leverage their cores to perform many rendering tasks at once which makes them ideal for multiprocessor machines capable of running several processes at different speeds in parallel!
GPUs work best when given a workload that involves large amounts of data transfers back and forth whereas CPUs can handle a mix of very different tasks in parallel. For example, CPUs are great when you need to calculate things like physics or AI (artificial intelligence) but they fall short in areas where data transfers back and forth need to happen frequently such as in rendering. This is because transferring data between the CPU and GPU is expensive so it takes a lot of computing power to move large amounts of data back and forth between them!
On the other hand, GPUs work best when given a workload that involves lots of math operations since this can be done much faster by their shaders compared to CPUs which have more flexibility. However, if there are no optimizations made for your graphics card using its dedicated processors for specific tasks, it will perform poorly despite having tons of cores!
10. Memory allocation
GPUs have much less memory than CPUs so you need to carefully allocate the right amount for your scene depending on its size and complexity. For example, if your scene needs 1GB of memory but your graphics card only has 256MB, it will not be able to handle that task without swapping data back and forth constantly which causes intermittent rendering errors!
However, GPUs are very good at allocating large amounts of memory in parallel which makes them ideal for quick access to huge chunks of information needed by many different processes running simultaneously. They also help greatly reduce the number of parallel processes required to achieve a certain goal since they can offload specific tasks normally handled by CPUs onto their own processors (or rather the shaders).
11. GPUs vs CPUs in Unity
CPUs work best when you need to run several different processes at the same time such as physics, AI, and rendering whereas GPUs can perform several tasks at once but only if they are balanced perfectly. What this means is that you need to use your CPU for things like physics and AI which cannot be done by a GPU no matter how powerful it is.
This tiered system of utilizing both processors efficiently helps achieve very high frame rates especially when there are lots of objects and/or complex scenes involved! For example, if you put your resources on inefficiently using only one processor (e.g., the CPU) with limited parallel processes required, then expect extremely poor performance since it will not be able to handle more than a handful of objects without causing lagging!
Advantages and Disadvantages of software rendering
All in all, though, both types of rendering have their own advantages and disadvantages but it’s clear that modern GPUs are faster.
Advantages of software rendering:
- less power consumption
- more stable frame rate (less likely to stutter)
Disadvantages of software rendering
- slower performance at same resolution compared to GPU rendering
- more complex scenes require lots of CPU processing for the same visual result as GPU rendering would give you with simpler geometry.
Advantages of GPU rendering:
- fast performance
- more complex scenes can be rendered faster than software rendering.
Disadvantages of GPU rendering:
- high power consumption, high heat generation
- no anti-aliasing (except for FXAA which comes with NVIDIA/AMD drivers)
- shadows are aliased (pixelated) without self shadowing technique like shadow mapping
- not enough bandwidth for anything over 60 FPS at 1080p (future FX12 and HBM will change this)
software rendering vs gpu rendering: which one is best method:
So there you have it. The basic gist of software vs GPU rendering. But what about performance? Which one is faster? Let’s compare the two using NVIDIA GTX 770.
GPU rendering at 1920×1080 resolution yields the following performance:
This is not completely accurate as no game runs at 100% GPU usage but it’s a fairly good estimate of average FPS you get. It also shows that even though there are no drops in frame rate, rendering takes longer to complete which means more time per frame.
Software rendering is definitely faster in this case.
However, when you increase resolution to 2560×1440…
This means that with the same hardware at higher resolution, GPU rendering becomes faster! The reason is because there are more pixels per frame which are sent over PCI-E bus thus freeing up bandwidth for other things like improved effects or larger game worlds.
Software rendering doesn’t scale nearly as well which means that in order to get performance increase, you need to upgrade your graphics card. For example, the GTX 770 is not powerful enough to perform like a GTX 780 or R9 290X at 2560×1440 because there are simply too many pixels it needs to render!
So we can see that at higher resolution, GPU rendering becomes faster because it has more bandwidth to work with. This is an evolution of Moore’s Law as GPU performance scales better as resolution increases making them much faster than CPUs as time goes on!
How to set up a computer for both types of rendering?
That is very simple. For software rendering, you’ll need to make sure your CPU is capable of running the game engine efficiently that the game uses. This means that lots of cores are better than high clock speed! If it can run Crysis 3 on Medium-High settings with 50+ FPS at 1080p then it’s definitely good enough for most games especially since you are more interested in visual quality over FPS any day. You can also try lowering resolution or other graphics options if they are too demanding but I doubt you will be able to run most games well with 720p and low settings…
For GPU rendering, you’ll have to see what graphic card would work best with the game engine. Some engines scale way better across different cards whereas some only work well with a certain card due to their architecture. You can also make sure your motherboard and power supply units (PSU) are beefy enough to support lots of graphic cards by looking at reviews online.
That is all you need to know about the differences between software rendering and GPU rendering! I hope this was helpful and feel free to leave comments below if you have anything else that needs to be added or corrected.
Tips on getting the best performance from your graphics card:
- choose the right graphics card for your needs (important for both software and GPU rendering)
- upgrade to faster CPU if games don’t run at close to 100% on normal dual/quad core CPUs
- set up a page file of 16gb or more on your hard drive so that Windows doesn’t need to use swap file which is very slow and can decrease performance by 20% or more!
- monitor CPU/GPU temperature and make sure they stay below 90C for optimal performance. Make sure fans are running properly and you have dust free inside your computer case as well. A little bit of dust can decrease cooling efficiency by as much as 10C! Dust every 2 months with canned air if needed. You can also purchase thermal paste like Artic Silver 5 which helps transfer heat away from components more efficiently!
- clean up your OS by removing unnecessary programs that run in the background, this can easily increase performance by 10% or more especially on older computers.
- overclock your CPU/GPU if you have the necessary hardware and software to do so safely. If you are not sure how then just Google it or ask someone who knows about overclocking 🙂
Examples of when to use software or GPU renderings:
- if you want to render videos and images (takes very long time and requires powerful CPU, especially for large images like 4096 x 4096 pixels or 1440p video)
- if you want to play games at high resolution/settings which require more powerful graphics cards. I would say GTX 770+ is ideal for 2560×1440 but you can get away with less if the game engine supports it! You can find out by checking reviews online or asking in forums 🙂
- if your computer doesn’t support hybrid mode (the ability to switch between software rendering and GPU rendering) then make sure to disable “Optimus” technology of Nvidia cards in Device Manager when using 3D programs. This will force it to use discrete graphic card instead of integrated one and make sure your laptop doesn’t switch to software rendering mode which can reduce performance by 50% or more! If you don’t know how then simply google it.
- if you’re on laptop and want to play games at 1080p (high settings) with 60 FPS then the best option is usually software rendering because that’s what most games use as well. You can also try lowering resolution or other graphical options if they are too demanding for your computer otherwise just stick to software rendering.