I am trying to write an ice shader in Unity that looks good and at least semi-realistic.

If the following shot (found on Google) was CG, what would its shader include? (the foreground cave). I might be wrong but it looks like it even has a different lighting model than the default diffuse.

enter image description here

  • \$\begingroup\$ Here's a tutorial for DirectX 11 using HLSL and C++. Maybe you can glean the principles. Also, where did you see that the image was CG? It's reported as real. \$\endgroup\$
    – House
    Mar 26, 2012 at 23:50
  • \$\begingroup\$ I didn't say it was. I said "if" it was. and Thanks! I'll check it out \$\endgroup\$
    – Daniel
    Mar 26, 2012 at 23:58
  • 9
    \$\begingroup\$ That phenomenon is called subsurface scattering. It's caused because light penetrates the surface of the material and is scattered through the medium of the material itself. It's why, for example, human ears look red when backlit. Here is a blog post explaining someone's attempt to recreate an ice effect with it. \$\endgroup\$
    – user14497
    Mar 27, 2012 at 0:16
  • \$\begingroup\$ Ah, sorry I missed the "if". \$\endgroup\$
    – House
    Mar 27, 2012 at 0:20
  • \$\begingroup\$ @Byte56, No problem \$\endgroup\$
    – Daniel
    Mar 27, 2012 at 0:50

2 Answers 2


Ice is translucent so I believe the single most important thing you have to simulate in your shader to get realistic results would be subsurface scattering or SSS for short. SSS basically describes how rays of light penetrate the surface of translucent objects and scatter underneath it, being reflected multiple times in an irregular fashion, before finally exiting through a different location.

Here's a picture that I think demonstrates the effect nicely:

enter image description here

From the picture in your question we can also see that ice is quite reflective, so you'll probably also want to combine it with some sort of environment mapping for reflections, and also tone up the specularity in order to reinforce the highlights.

You can also try other things such as adding a bit of refraction, overlaying some sort of noise texture to add a bit of variation, or even some sort of bump mapping or displacement mapping for very small and subtle details.


Some other resources that I found while writing the answer:

  • \$\begingroup\$ You might also want to look into Ambient Occlusion (en.wikipedia.org/wiki/Ambient_occlusion) to simulate the darkening in the crags for that is usually pretty hard to get right using just shadows. \$\endgroup\$
    – Koarl
    Mar 28, 2012 at 7:10

One of my students did this a few years ago (using renderman ) but lots of background in the thesis http://nccastaff.bournemouth.ac.uk/jmacey/MastersProjects/MSc09/Salas/index.html


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .