手続きは以下。
色の選択(白 [炎の最も熱い部分] → 黄色 → 赤 → 黒 [最も冷たい部分] の範囲)に乱流関数を使っています。Y 座標を0.5倍にして、炎を垂直方向に引き伸ばしている点にご注目ください。また、同じ乱流関数を材質の密度の決定に使っています。これで最も熱い部分(最も明るい部分)はほぼ不透明になります。
乱流関数は Y の減少グラフ関数で乗算され、炎は上の方では黒くなって消えていきます。さらに極座標変換で Y 軸からの距離を計算し、密度はその減少グラフ関数でかけ算されます。これで火は端の方に行くと、滑らかに消えていきます。
透明色はとても暗いグレーにします(色相=0、彩度=0、強度=0.05)。この設定で、火はほとんど(完全にではなく)不透明になります。一方プロパティウインドウ内の「影を作る」オプションは OFF にして、火が光を吸収するのではなく、発するのみにします。
石皿ももちろん手続きテクスチャです。これは単に乱流関数をグラデーション色彩関数につないでいます。
この手続きの真ん中にあるのは網目モジュールです(網目の間隔は0.2)。その出力を0.03と比較して、材質の密度を決定します。網目の交点の距離内にある点には1を、ほかの点には0を与えます。網目モジュールの Y 入力が0に設定されている場合を除き、小さな球が集まってできた網目を生成するはずです。これで球は無限に長い棒のように延ばされます。そして Y が0.5より大きいとき、密度を0で乗算したある高さでその棒を切り落とします。
ゆらぎモジュールは座標をランダムにかき乱し、完全に真っ直ぐな棒ではなくランダムにうねった毛皮にします。さらに、加算モジュールにご注目ください。網目モジュールの X 入力を X+Y にしています。これで毛皮全体が斜めになり、動物の毛皮特有の状態になります。
透明色は黒色に見えますが、完全にそうではありません。実際、赤・緑・青の要素はそれぞれ0.000001です。微々たる違いに思えますが、実はとても重要です。もし色要素が完全に0なら、毛皮の色は単一かつ完全に不透明になってしまいます。ほんの少しの透明度を加えると、ほとんどが細い毛になりますが、全体的には不透明になってしまいます。そこで毛の中に、反射光をもとにした薄い陰影を考慮します。
反射光といえば、偏りが0.5になっているところにご着目ください。この設定をプラスの値にすると、光の大部分は後ろの方向(光が来る逆の向き)に散乱します。このため、光が視点の背後から当たっているとき、毛が明るく光ります。またこの毛皮が光源と視点の間にあるときは暗くなります。つまり、ほとんど不透明で反射性のある、毛皮らしい見映えとなります。
プロパティウインドウのきざみ幅は0.02に設定しました。この小さな値は、分解能が許す細部の仕上げで必要になります(それぞれの毛の直径はたった0.03です)。