Realistic Glass Shader

by Colin Behrens in Materials, Shaders, Textures

Did you ever try to create some realistic looking glass renders in Blender?
If you compare the results you get with the default glass shader with reference images, you will probably notice that it is not possible to get completely photorealistic results this way. 

Why? Because the Cycles Render Engine does not use bidirectional rendering. This means it is not possible to get physically accurate caustics or dispersion.

But! Here is the solution:

With our Realistic Glass Shader you have full control over all parameters you could possibly need for creating awesome looking renders you would previously have used Blender's built-in glass shader for, e.g. diamonds, water or glass. Please note that the caustics are still faked because otherwise it is not possible with the Cycles Renderer, but who cares as long as the results are good?

You can turn off the reflective and refractive caustics under light paths in your render settings to reduce fireflies, we do not need this feature because we fake the caustics.

Main Features:

  • Dispersion
    • Separates the light into its primary colors
  • Caustic Amount
    • Customize the amount of caustics you want for your scene
  • Caustic Pattern & Noise
    • For more variation and details in your caustics adjust these values
  • Caustic Tint
    • Color your caustics independent of the glass's color.
    • If you leave it white (#FFFFFF) the caustics will automatically be generated
  • Caustics Dispersion Saturation
    • Have you ever seen these rainbow like lights on the ground when the sun is shining through your windows? With this slider you can chose how many colors are refracted to the ground
  • Volume Scatter Color
    • Choose which color should be scattered as the light passes through the glass
  • Volume Scatter Anisotropy
    • The anisotropy affects the direction in which the light is scattered
  • Volume Absorbtion
    • Choose which color should be absorbed as the light passes through the glass.
  • Raylength Absorbtion
    • A non volumetric absorbtion method for faster rendering but compared to volume absorbtion the caustic colors are less detailed.
  • Cracks
    • This feature is still being tested and developed; works for some objects.
  • Render Speed
    • You can choose if you either want to go for quality or render speed by using different outputs
  • Caustics Only
    • If you want only the caustics to be rendered select this ouput

The shader is composed of many nodes as you can see below; still it computes very fast!

If you buy the shader you will get a .blend file with a test scene, in which the shader is included.

You can install the shader by doing the following steps:

  1. Click on file
  2. Click on append
  3. Locate where you saved the .blend file
  4. Click on Materials
  5. Select Realistic Glass
  6. Click on Append from Library

You should now have the Shader in your scene.

The Shader was developed by Colin Behrens with the help of Gleb Alexandrov, if you have any questions feel free to message me.



I ungrouped all node groupes that were used in the Realistic Glass Shader so that you do not have any other group than the realistic glass Shader in your scene when you append from the file.

Realistic Glass - by Colin Behrens & Gleb Alexandrov

Short Explaination of the shader:


    The caustics are faked but who cares as long as the result looks good

            --> You can turn off the real caustics under render settings --> Light Paths.

                This will save some render time and prevent fireflies.


The different Inputs for the Node Group are explained below:



        You can change the color and it will even effect the caustics and the dispersion


        The roughness effects the roughness of the glass and the caustic brightness

    IOR (Index Of Refraction):

        How strong the light is scattered as it passes the glass

    Dispersion Amount:

        You can have more or less dispersion.

        0 dispersion equals the standard glass but with caustics (to speed up rendering)

        The higher the value the higher the wider the spectrum.

    Caustic Amount:

        Higher Value --> More caustics

    Caustic Pattern Details:

        You can get different Caustic Patterns by changing this value.

    Pattern Noise Scale:

        For some more variations you can substract a Noise Texture from your caustics.

        This input determines the scale of the Noise Texture.

    Noise Strength:

        How much the Noise Texture influences the caustics.

        0 = no influence / 1 = 100% subtracted from the caustics.

    Noise Pattern Shift:

        For some other new Noise patterns change this value (like a seed value).

    Caustic Tint:

        Leave this input on blank white for automatic caustic colors.

        Every other color will overwrite the automatically generated caustics and you can choose the caustic color manually.

    Caustics Dispersion Saturation:

        To increase the colors in the caustics increase the value, 0 value means just black and white caustics.

    Caustic Contrast:

        Increases the contrast of the caustics. Higher values for more defined Caustics

    Volume Scatter Color:

        Choose the color which should be scattered.

    Volume Scatter Density:

        0 = no effect. Increase the value to have light scattered.

    Volume Scatter Anisotropy:

        The direction in which the light is scattered.

    Volume Absorbtion Color:

        Choose the color which should be absorbed.

    Volume Absorbtion Strength:

        0 = no effect. The higher the value the more light will be absorbed.

    Raylength Absorbtion Color:

        For non volumetric absorbtion use this feature. It will increase the render speed compared to volumetrics.

        Choose the color for the absorbtion here.

    Raylength Absorbtion Strength:

        0 = no effect. The higher the value the more light will be absorbed.

    Raylength Absorbtion Falloff:

        This value determines how much the thickness effects the absorbtion.

    Cracks Scale:

        This is a beta feature. Works depending on your object and sometimes causes weird Dispersion.

        Increasing this value will largen your Cracks.

    Cracks Strength:

        This slider lets you change the opacity of your cracks.


        Input normal maps here.



    Priority: Quality:

        This output uses a more accurate setup to render dispersion but you will need more samples to get a clean render.

    Priority: Render Speed:

        This output uses a technique by Gleb Alexandrov where dispersion is achieved by bending normals.

        You will need less samples but the results somtimes are not that realistics as with the quality output.

    Caustics only:

        For a faster caustics viewport to adjust Settings select the "Caustics only" output instead of the Shader output


        Make sure you plugged this ouput into the right Material Output, otherwise the volume features will not work.


        This output is important if you use the Cracks feature, otherwise they will look flat.



This Shader is by Colin Behrens & Gleb Alexandrov

Gleb helped a lot to find bugs, improving the perfomance and adding new features.

Check out his awesome YouTube Channel to learn more about Blender, Game Development and so on!

No FAQ's found for this product.

Item Rating

This item has an average rating of 5 from 1 ratings by the community.

  • Finn Bear 2 months ago

    In a side by side comparison with the default Glass BSDF, this shader proves to be worth it. Complicated models show larger differences than simple, flat ones. The only improvement that I can see is to reduce the extraneous node groups that get appended (NodeGroup.001, etc.).

    • Colin Behrens 2 months ago

      Thats a great hint, I will fix this the next days thank you. I created them just to keep and overview while working on the shader. Greetings Colin

Purchase this item to leave a review!