課題10:屈折処理

個々の物体に屈折率 Kn を与えて, 視線が物体に入射する前の屈折率と Kn の比が 1 でなく,かつ透明度 Kt が 0 でないものは, 向こう側が屈折して見えるようにしてください. 何もない部分の屈折率は 1 とします. Kn は,構造体 Material の要素に n を追加し, この構造体の変数のそれぞれの要素に格納するものとします.

struct Material {
  float a[3];  /* 環境光に対する反射係数 Ka */
  float d[3];  /* 物体表面の拡散反射係数 Kd */
  float s[3];  /* 物体表面の鏡面反射係数 Ks */
  float e;     /* ハイライトの広がり */
  float r;     /* 映り込みの反射率 */
  float t;     /* 透明度 */
  float n;     /* 屈折率 */
};

struct Material red = {
  { 0.5, 0.1, 0.1 },
  { 0.5, 0.1, 0.1 },
  { 0.4, 0.4, 0.4 },
  40.0,
  1.0,
  0.5,
  1.5,
};

struct Material green = {
  { 0.1, 0.5, 0.1 },
  { 0.1, 0.5, 0.1 },
  { 0.4, 0.4, 0.4 },
  40.0,
  1.0,
  0.8,
  1.5,
};

struct Material blue = {
  { 0.1, 0.1, 0.5 },
  { 0.1, 0.1, 0.5 },
  { 0.4, 0.4, 0.4 },
  40.0,
  1.0,
  0.3,
  1.5,
};

どうしても分からなければ…

このとき,映り込みも同時に実現してください.

【次:課題11】