
最近、3DCGのプログラミングやゲーム開発をしていると、「レイマーチング」と「レイトレーシング」っていう言葉をあちこちで見かけるよね。
どちらも名前に「レイ(光線)」がついているし、CGを描画するための技術だっていうのはなんとなく分かると思う。
でも、「名前が似すぎていて、結局どっちがどう違うの?」って混乱しちゃっている人もけっこう多いんじゃないかな。
この記事では、そんな疑問を持っているあなたに向けて、この2つの手法の決定的な違いや、それぞれの仕組み、どんな表現が得意なのかを分かりやすく解説していくよ。
この記事を最後まで読めば、二つの違いがスッキリと理解できて、自分の作りたい作品やシーンに合わせて最適な手法を選べるようになるはずだ。
それじゃあ、さっそくCGの奥深い世界を一緒に覗いてみよう!
決定的な違いは「形の表現」と「交差点の探し方」にあるんだ

まずは一番気になっている結論から言っちゃうね。
実は、レイマーチングとレイトレーシングの違いのポイントは、「何を使って形を表現し、どうやって光の交差点を求めるか」という部分にあるんだよ。
広い意味で言うと、レイマーチングは「レイトレーシングの一種」とされているんだ。
どちらもカメラから画面のピクセルに向かって「レイ(光線)」を飛ばして、オブジェクトにぶつかった場所の色を計算する、という大枠は同じなんだよね。
でも、光がぶつかる場所(交差点)を見つけるアプローチが全く違うんだ。
レイトレーシングは、三角形や球といった図形に対して、数式を使って一発で交差する場所を割り出す手法なんだよ。
それに対してレイマーチングは、距離関数という数式を使って、光を少しずつ「行進(マーチ)」させながら、ぶつかる場所を探り当てる手法なんだね。
この「一発で計算する」か「一歩ずつ進んで探す」かという違いが、それぞれの得意なことや計算の重さに大きく関わってくるんだ。
じゃあ、なぜそんな違いが生まれるのか、もっと詳しく見ていこう。
仕組みから紐解く2つのアプローチの違い

ここからは、なぜ先ほどのような結論になるのか、それぞれの仕組みをもっと深く掘り下げていくよ。
ちょっとだけ専門用語も出てくるけれど、イメージしやすいたとえ話を使って説明するから安心してね。
レイトレーシングは「数式で一発解答」を出す優等生
レイトレーシング(Ray Tracing)は、カメラから飛ばした光線が、シーンの中にあるオブジェクトとどこで交差するかを計算する描画手法だよ。
最大の特徴は、対象となる形が「三角形(ポリゴン)」や「平面」「球」といった、数学的にハッキリ定義できる図形であることなんだ。
たとえば、空間に一直線に伸びる光線と、そこにある三角形があったとするよね。
このとき、数学の公式を使うと「光線が三角形を突き抜ける座標」を、連立方程式を解くように一発の計算でバシッと弾き出すことができるんだよ。
これを「解析解」を求める、なんて言ったりもするね。
交差点が正確にわかれば、そこからさらに光を反射させたり、ガラスのように屈折させたり、影の計算(シャドウレイ)を追加で飛ばしたりすることができるんだ。
これを繰り返すことで、現実の世界にものすごく近い、フォトリアルな映像を作り出すことができるんだよ。
レイマーチングは「少しずつ探り歩く」探検家
一方のレイマーチング(Ray Marching)は、交差点を一発で計算するのをあきらめて、「ちょっとずつ進んで確かめよう」というアプローチをとるんだ。
「マーチング」って言葉は「行進する」って意味だよね。
まさにその言葉の通り、レイを少しずつ前進させながらオブジェクトを探していくんだよ。
多くの場合、レイマーチングではポリゴンではなく、「距離関数(SDF:Signed Distance Field)」という数式を使って形を表現するんだ。
SDFっていうのは、空間のどこにいても「ここから一番近い表面までは、あとどれくらいの距離があるか」を教えてくれる便利な数式なんだよ。
具体的なアルゴリズムのイメージはこんな感じだね。
- 1. カメラからレイ(光線)を飛ばす
- 2. 今いる場所から「一番近い表面までの距離」をSDFで計算する
- 3. その距離の分だけ、レイを前へ進める(マーチする)
- 4. 何度も繰り返し、距離が「ほぼゼロ(ある閾値以下)」になったら「命中(ヒット)!」とみなして色を塗る
- 5. 逆に、一定回数進んでも何も当たらなければ「ハズレ」として計算を打ち切る
この最短距離だけ進めるやり方を「スフィアトレーシング」と呼んだりもするんだ。
この手法のすごいところは、ポリゴンを一切使わなくても、ピクセル単位で正確でなめらかなシルエットを描き出せることなんだよね。
数式だけで形を作るから、驚くほど複雑な形も表現できるのが大きな強みなんだ。
計算コストと画質の悩ましいトレードオフ
手法が違えば、もちろん計算の重さ(コスト)の掛かり方も変わってくるよ。
ここはゲームを作る上で、けっこう重要なポイントなんだ。
レイトレーシングの場合は、光の反射や屈折の回数を増やせば増やすほど、計算量が爆発的に増えてしまうんだ。
でも、逆に言えばサンプル数を増やせば画質はどんどん上がっていくし、最近はGPUのハードウェアレイトレーシングが普及しているから、リアルタイムでもかなり現実的な手法になってきているんだよ。
それに対してレイマーチングは、1ピクセルあたりにレイを何歩進めるか(ステップ数)が直接的な計算コストになるんだ。
これ、ちょっと面白い話なんだけど、レイマーチングでは「オブジェクトが密集している場所」よりも、「どこまで進んでも何にも当たらない空っぽの空間」を計算する方が重くなりやすいんだよね。
だって、何にも当たらないことを確認するために、何度も何度もレイを進めなきゃいけないからね。
だから、ステップ数の打ち切り方を工夫したり、距離関数の設計を上手くやらないと、処理が激重になったり、画面がノイズだらけになったりするから、チューニングの腕が試されるところなんだ。
それぞれの得意分野がわかる3つの具体例

仕組みの違いがわかったところで、「じゃあ実際どんな表現に使えるの?」って気になるよね。
それぞれの得意分野がはっきり分かれているから、具体的な例を3つ紹介していくよ。
具体例1:ゲームや映画の超リアルな世界(レイトレーシング)
一つ目の例は、最近のハイエンドゲームやCG映画で見られるような、現実と見間違えるほどのフォトリアルな世界だよ。
ここは文句なしでレイトレーシングの独壇場だね。
たとえば、雨上がりの水たまりにネオンの光が反射している街並みや、ガラスのコップを通した光がテーブルに落ちるような表現。
こういったものは、光の物理的な性質をシミュレーションするレイトレーシングだからこそ出せる美しさなんだ。
それに、レイトレーシングは三角形などのポリゴンメッシュとの相性がバツグンに良いんだよ。
だから、BlenderやMayaといったツールで作った既存の3Dモデル(アセット)をそのまま高画質に描画するのには、やっぱりレイトレーシングが一番適しているんだね。
具体例2:無限に続くフラクタルアート(レイマーチング)
二つ目の例は、数学的な美しさが爆発する「フラクタルアート」や「デモシーン」だよ。
ここで大活躍するのがレイマーチングなんだ。
ポリゴンでモデリングしようとすると、頂点数が何千万、何億となってパソコンがフリーズしてしまうような、無限に続く複雑な幾何学模様。
メタボールのようにドロドロと滑らかに融合し合う不思議な物体。
サインカーブの数式でうねうねと動く地形など。
こういったものは、SDF(距離関数)を使った数式モデリングとレイマーチングの組み合わせだからこそ、リアルタイムでスムーズに描画できるんだよ。
「Shadertoy」という有名なWebサイトでは、WebGLを使ってブラウザ上で動くレイマーチングの作品がたくさん公開されているんだ。
驚くことに、超複雑な3Dシーンがたった1つのフラグメントシェーダのコード(1ファイル)だけで完結していたりするんだよね。
ポリゴンのデータがいらないからこそできる、まさにプログラマーのための魔法みたいな手法だね。
具体例3:ふわふわ漂う雲や霧の表現(レイマーチング)
三つ目の例は、ゲームや映像の中でふわふわと漂う「雲」や「霧」「煙」といった表現だよ。
専門用語では「ボリュームレンダリング」と呼ばれる分野だね。
ここでもレイマーチングの考え方がすごく役立つんだ。
雲や霧って、ハッキリとした「表面」がないよね。
だからレイトレーシングのように「ここで交差しました!」って一発で計算することができないんだ。
そこで、レイマーチングのように光線を少しずつ進めながら、「この空間にはどれくらいの濃さの煙があるか」を順番に足し合わせていくアプローチがとられるんだよ。
最近のゲーム開発では、シーン全体をレイマーチングで作ることは少ないけれど、この「雲や霧」のエフェクト部分だけだったり、ポストエフェクトの特殊効果として限定的にレイマーチングを組み込むという実例が増えているとされているんだ。
適材適所で得意な手法を使い分けるのが、現代の3DCGのトレンドなんだね。
用途に合わせて最適な描画手法を選ぼう

ここまで読んでくれてありがとう!
レイマーチングとレイトレーシングの違いについて、仕組みや得意な表現などを解説してきたけれど、いかがだったかな?
最後にもう一度、この記事の重要なポイントをまとめておくね。
- レイトレーシングは、ポリゴンなどの図形に対して交差点を「数式で一発計算」する手法。
- 反射や影の計算が得意で、既存の3Dモデルを使った「フォトリアル」な表現に向いている。
- レイマーチングは、距離関数(SDF)を使い、交差点を「少しずつ前進して探す」手法。
- 数式で形を作るため、ポリゴンでは不可能な「複雑なフラクタル」や「煙・雲」などの表現に特化している。
- 広い意味では、レイマーチングもレイトレーシング(光線を飛ばして計算する枠組み)の一種である。
こうやって整理してみると、どちらが優れているという話ではなくて、「何を描きたいか」によって最強の道具が変わるっていうことがよくわかるよね。
現実世界を作りたいならレイトレーシング、数式の不思議な世界やモヤモヤした空間を作りたいならレイマーチング、といった具合に使い分けてみてほしいな。
「どっちも面白そうだけど、自分には難しそう…」なんて思っているかもしれないね。
でも、まずは難しく考えずに触ってみるのが一番の上達の近道だよ。
レイトレーシングなら、最近のゲームエンジン(Unreal EngineやUnityなど)の設定をポチッとオンにするだけで、その圧倒的な美しさを体験できるしね。
レイマーチングに興味が出たら、ぜひ「Shadertoy」というサイトを覗いてみてほしいな。
世界中の天才たちが書いたコードを見ながら、数値をちょっと書き換えるだけでも「あっ、形が変わった!」ってすごく感動できるはずだよ。
プログラミングと数学が織りなすアートの世界へ、ぜひ一歩踏み出してみてね!応援しているよ!