「符号付き距離場を描画する再帰的アルゴリズム」

2026/03/11 23:10

「符号付き距離場を描画する再帰的アルゴリズム」

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

著者は、再帰的な分割と探索を用いたレイマーチングアルゴリズムと線形補間シェーディングを組み合わせることで、Signed Distance Field(SDF)レンダリングをリアルタイムで十分高速にできることを示しています。手法では、ビュー遠近フラストムを四角形に分割し、レイを一括してマーチングしつつオブジェクトに近づいたら再帰的に処理します。これによりピクセルあたりのレイ数が3〜4倍減少し、GPUとCPU両方でフレームレートが3倍向上します。小さなパッチ(≤10 px)の四隅すべてが整列した法線を持つオブジェクト内にある場合、そのパッチ全体を一度にシェーディングし、平坦表面ではピクセルあたり1サンプル未満に抑えることができます。SDFは距離関数で形状を定義し、合成可能であり、従来は球追跡レイマーチング(sphere-tracing)を用いていましたが、ラスタリゼーションやレイトレーシングと比べて計算コストが高いです。2016年に著者はSDFコードのコンパイラ風最適化を検討し、完全なコンパイラが必要であることを指摘しました。バウンディングボリュームはオブジェクト評価を減らすのに役立ちますが、コストを根本的に排除するわけではありません。新しい技術により、CPUのみで動作する3Dゲーム(MacBook Air M1 で約50 FPS)も実現でき、「cone marching」と呼ばれるGPUフレンドリーなマルチパスバリアントを開発し、同様の目標を共有します。これによりハイブリッド手法が可能になり、リアルタイムエンジンでのGPU負荷を低減できる道が開かれます。

本文

Signed Distance Fields(SDFs)、別名インプリシットサーフェスは、3Dオブジェクトを定義する数学的手法です。ポリゴンとラスタライズが命令型プログラミングに相当するとすれば、SDF はグラフィックスの関数型パラダイムと言えるでしょう。このパラダイムでは、オブジェクトは「その表面までの符号付き距離」を計算する関数で定義されます:距離はオブジェクトの外側が正、表面でゼロ、内側が負になります。

SDF の魅力は、簡単に組み合わせられる点です。ある形状を別の形状から引き抜いたり、変形・ねじれさせたり、空間自体を曲げることも可能です。ポリゴンでは困難だった操作が極めて容易になります。このパラダイムにより、3D シーンはコードだけで定義でき、比較的短いプログラムでも「無限の手続き都市」のようなものを生成できます。まるで未来型グラフィックス技術のようです。FORTRAN のプログラマたちが Lisp コードを初めて見たときに抱いた驚嘆感覚に似ています。

SDF を広く普及させ、手軽に扱えるようにしたのは Inigo Quilez への大いなる功績があります。この技術はデモシーンでも広く使われるようになり、Mercury と呼ばれるチームは「64KB のデモ」を制作しました。音楽・テクスチャ・ロジックすべてが自己完結型実行ファイルに収まっており、全てが手続き的に生成されていました。そのデモは当時としては驚異的なグラフィックスを SDF を駆使して作り出しました。

SDF のレンダリングの標準アルゴリズムはレイマーチング(またはスフィアトレーシング)です。理解しやすく実装も簡単で、ポリゴンのラスタライズよりはるかに直感的です。画像平面への投影やクリッピングといった複雑な処理を必要とせず、SDF を直接サンプリングするだけです。ただし、その代償として計算コストが高くなる点があります。1 画素あたりに SDF のサンプル数が多くなる場合(特に複雑な SDF の場合)があるためです。レイマーチングは通常、レイトレーシングよりも遅いですが、SDF の魅力的な性質を考えると、より高速なレンダリング手法を探求する価値があります。

2016 年に私は部分評価(コンパイラ技術の一種)を用いて SDF レンダリングを最適化しようと試みました。区間演算が役立つ場合もありますが、SDF 用の完全なコンパイラを構築するのは手間がかかります。よりシンプルなテクニックとして、バウンディングボリュームでビュー frustum に intersect するオブジェクトだけを絞り込み、ピクセルあたりのサンプリング数を減らす方法があります。しかし SDF は依然として高価です。

SDF を使ったリアルタイム 3D グラフィックスは、現代 GPU が複数回関数評価を1画素に対して実行できるようになってから実用化されました。CPU 上では、すべてのコードが一つの言語で書けるという利点があります。GPU と CPU の API 間でデータをやり取りする必要がありません。

最近私は CPU でのレンダリングに再帰的な分割&征服アルゴリズムを考案しました。ビュー frustum を小さな四角形へ再帰的に subdivide します。最初はフルアンブレラをカバーする単一レイから始め、可能な限りすべてのレイを同時に進めます。オブジェクトに近づくと、そのパッチを四分割し再帰的に処理します。GitHub の Rust 実装は、ピクセルあたりのレイ数を 3〜4 倍削減し、単純なシーンでフレームレートを 3 倍以上向上させることを示しています。混雑したシーンやフラクタルでは効果が薄れますが、十分に空間が広く表面が平坦な場合には明らかなメリットがあります。

さらに、このアルゴリズムを線形補間で拡張し、10×10 ピクセルまでのパッチ全体をシェーディングします。四隅がすべてオブジェクト内部にあり法線が整列している場合、そのパッチは平坦な表面上にあるとヒューリスティックに推測でき、ピクセルあたり 1 サンプル未満で済みます。この近似手法はフラットシェーディングされたオブジェクトに適しています。

他者が同様のアイデアを持っているかどうか気になり、オンライン検索を行いましたが結果は得られませんでした。X(旧 Twitter)で概念を共有し、Inigo Quilez に連絡しました。当初は再帰分割が GPU には向かないと考えていましたが、複数のシェーダーパスで似た効果を実現できることに気づきました。まず 8×8 ピクセルパッチごとにレイマーチング・コーン(cone marching)を行い、その開始距離を第二パスへ渡すという手法です。

既に GPU 上で多重パス技術が適用されていることは確認済みで、一般的には「Cone Marching」と呼ばれています。以下のようなオンライン記事があります:

  • 「5 分以内に Cone Marching をマスター」
  • 「Mandelbox フラクタルを Cone Marching で高速化」
  • 「Three.js における Cone Marching」
  • 「DD2018: Sebastian Aaltonen – GPU ベースの粘土シミュレーションと Ray Tracing 技術(Claybook)」

これらの技術を利用すれば、再帰アルゴリズムで単純な SDF オブジェクトを 50 FPS 程度までレンダリングでき、補間シェーディングを併用すると MacBook Air M1 の CPU コア単体で 100 FPS を達成できます。コードはまだ最適化の余地が大きいですが、SIMD やマルチコア CPU でさらに磨けば、720p(おそらく 1080p)で「CPU だけで実装された一人称シューティングゲーム」を実現する可能性があります。GPU 上では、SDF グラフィックスを用いたゲーム開発はすでに十分に実行可能で、多数の効率化テクニックが存在します。

© 2011–2026 Maxime Chevalier‑Boisvert. All rights reserved.

同じ日のほかのニュース

一覧に戻る →

2026/03/15 7:10

**アゲルス・リナックス ― 時代を超えて使えるソフトウェア** このソフトウェアは、年齢や経験に関係なく「時代を越えた使いやすさ」と柔軟性を重視するユーザー向けに設計されています。

## Japanese Translation: --- ## Summary Ageless Linux は意図的にカリフォルニア州の AB 1043 年齢確認法を拒否し、監視への抗議として Debian ベースのディストリビューションを位置付けつつ、オペレーティングシステムプロバイダーであり続けます。プロジェクトは標準の `/etc/os-release` ファイルを Bash スクリプト経由で「Ageless Linux」に置き換え、通常モードでも **“flagrant” モード** でも年齢確認 API を提供しません。「flagrant」 モードでは `/etc/ageless/REFUSAL` ファイルをインストールし、§ 1798.501(a)(1)–(a)(2) に対する完全かつ意図的な非準拠を明示的に宣言し、執行措置を促します。 ウェブサイトには子供、学校、図書館、および USB ドライブや Raspberry Pi Pico デバイスを通じて OS を配布するための **詳細なガイダンス** が含まれており、これらはすべて AB 1043 の下でオペレーティングシステムプロバイダー活動に該当します。また、ディストリビューションが年齢データを収集しないため「影響を受ける子供」を特定できず、影響を受ける子供ごとの罰金を算出できないことも説明しています。 Ageless Linux は暗号的に不可能であることとプライバシー懸念を理由に年齢確認を決して実装しないと主張し、Apple、Google、Microsoft などの大手テック企業が最小限のコストで AB 1043 を満たすケースとは対照的です。プロジェクトの FAQ は法的問題、コンプライアンス状況、および州最高検事への罰金可能性に関する一般的な質問に対応しています。 最後に Ageless Linux は裁判記録を取得するために、Raspberry Pi または USB ドライブを子供へ配布したことによる **$7,500 の罰金** をカリフォルニア州最高検事に請求し、AB 1043 が小規模オープンソースプロジェクトにどのように適用されるかを明確にすることを目的としています。サイトには法的問い合わせや報道関係者向けの連絡先情報(John McCardle、BDFL、FFwF Robotics LLC)が掲載されています。 ---

2026/03/15 6:27

**Show HN:Han – Rustで書かれた韓国語プログラミング言語**

## Japanese Translation: ## 要約 ハンは静的型付けでコンパイルされるプログラミング言語で、キーワードはすべて韓国語で記述されています(例:**함수**、**만약**、**반복**、**변수**)。コンパイラはRustで実装され、LLVM IRを生成し、clangがそれをネイティブバイナリに変換します。ツリー走査型インタープリタ(`hgl interpret`)により、すぐに実行して迅速な試験が可能です。 ハンの型システムは静的で、5つのプリミティブ型を持ちます—정수 (int)、실수 (float)、문자열 (string)、불 (bool)、그리고 없음 (void)。また配列・構造体・クロージャ・パターンマッチング・エラーハンドリング・ファイルI/O・フォーマット文字列・モジュール・ジェネリクス、組み込み数学関数もサポートしています。現在、配列と構造体はインタープリタのみで扱われており、コンパイラの完全なサポートは計画中です。 開発者はハンを REPL(`hgl repl`)、LSP サーバー(`hgl lsp`)によるエディター上のホバー/補完、およびさまざまな CLI コマンド:`interpret`、`build`、`run`、`repl` で操作できます。VS Code 統合は `editors/vscode` ディレクトリにあります。インストールには Rust(≥1.70)と clang が必要で、他の外部コンパイラ依存はありません。 現在の制限としては、タプル・列挙型・非同期/並行処理・ネットワーキング・サブプロセス、および配列/構造体の完全なコンパイルサポートが欠如しています。これらのギャップは今後の開発優先事項を示しています。

2026/03/15 8:10

エアバスは無人戦闘機を二機開発中です。

## Japanese Translation: Airbus は、2029 年までにドイツ空軍へ運用可能な無人協調戦闘機(UCCA)を納入する予定であり、これは Kratos Defense & Security Solutions の Valkyrie プラットフォーム上に構築され、Airbus の Multiplatform Autonomous Reconfigurable and Secure (MARS) ミッションシステムと AI‑有効化された MindShare ソフトウェアを備えています。 MARS システムは、人有人機と無人機の全グループを動的および非動的ミッションで統合して調整することができます。 **主要技術仕様:** - 元の UCCA は長さ 9.1 m、翼幅 8.2 m、航続距離 >5,000 km、MTOW 約 3 t、最大高度 45,000 ft。初飛行は 2019 年に実施されました。 - ドイツ版の初飛行は 2026 年に予定されています。 このパートナーシップには、Airbus と Rafael が Eurofighter コマンド機上で Litening 5 Advanced Targeting Pod をアップグレードし、クロスプラットフォーム接続性と戦闘致死率を向上させる作業も含まれます。 Airbus のエグゼクティブ・マーコ・ガンブラッハトは、「信頼できる主権的な戦闘能力を手頃な価格で提供する」ことの重要性を強調し、Kratos のスティーブ・フェンドリーは「ミッション化された Valkyrie は単独でも、チームとしても、人有人機と無人機の協同作戦においても利用可能である」と述べています。 この取引はドイツにタイムリーかつ大量展開が可能なドローンソリューションを提供し、AI 主導型多プラットフォーム戦闘システムへのより広範な転換を示しています。