今日のお絵描き

何だこのずれ方。

近づくとますますずれるな。距離に依存するバグか。

念のため、距離に依存するのか仰角に依存するのか切り分けるために角度はそのままで10倍離れて見る。

む、さらに倍。

距離じゃあないな、これは。仰角が急になると照り返しが実態より外側に出てしまうバグだな。

角度をもっと急にしてみる

仰角が急になるほど、照明が縮んでいるw
いや、下から見上げたときに大きくなるはずなのに小さくなっていたのでうすうすおかしいなとは思っていたんだ(そのとき直せよ


わあ、カメラ行列が正規化されていない。仰角が大きくなるほど行列が縮小されている。ちゃんと正規化したつもりだったのに

あい、わかった

  camera_dir /= mag(camera_dir);
  camera_left = cross_prod(camera_dir, camera_up); 
  camera_up = -cross_prod(camera_dir, camera_left); 

正解はこうだな。

  camera_dir /= mag(camera_dir);
  camera_left = cross_prod(camera_dir, camera_up); 
  camera_left /= mag(camera_left);
  camera_up = -cross_prod(camera_dir, camera_left); 

なんで3軸のうち1本だけ正規化して3軸全部正規化したつもりになっているんだ自分w

結果。あれ、そうなるの。それぞれ逆方向にずれてたのか。まあそうか。同じ行列を使っていてレイトレーシングと射影との片方だけずれるのはおかしいもんな。光の向きが逆だから逆向きにずれているということかな。

拡大してみる。おー、ムーディだ。

照明が何百個もあるレンダリングのことを大域照明(Global Illumination)って言うんだと思ってたら違った。大域照明は拡散or鏡面反射面での反射光がさらに他のものを照らせるもののことを言うらしい。僕のはDI(Direct Illumination)と言うらしい。