CPU実験: レイトレ画像デバッグ
CPU実験 Advent Calendar 2015 - Adventarの12日目の記事です.
レイトレの出力でデバッグをしているIS16erの参考になれば幸いです.
min-caml/min-rt/min-rt.ml
- -inline 0
- -inline 1
- -inline 5
関数の返り値の格納場所を間違えていると, インライン展開によってそのバグが消えることがあります.
raytracer/min-rt.ml
画像を貼るので, バグの箇所を当ててください. 答えは反転すると見れます.
難易度は,
☆☆☆: 簡単
★☆☆: 普通
★★☆: 難しい
★★★: エスパー
の4段階あります.
- 正解画像(☆☆☆)
[正解] 全部正しい
[解説] 正解だから
- 問1(★☆☆)
[正解] floor が, round になっている
[解説] 床(floor)がバグっているから
- 問2(★★☆)
[正解] sqrt が, 3/4乗になっている
[解説] タイヤが透けてるときは sqrt を疑ってみましょう. 15er でもこれと同じような画像を出力している班がありました
- 問3(☆☆☆)
[正解] floor が, identity になっている
[解説] 問1と同じです.
- 問4(★★★)
[正解] finv が, 1.04 * finv になっている
[解説] 地割れが起きている時は、finv の誤差が大きすぎるからかもしれません
- 問5(★☆☆)
[正解] sin, cos の分岐が間違っている
[解説] 画像が回転しているときは, sin, cos が回転している可能性があります