実装内容:

CGの内容:

点光源の変更・追加・移動

  1. const int PL_NUM を作成したい点光源の個数に変更する
  2. main 関数内に PLS[i] = vec3(座標) のようにして点光源を作成

物体の変更・追加・移動:

  1. const int OBJ_NUM を作成したいオブジェクトの個数に変更する
  2. main 関数内に objects[i] = (物体) のようにして物体を作成(物体は以下のものを指定可能)
  3. 物体の中から外に出る際の外側の物質の屈折率変更
  4.   if (first_hit.p[2] >= -0.0001) {
        hit_refr = refr_air;
      } else if (length(first_hit.p - vec3(6,2,-2)) < 1.0 && length(first_hit.p[2] + 2.0) < 0.0001) {
        hit_refr = refr_diamond;
      } else {
        hit_refr = refr_water;
      }

カメラ設定の変更:

  1. ピンホールとフィルムの距離:float l を変更
  2. フィルムの横幅(縦幅は解像度に合わせて自動で指定):float film_w を変更
  3. カメラ(ピンホール)位置:vec3 c_from を変更
  4. 現在は動くカメラの vec3 c_from = vec3(10,0,sin(time*0.1)*4.0); に設定されているが,以下のものはコメントアウトを変更するだけで設定可能
  5. カメラの向いている先:vec3 c_to を変更
  6. カメラのUPベクトル:vec3 c_up を変更
  7. カメラの位置に応じた屈折率:shade 関数内の以下の部分を変更
  8.   // カメラがある位置に応じて屈折率を変更
      float refr;
      if (c_from[2] > 0.0) {
        refr = refr_air;
      } else if (c_from[2] < -3.5) {
        refr = refr_glass;
      } else {
        refr = refr_water;
      }

その他設定の変更:

  1. 点光源の放射束:const float phi を変更
  2. 反射回数:const int REFL_NUM を変更
  3. 反射能:const float Kd を変更
  4. 正反射率:const float Ks を変更
  5. 背景色:const vec3 background_color を変更