Zigでレイトレーシングをしてみる

Zig
コンピュータグラフィックス
Published

June 29, 2023

はじめに

Rustの場合と同様に、Zigの勉強を兼ねて,こちらを参考にレイトレーシングを写経してみました. 単純に写経するだけでは面白く無いので、comptimeでレイトレーシング処理を実行することにしました。

メモ

  • 一度にそれなりに綺麗な絵を出そうとするとメモリが足りない
  • 出力画像を複数回に分けてレンダリングすることでメモリ不足を解決
  • comptimeを使用するとかなり自然にコンパイル時計算が可能

一括レンダリング

画像全体を一括でレンダリングした結果です。開発環境(メモリ64GB)では幅128、高さ64、ピクセルあたりのレイの数2というのが限界でした。

行単位レンダリング

画像を1行単位でレンダリングした結果です。指定したn行目を出力するプログラムの出力結果を複数個統合することで最終出力画像を作成します。 以下の画像は幅300、高さ200、ピクセルあたりのレイの数32でレンダリングしました。

参考

[1]
Shirley, P. 2020. Ray tracing in one weekend.