3.2 – Eevee – Shading

Let’s start analyzing the “Shading” workspace designed to facilitate the creation of materials to be applied to renderable objects (surfaces and volumes). This layout is divided into six main areas: to the right of the 3D View we have the usual Outliner and Properties pair, while on the left you can see the File Browser for searching for textures, and the Image Editor to view them. I remind you that you can maximize or minimize any window with the combination CTRL-Spacebar. Below the 3D View is located the Shader Editor, or the powerful node system used by Blender to define materials in Eevee and Cycles. In the image on the right you will find a project that at first glance might appear discreetly complex, but which in reality is not at all, as all surfaces adopt only the Principled Shader with some PBR textures (which we will discuss later). So let’s start with something even more elementary. Delete the default cube and lamp, and insert only the Monkey primitive to which we will apply the subdivide surface (three subdivisions) and shade-smooth modifiers. At this point we switch to the Shading workspace and first focus on the 3D View, which by default will use the Material Preview display, the third of the three icons at the top right.

This preview offers an HDRI (High Dynamic Range Imaging) lighting ready for use. We will delve into the topic of HDRI in paragraph 4.5, for now it is sufficient for you to know that it is a particular 360° photographic image that, if set as a spherical background, is able to give the scene a completely realistic and natural lighting. We will see the hdri background in the material preview only in relation to the World Opacity bar and the Blur bar, while the effects of this background on the surfaces of the objects will always be visible (shading, reflections, refractions, etc). We will not see this lighting in the rendering (F12) either, as its function is solely to facilitate modeling and material creation in real time, allowing us to immediately verify the main peculiarities of Eevee. Clicking on the preview image (a reflective sphere) shows the complete list of all available HDRI backgrounds.

The Monkey primitive we inserted into the scene has no default material assigned, in fact you will find the node editor empty. Click the button in the header of the node editor and you will see two different nodes connected to each other by a line that connects the green sockets . These nodes are called Principled BSDF and Material Output. The first is the key element of the PBR system used by Eevee and Cycles. Before its introduction, elementary shaders were often combined arbitrarily and without a general criterion that could guarantee a coherent and realistic simulation of the sought material. In 2012, Disney published the guidelines for the Principled Shader, whose purpose is the dynamic creation of any type of material. It simplifies the lives of many graphics, as well as all beginners, and makes materials easily portable from one engine to another.

Before taking a closer look at the operation of the nodes, let’s have some fun experimenting with this Shader and the real-time of Eevee. By clicking on Base Color (by default a very light gray), you can choose which color to assign to the material using the color wheel or RGB values. By increasing the Specular bar to the maximum and zeroing the Roughness parameter, you will get a glossy material that is capable of reflecting the surrounding environment.

Specular reflection mainly uses shades ranging from Base Color to white, in order to provide a fairly evident but not well-defined reflected image. Specular Tint increases the influence of the base color on the reflection. Roughness simulates the presence of micro-surface roughness, which makes the material progressively less shiny. With a Roughness of 0.25, we will get a plastic-like appearance.

To obtain more defined reflections, we must use a metallic material. We set a white Base Color and then increase the Metallic bar to the maximum with Roughness equal to zero (Specular in this case becomes irrelevant).

The reflection is now perfectly defined, but it will be strongly influenced by the Base Color if it is different from white. With these simple shaders we are already able to observe the effects of some advanced functions of Eevee. Let’s go to the Render context of the properties, icon and activate Ambient Occlusion.

Ambient occlusion is a shading determined by the greater number of bounces of diffuse/reflected rays (which rapidly lose energy) in the areas of contact between different surfaces or within occluded volumes. Although the Eevee model is simplified compared to the native processing of Cycles ray bounces, it works quite well. On the Suzanne primitive, you can immediately observe this shading in the eye area.

The main parameters of AO are few and simple:

  • the distance where it will have an effect
  • the Factor bar for the hardness of this shading (the default maximum value is 1, but you can enter higher values)
  • precision.

Calculating reflections in Eevee is not native like in Ray Tracing (or modern Path Tracing). If we try to place two models with reflective materials next to each other, they will not appear in the reflected image on the other (in practice we will only see the HDRI background and any light sources reflected). Let’s return to the metal material used earlier and from the Render properties context, activate the Screen Space Reflection panel.

The reflection now no longer involves only the background, but extends to the surrounding surfaces, including those belonging to the same model. In the example image above, you can see the reflection of the ears on the temples of the monkey.

We will analyze later some methods to improve the quality of reflections in real-time through the Light Probe objects that you can find in the Add menu of the 3D View. The simple notions just learned are already more than enough to start experimenting with the real-time shading of Eevee. We will return to speak of the Principled Shader after having deepened the operation of the nodes in the next paragraph.

In Blender, color selection is done using the color wheel, which in the case of nodes appears by clicking on the typical uniform color rectangular area (e.g. base color). However, as you have probably already noticed, the numeric values of the RGB components do not vary from 0 to 255 like in many other graphics software, but are expressed by floating-point numbers, that is, with decimal figures between 0.00 and 1.00.

The reason is to be found in Blender’s color management, which by default is sRGB (24bit), the most suitable for the natural use of the software (especially for those who are studying it), that is, display on devices such as your monitor. However, Blender is not a digital painting software where if we want to see a white color pixel on the monitor, we simply have to set the RGB color triplet to 255. The pixel of any render is the result of a rasterization process that involves the simulation of the physical behavior of light when it hits surfaces (or gaseous volumes). The algorithms that deal with this simulation obviously deal with floating-point numbers (single or double precision). Moreover, there are sometimes the need to resort to a wider management of color data than the classic truecolor. You can, for example, save the render in TIFF format with 16 bits of color depth per single channel (48 bits in total). Therefore, if you want to set an RGB color of which you know the value with the classic triplet of integers between 0 and 255, you can convert it to hexadecimal (using graphic software or an online tool) and set it directly in the color wheel square by clicking Hex:

HEX #8B008B
RGB (139,0,139)

Once the color has been chosen within the wheel, you can vary its brightness using the gray scale column on the right. Alternatively, you can select the color from an image displayed in any Blender window (for example, loaded in the UV/Image Editor) using the dropper icon at the bottom right of the color wheel panel. The discussion on color management does not end here (in reality, it is such a complex subject that it would deserve a whole volume dedicated to it) later we will talk about the Color Management panel located in the Render context of the properties.

In this panel, we can see that not only the sRGB color space is set, but also a conversion method called Filmic, which, if used well, will increase the quality of photorealistic renders. For the moment, I recommend setting the Standard method in the View Transform field and None in the Look field.

We close the paragraph with an additional clarification: the shader editor is, as we will see later, the window where we can define any type of material through a connected set of nodes; but this combination will also appear schematically within the Material context of the properties, icon . In the cases examined so far, where only the principled shader has been used, we could have worked directly here, but using textures and/or combinations of different shaders, the use of this panel would quickly become inconvenient. The presence of this context of properties is more a legacy of the past, when Blender did not have a node editor and mainly used the Blender Internal rendering engine. However, it still has some usefulness, especially when it is necessary to act only on some numerical parameter or in the management of multiple materials applied to the same object (multiple materials). There is also the Preview panel where we can immediately verify the rendering of our material on different meshes, including the Blender shader ball (the one visible in the image). Later on, we will also use this context for the settings of the Setting panel.

Next paragraph
Previous paragraph
Back to Index

Wishing you an enjoyable and productive study with Blender, I would like to remind you that you can support this project in two ways: by making a small donation through PayPal or by purchasing the professionally formatted and optimized for tablet viewing PDF version on Lulu.com  

>Purchase the ebook (PDF) on Lulu.com securely using PayPal and prepaid cards<