今更このようなサイトを発見してしまったのでここも参考にしていこうと思う。
レイトレーシング入門1「光線の基本と反射」 - Qiita
色々な素材を利用できるようにするために、Material Traitを定義してこれを持つ構造体を各素材とする。
このTraitを実装する型はDebugとSyncとSendも実装する?
マルチスレッドでcloneされる要素となるためには必要。
Colorの代わりにMaterial Traitを実装する型のものをメンバにもつ。ここでArcで囲んだポインタにしておかないと、
マルチスレッドでクローンして渡せないと思われる。
senceでは物体に当たったら、その物体の素材に当たる光を渡して、帰ってくる光(この場合拡散光)を再びcolor関数に入れることで色々な物体からの拡散光とalbedo(反射光の比)を要素毎にかけてreturnする。
ついでにγ補正した。
おまけで8スレッドで動かしているとき
Programming Rust: Fast, Safe Systems Development
- 作者: Jim Blandy,Jason Orendorff
- 出版社/メーカー: O'Reilly Media
- 発売日: 2017/11/21
- メディア: Kindle版
- この商品を含むブログを見る
YUUWA バランスボール45cm/55cm/65cm/75cm ヨガボール アンチバースト仕様ポンプ付き! ダイエット エクササイズ 全4カラー (グレー, 75)
- 出版社/メーカー: YUUWA
- メディア: その他
- この商品を含むブログを見る