Cycles render – Using the Normal Blue channel for top side effects

Blender 2.8 | Cycles Render


The shading normal‘s Z component can be easily used as a ready-to-use procedural mask for ‘covering effects’ like dust, snow, and if baked, also as a base for particle effects like debris and vegetation.

This simple shading flow example the shading normal‘s Z component, that represents how much the surface is facing upwards is separated , mixed (multiplied) with a noise textured and than fed into a ColorRamp Converter node for fine tuning the resulting mask:


This is the full shading flow of the snow effect in the image above:



Complex Fresnel texture for Cycles

Blender 2.79 | Cycles Renderer

The most realistic way to create real world metal shaders is to use Complex Fresnel reflection.
Cycles has a general implementation of a Complex Fresnel reflection in its Principled shader (when Metallic is set to 1.0), but this implementation doesn’t allow using real world physical numeric Complex IOR values in order to accurately render physical metals.

You can use a Complex IOR OSL shader such as this one from Chaos Group,
But there are some limitations with it:
1) It isn’t supported in GPU rendering.
2) For some reason I don’t know I couldn’t get it to work with Cycles..

Seeing these limitations I decided to develop a Complex Fresnel/IOR texture for Cycles that will work on GPU, and your welcome to download it here on my studio’s website:

The blend file itself contains a text with some Complex IOR preset values for metals,
And you can get more physical IOR data from

Enjoy! 🙂



  1. Fresnel Reflections
  2. Metallic shading in V-Ray Next
  3. Create rich metal in UE4 
  4. Customizable Photo-realistic Car-paint shader for Cycles


Cycles – Nested Refractive Volumes

Blender 2.79 | Cycles Renderer

When it comes to rendering nested refractive volumes, like a glass containing a beverage, the way to set it up in Cycles is common to many modern ray-tracers.
The touching bodies of refractive material like glass and liquid must overlap each other slightly so that rays being traced “meet” the right surface without having surfaces touching and causing “Z fighting” artifacts.


When the render includes volumetric shading, like Volume Absorption (sometimes referred to as “fog”), the meshes must be set-up in a certain way for Cycles to interpret the volumes properly.

Intersecting volumes like a beverage glass and liquid must be separate objects to be rendered correctly. When joined into one mesh the renderer doesn’t treat the different volumes separately even though they have different shaders.
And the result is that the volume (depth) of the inner volume is calculated as just the depth on the intersection (the overlap) of the volumes.
In this example the wine can’t be rendered correctly when the glass and liquid meshes are joined.
The wine liquid doesn’t get it’s deep color because the renderer “thinks” it’s very thin.


When the meshes are separated the renderer interprets the wines volume correctly and the Volume Absorption shader produces the right color:


Setting up cavities within a volume like air bubbles, is similar to many other modern ray-tracers. You just have to create inner meshes that have flipped normals facing inwards, so air bubbles within the wine don’t need to have “air” material, they have the same wine shader, but have their faces flipped.

Note that in this case, it’s the other way around from the previous example.
If the bubble meshes are separate from the liquid mesh the renderer doesn’t interpret them as holes in the liquid volume, and produces an incorrect result:


When the bubble meshes are joined to the liquid mesh, the volume is interpreted correctly:


In short:
For these refractive volumetric effects to be rendered correctly in Cycles,
Surfaces of the same material volume must be joined to one mesh, and separated from meshes belonging to different material volumes.
* This may sound trivial, but it’s not. there are rendering systems in which only the surface shader determines volume interpretation and that has advantages like the convenience to aninate bubbles as separate objects from the liquid itself or the ability to join a glass bottle with the liquid into one mesh model.

Cycles Tangent node & Anisotropic reflection

Blender 2.79

The Cycles Tangent node defines a Tangent-Space for a mesh by either using one of the object’s local axes or by using an available UV layout.

This can be useful when designing an Anisotropic reflection shader like in the case of brushed, machined or lathed metals.

In the first example the Tangent node is set to ‘Radial’ Direction mode, in which a object axis is chosen as the radial axis of the Anisotropic direction.
In the second example the Tangent node is set to ‘UV map’ Direction mode, in which a UV map is chosen as the Anisotropic direction.

In order to create a special Anisotropic direction you would usually not create a deformed UV layout, but a normal one, and connect a grey-scale texture to the Rotation input of the shader to define changes in the Anisotropic direction on the surface.



Cycles Light (Shadow) Sampling

Blender 2.79

By default, in Path Tracing Integrator Mode, Cycles traces one ray randomly between all lights (per each camera – AA sample).
So if some lights in the scene are more important than others this will cause inefficient light sampling.
* Especially if there are a few important lights and many unimportant ones.

Light sampling can be set per light by switching the Integrator Mode to Branched Path Tracing, making sure Sample All Direct Lights is checked, and the setting the number of samples per light in the light parameters.
* The option to set the number of samples at the light parameters is only available in Branched Path Tracing Mode.


In the example below there are 3 lights.
The light on the right has 64 a samples per AA sample, while the 2 other lights have just 1 sample.


More on Cycles sampling:

Animating the sample settings in Cycles

Blender 2.79

A quick Cycles rendering tip:

There are situations in which we need to render an animation with changing lighting complexity, and as a result, parts of the animation need more samples than others to be effectively rendered.
For example when the camera starts it’s movement on the outside in an exterior scene, and moves into an interior space like house or a cave, or a vehicle, in many cases, the exterior part of the animation can be rendered with much less samples than the interior part.

In such cases, rendering the whole animation with the higher sample settings will demand unneeded render time in the simpler parts of the animation.

One possible solution would be to simply render the animation in two separated render jobs with different sampling settings, one for the less demanding part and another for the more complex part and than append the two parts in an editing / compositing software. but that requires more work on the shot, more management etc.

A simple solution is to animate the sample settings in Cycles.
Make tests at different times along the animation to determine how many samples are needed at each part, and key-frame the settings accordingly.


Cycles True Displacement (experimental)

Blender 2.79

These are the steps to activate Cycles Render new experimental MTD feature (Micro Triangle Displacement)

Cycles Render settings:
Set ‘Feature Set’ to Experimental.


Apply a Subdivision Surface modifier and set it to Adaptive mode.
* Adaptive Mode is only available if the modifier has no other modifiers below it.

Set the ‘Dicing Scale’ attribute in pixels to set the displacement accuracy
* Lower numbers will result in greater details and more memory usage


Material Cycles settings:
Set Displacement to ‘True’ or ‘Both’.
* Setting it to Both will automatically use the same height map texture data to drive surface normals (bump) and create a consistent effect

Displacement set to 'True'
Displacement set to ‘True’
Displacement set to 'Both'
Displacement set to ‘Both’

Cycles material node:
Connect a texture to the Displacement input.

White color will displaced to a height of 0.1 units (10cm) by default, manipulate the texture data using math nodes to achieved desired height and offset.


Cycles Geometry settings:
For more accuracy reduce the Subdivision pixel rates And increase the maximum subdivisions.




  1. There is currently conflict between Adaptive Subdivision and Tangent Space Normal Maps that renders objects completely black.
    A solution that is proposed at various discussions is to simply use Object Space mode in the Normal Map node.
    I’m not sure how good is this workaround for non flat surfaces..
  2. When using a procedural fractal texture as a Displacement map, Shaders that are dependent on surface angle may significantly change their appearance in different rendering resolutions because the texture provides more and more detail for the displacement and that changes the nature of the geometry.
  3. The base mesh for the Displacement should be well Subdivided prior to the adaptive Subdivision in order to avoid polygon edges appearing.