「レイトレーシング」の版間の差分

ページの作成:「'''レイトレーシング'''(英語:raytracing)とは、3DCGを描画するアルゴリズムのひとつである。 == 概要 == 現実の世界で…」
 
1行目: 1行目:
'''レイトレーシング'''([[英語]]:raytracing)とは、[[3DCG]]を描画する[[アルゴリズム]]のひとつである。
'''レイトレーシング'''([[英語]]:raytracing)とは、[[3DCG]]を描画する[[アルゴリズム]]のひとつである。


== 概要 ==
==概要==
現実の世界では太陽などの光源から光が出て、その光が物体に当たることで反射を繰り返し、最終的に人間の目に入った場合に物体が見える。
現実の世界では太陽などの光源から光が出て、その光が物体に当たることで反射を繰り返し、最終的に人間の目に入った場合に物体が見える。


17行目: 17行目:


*計算量が桁違いに多い
*計算量が桁違いに多い
*影にノイズが出やすい


「レイトレーシングは重い」というイメージがあるが、[[レイキャスティング]]に反射などの処理を加えても1回あたりの処理はそんなに重たいものではない。ただレイトレーシングでは画面の解像度と同じだけレイを飛ばさなければならない。たとえば画面の[[解像度]]が[[フルHD]](1920x1080)であれば約200万[[画素]]([[ピクセル]])もの[[レイ]]を投げることになる。これで秒間60フレームを出そうと思ったら1秒間に1億2000万回もレイを飛ばさなければならない(計算しなければならない)。さすがに1回の計算量が少なくてもこれだけあると重くなる。[[C言語]]で単純にforループを空回しただけでも重たいね。
「レイトレーシングは重い」というイメージがあるが、[[レイキャスティング]]に反射などの処理を加えても1回あたりの処理はそんなに重たいものではない。ただレイトレーシングでは画面の解像度と同じだけレイを飛ばさなければならない。たとえば画面の[[解像度]]が[[フルHD]](1920x1080)であれば約200万[[画素]]([[ピクセル]])もの[[レイ]]を投げることになる。これで秒間60フレームを出そうと思ったら1秒間に1億2000万回もレイを飛ばさなければならない(計算しなければならない)。さすがに1回の計算量が少なくてもこれだけあると重くなる。[[C言語]]で単純にforループを空回しただけでも重たいね。