Using Cycles volume materials
In all the recipes we have seen so far, Cycles used the Surface input socket and (very rarely) the Displacement input socket for the bump effects of the Material Output node to make the renderings. Assigning colors or textures to the surface of an object clearly means that interaction between a ray of light and an object happens only at the surface level of the object, and until this surface doesn't show what should be inside, that's OK. The surface attribute is enough for a realistic rendering.
Things get more complex when there is a need to show what's inside an object, for example, water inside a glass container, smoke and clouds in a thick atmosphere, and so on.
Usually, these are effects that require the use of ...