Crystals and Minerals

I’ve made nodegroups for 2 categories of materials:

  • “Gems and Crystals” (ruby,amethyst,spinel,topaz…)
  • “Opaque Minerals” (azurite,marble,pyrite,rhodonite…)
  • Their combination makes other material like porcelain and so on.
    I’ve tried to add absorption,dispersion,birefringence and dichroism using a physical approach and true values when possible.In other cases not.
    Anyway i’ve kept the 3 channels (red,gree,blue) separated,as much as possible.
    The effect of birefringence and dichroism are more visible with transparent materials.
    Gems and Crystals are based on the nodegroup “Transparent Translucent Material” which can produce glass,diamonds,transparent plastic when used individually.
    Opaque Minerals are based on the nodegroup “Opaque Material” which can produce opaque plastic and so on when used individually.
    So there are 4 nodegroups to create materials:
  • “Transparent Translucent Material”
  • “Opaque Material”
  • “Gems and Crystals”
  • “Opaque Minerals”
    Metals and Alloys are present in my previous posts.
    These are some images.
    Light sources are spheres,emissive planes or cubes or spots.
    Roughness is zero by default for opaque nodes ,but it can be obviously modified.
    Roughness is a non zero value (i’ve decided 0.00032) for transparent /Gems and Crystals,because materials tend to be dark. Thanks to @moony which discovered this.


Many parameters are shared,others affect to opaque minerals or gems and crystals only.
This is the list of parameters with a brief explanation.

  • Index of refraction N: generally,for Gems/Crystals/Opaque Minerals i’ve found a single IOR. To approximate The 3 iors (red green blue) i’ve used dispersion index.
    For the base component nodegroups Transparent Translucent Material and Opaque Material ,the iors can be found on internet (

  • Extinction factor red/green/blue: For Gems and Crystals and their base component nodegroup Transparent Translucent Material,you must insert the value multiplied by 1 million (this to avoid a possible loss of precision),then this will be corrected internally,calculating the absorption value (4PIK/(lambda*1000000)).
    For Opaque Minerals and their base component nodegroup Opaque Material,the value is between 0 and 1.
    A method to simplify could be the following.
    you could make nodegroups with texture nodes/rampnodes and other node to create the real colors you want for the mineral/crystal ,with all values in the range 0 and 1.
    Then multiply them by a certain value (1000,500000 or what you want with a maximum value of 1 million) if the material is transparent or translucent.A high value means more absorption and darker color and less transparecy,a low value means lighter color and more transparency.
    (0,0,0) = total transparency, (1000000,1000000,1000000) = total opacity.
    If the material is opaque,use a math node to make ( 1 - color_value) (subtraction) to find extinction factor.

  • Index of dispersion: interval between Red refraction index and Violet refraction index.

  • Birefringence: in a birefringent material, a light ray is split in 2 rays ,an ordinary and an extraordinary ray and these rays refract at different index of refractions (double refraction)
    The value of birefringence is the difference between the two refractive indices.
    Rotating a transparent birefringent crystal,you can see 2 different refracted images at the same time.

  • Optical axis: is the axis (a direction) along which, the index of refraction doesn’t change.It is used (with birefringence and incoming ray angle) to calculate the second refraction index.
    It is vector (0,0,1) by default

  • AngleX/Y/Z: the rotation angles (radians) of the optical axis.
    They are automatically calculated linking the 3 values to the object rotations using drivers in the graph editor (see blender manuals)

  • Dichroism: a dichroic material (it must be birefringent too) crossed by a ligth ray,shows 2 distinct colors.
    It is used to determinate exctinction coefficients in case of birefringence.
    This value depends on the angle of view and the normal or a user map.Value between 0 and 1.
    The color changes if you rotate the object.

  • Use default dichroism: between 0 and 1. If value is 0 ,the colors are decided by a user map. If value is 1, the colors are decided by default, the first color is chosen for points facing the viewer,the second color for the rest.

  • User dichroism map: a user map (texture node or other) to decide the colors.Between 0 and 1.
    Value 1 means color 1,value 0 means color 2,the other value a mix.
    If dichroism is 0,the color is obviously color 1.

  • Default Dichroism Colors Weight: a value used if default dichroism is > 0.
    For values near 0 ,the area of the first color increases and the area of the second color decreases.
    For values near 1 ,the opposite.

  • Dichroism gamma: this value modifies the effect of dichroism. (1 = no change)

  • Translucency factor red/green/blue : translucency value for rgb (between 0 and 1)

  • Translucency map: it determines the translucency areas. 0 no translucency,1 full translucency,between 0 and 1 partial translucency.

  • Internal reflection strength: used to modify transparent color intensity for total internal reflection.
    (0 = white,1 = based on extinction factors).

  • Internal reflection ray depth:number of internal bounces. It is used to determinate the part of the Total Internal Reflection Area,which will be affected by the transparent color.This part becomes smaller for high values (5 or more).
    With values greater than Internal reflection ray depth,that part is black (many internal bounces),because shaders are based on glossy and refraction shaders,which don’t include Total Internal Reflection.

  • Glossy gamma: this value modifies the effect of glossy. High values mean dark and not diffused glossiness,low values mean strong and diffused glossiness (more mirror effect).

  • Subsurface scattering: it decides how much of the light is scattered,between 0 and 1.
    Value 0 means no scattering,1 means total scattering, betweeen 0 and 1 means a mix.

  • Use default subsurface scattering: betweeen 0 and 1.
    Value 1 means default subsurface scattering.Intensity values after surface reflection are used.
    Value 0 means that subsurface scattering factors are used.

  • Subsurface scattering strength: its intensity. It’s the scale input parameter of subsurface scattering node.

  • Subsurface Scattering factor red/green/blue: user subsurface scattering values for rgb,the color to be scattered.

  • Metallicity: metallic appearance of the surface.

  • Roughness: roughness of surface.

  • Normal: normal of the surface. It can be modified with texture and bump node.

The list of materials in the blend file is the following:

  • glass
  • green and red glass
  • glass with 2 colors decided by a mask
  • ice
  • diamond
  • red plastic
  • amethyst
  • calcite
  • ruby
  • topaz
  • emerald
  • zircon
  • sapphire
  • spinel
  • azurite blue metallic car paint
  • amazonite
  • azurite
  • hematite
  • marble
  • pearl
  • rhodonite
  • pyrite
  • wolframite
  • porcelain and porcelain with a gold decoration
    Note that for glass with 2 colors and porcelain with decoration you mustdo a uv mapping.
    Gold and aluminium are metal material made months ago in my previous post.
    The link for blend file is:

Attachments (3.95 MB)

nice work and thanks for sharing

a few things

would it be possible to add names of mat under each of the object in scene
would be faster to find specific gems/stones

also can you add the link to other thread for metals

I look a the fool’s gold = pyrite
and I don’t remember it being so matte and pale
mind you may also be what light setup Is used too !

happy cl

Thanks @RickyBlender
There are already the names of materials near the objects.
To read clearly the names, images must be clicked and zoomed.
Images seems to be small but they have large dimensions.
Links for metals:

For pyrite,i’ve seen some picture in internet. Sometimes the color is deeper,sometimes not.
I’ve used 2 emissive spheres as light for pyrite ,to illuminate all visible parts.
Good night !

sorry let me re phrase it
not talking about the image
talking in the file you have named the materials
but not the object itself so cannot see name in viewport

I was thinking may be add some text name under the object to ID it and select quickly which gem you want
that would be faster and easier to select one gem if possible

I will try to find some real pyrite gem later on and we will talk again may be LOL

happy cl

Hi, i’ve added the name of material under every sphere in the file,so with render preview mode you’ll be able to identify the material.
I hope this is what you mean.
The new link is

Attachments (3.81 MB)

1 Like