The Software Renderer and the OpenGL renderer both have their strengths. Sometimes you can even combine them both.
This tutorial started with a simple question: Can I get soft shadows from the OpenGL renderer? The Manual is clear: No. The OpenGL renderer ignores transparency in the alpha channel when computing shadows. This is often annoying. For example, if you place green screen footage onto a 3D image plane, you only get a rectangular shadow from the image plane, ignoring the key.
The software renderer does it right, but it cannot calculate depth of field. That’s the strength of the OpenGL renderer. Of course, you can create depth of field as a 2D effect, but the most accurate version comes from 3D. It seems you have to choose: Shadow or Depth of Field – Software or OpenGL.
You can use both. In the tutorial, we extract the shadow from the software renderer and then project it back into 3D. Thereby we get a new 3D scene which has the shadows baked into the textures. Then we can render this scene with its accurate shadows through the OpenGL renderer.
Here is a summary of the basic steps – watch the video for all the details:
- Get a shadow pass from the software renderer: Take the difference from a render pass with shadow and one pass without.
- Create a greyscale image where everything is white, except the shadows.
- Project this image as a texture back into the scene.
- Catch the projection-texture and multiply it onto the original texture via a ReplaceMaterial node.
- Render the new scene from the ReplaceMaterial node.