うに

技術

CPU実験: レイトレ画像デバッグ

CPU実験 Advent Calendar 2015 - Adventarの12日目の記事です.

レイトレの出力でデバッグをしているIS16erの参考になれば幸いです.

min-caml/min-rt/min-rt.ml

  • -inline 0

f:id:Lepton:20151213000501p:plain

  • -inline 1

f:id:Lepton:20151213000540p:plain

  • -inline 5

f:id:Lepton:20151213000616p:plain

関数の返り値の格納場所を間違えていると, インライン展開によってそのバグが消えることがあります.


raytracer/min-rt.ml

画像を貼るので, バグの箇所を当ててください. 答えは反転すると見れます.
難易度は,
☆☆☆: 簡単
★☆☆: 普通
★★☆: 難しい
★★★: エスパー
の4段階あります.

  • 正解画像(☆☆☆)

f:id:Lepton:20151213001336p:plain

[正解] 全部正しい
[解説] 正解だから

  • 問1(★☆☆)

f:id:Lepton:20151213002634p:plain

[正解] floor が, round になっている
[解説] 床(floor)がバグっているから

  • 問2(★★☆)

f:id:Lepton:20151213003220p:plain

[正解] sqrt が, 3/4乗になっている
[解説] タイヤが透けてるときは sqrt を疑ってみましょう. 15er でもこれと同じような画像を出力している班がありました

  • 問3(☆☆☆)

f:id:Lepton:20151213004005p:plain

[正解] floor が, identity になっている
[解説] 問1と同じです.

  • 問4(★★★)

f:id:Lepton:20151213005028p:plain

[正解] finv が, 1.04 * finv になっている
[解説] 地割れが起きている時は、finv の誤差が大きすぎるからかもしれません

  • 問5(★☆☆)

f:id:Lepton:20151213010622p:plain

[正解] sin, cos の分岐が間違っている
[解説] 画像が回転しているときは, sin, cos が回転している可能性があります

min-caml/min-rt/min-rt.ml おまけ

f:id:Lepton:20151213011425p:plain
~/.vimrc のバグでした

CygwinでPython/Tkinterが使えないときの簡単な対処

CygwinPython/Tkinterを使おうとすると、そのままでは使えない。調べるとそのままで使えるように書いてあるが、8.4の場合となっている。
Cygwinでは、tcl/Tkが8.5からはX11に依存するようになったので、setup.exeからインストールして、X windowを起動してからPython/Tkinterを使えば良い。