**拡張頂点ブロック降下法の WebGPU 実装**

2026/04/09 21:01

**拡張頂点ブロック降下法の WebGPU 実装**

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

要約

日本語訳:

文書は、Giles et al.(2025)で概説された剛体およびソフトボディダイナミクスのための拡張頂点ブロック降下法(AVBD)ソルバーを実装した実験的な WebGPU 物理プロトタイプについて記述しています。現在は Chrome のみで動作し、プラグアンドプレイモジュールではなく概念実証として機能します。

各タイムステップでエンジンは LBVH(

GPULBVHBuilder.ts
)を用いて衝突候補を構築し、その後ノーリーフェーズの接触面を生成し、摩擦のウォームスタートに必要な接触ごとの状態を保持します。これらの接触(ジョイントとスプリングを含む)から各ボディの制約リストが
avbdState.ts
で収集されます。ボディは隣接する二つのボディが同じ色を共有しないように貪欲にカラーリングされ、これにより並列一次更新が可能になります。

慣性ターゲットは α/γ スケーリングを使用して計算され、その後 AVBD 反復で各カラーグループ内のすべてのボディの速度が解かれます。各スイープの後、デュアル変数(ラグランジュ乗数)と剛性は増分ラグランジュ/剛性リャップ規則に従って並列に更新され、最終的な速度は更新された状態から再構築されます。

プロトタイプは論文のダブルバッファ位置更新をインプレースカラー解法で置き換えています。オプションのランタイム機能(スリープ処理と診断)は現在

PhysicsEngine.ts
で調整されています。将来的な作業では、より広範なプラットフォームサポート、プラグアンドプレイモジュール、同一カラーのボディ間の衝突解決の改善、およびスリープ/診断機能の拡充が目指されています。

成熟すれば、この技術は高精度で GPU アクセラレーションされた物理演算を直接ウェブブラウザに導入でき、ゲーム開発者、シミュレーションツール、およびリアルタイムダイナミクスをブラウザ環境で必要とするあらゆる業界に利益をもたらす可能性があります。

本文

ライブデモ

webphysics-teaser.mp4

本プロジェクトは、AVBD(Augmented Vertex Block Descent)スタイル(Giles ら, 2025 年)のソルバーを中心にした WebGPU を利用した剛体/柔らかい体物理学の実験的プロトタイプです。
私は高度なウェブグラフィックスをオープンソースで試作することが好きなので、同様のプロジェクトをご覧になりたい場合はぜひ私の活動を応援してください。


セットアップ

本番用ビルド:

注意: まだ即時実行できるモジュールではなく、ブラウザ対応も Chrome のみ(現状)で限定的です。これは初期概念実証にすぎません。


AVBD パイプライン

現在の剛体パイプラインは、AVBD 論文のアルゴリズム 1 の構造を踏襲しています。

  • 衝突検出
  • 色付け
  • 慣性/原始初期化
  • 反復的な色付き原始解法
  • 双対更新
  • 速度の最終化

参照論文: Augmented Vertex Block Descent(Giles 等, 2025)。

現状態 (x^t) からの衝突検出

論文では各タイムステップは、ソルバー反復を開始する前に現在位置から衝突検出を行うと述べています。このコードベースでは

src/physics/PhysicsEngine.ts
のメインサブステップ調整で始まり、広域フェーズ・狭域フェーズへ流れます。

広域フェーズ候補生成

論文のセクション 4 で述べられているように、まず LBVH を構築し走査して候補体対を取得します。
コード:

  • src/physics/gpu/broadPhase.ts
  • src/lvbh/GPULBVHBuilder.ts

狭域フェーズの接触生成とウォームスタート永続化

候補ペアが存在すると、離散的な狭域フェーズで接触を生成し、ウォームスタートや摩擦処理に使用する per‑contact 状態を保持します。これは論文のセクション 3.3, 3.7, 4 に対応しています。
コード:

  • src/physics/gpu/contactGeneration.ts
  • src/physics/gpu/contactRecord.ts

body 毎の制約リスト構築

アルゴリズム 1 は「各ボディ/頂点について、作用する力をすべて列挙する」と記述されています。実行時表現では、接触・ジョイント・スプリングから得た per‑body 制約収集が該当します。
コード:

  • src/physics/gpu/contactGeneration.ts
  • src/physics/gpu/avbdState.ts

色付け

論文は貪欲色付けを採用し、同じ色のボディは原始ステップで並列処理可能にします。この準備は以下で行われます。

src/physics/gpu/avbdState.ts

慣性ターゲットと原始初期化

アルゴリズム 1 の次の段階では、慣性ターゲット (y) を構築し、原始状態を初期化。ウォームスタート・剛性変数はセクション 3.6, 3.7 で議論された (\alpha), (\gamma) スケーリングで設定します。
コード:

  • src/physics/gpu/avbdState.ts
  • src/physics/PhysicsEngine.ts

主な AVBD イテレーション:色付き原始ボディ解法

各イテレーションおよび各色について、ソルバーはボディに対する慣性と制約の寄与を集計し、ローカル剛体システムを構築して AVBD 原始更新を適用します。これはアルゴリズム 1 の行 7–25 とセクション 3.5 の近似ヘッセンに対応しています。
コード:

  • src/physics/gpu/avbdState.ts

双対と剛性の更新

各原始スイープ後、双対変数と剛性値を並列で更新します。これは論文の拡張ラグランジュ / 剛性ランプルールに対応しています。
コード:

  • src/physics/gpu/avbdState.ts

速度の最終化

AVBD 位置解が完了した後、速度を更新状態から再構築します。これもアルゴリズム 1 の最後段階と一致します。
コード:

  • src/physics/gpu/avbdState.ts
  • src/physics/PhysicsEngine.ts

オプションのポストプロセッシング

スリープ処理や診断はコア AVBD ループ外であり、オプションのランタイム機能です。主な調整は以下に残ります。

src/physics/PhysicsEngine.ts


現実装についての注意点

広域パイプラインは論文とほぼ一致しています:

衝突検出 → 色付け → 慣性/原始初期化
→ 反復的な色付き原始解法 → 双対更新 → 速度最終化

これは初期実験版であり、今後のアップデートでは安定性・パフォーマンス・使いやすさを重視します。
重要な実装上の違いとしては、論文が同色衝突時にダブルバッファ位置更新を明示的に記述している一方で、本プロジェクトでは基本的に in‑place の色付きボディ解法 (

src/physics/gpu/avbdState.ts
) を採用しています。

同じ日のほかのニュース

一覧に戻る →

2026/04/10 4:48

macOSでのネイティブ即時空間切り替え (Note: The phrase “Instant Space Switching” refers to the feature that allows users to switch between virtual desktops or spaces instantly. In Japanese, it is often rendered as 「即時スペース切り替え」.)

## Japanese Translation: ## Summary 著者は、macOS が即時の Space 変更をサポートしない理由を説明し、Apple の唯一の組み込み回避策である「Reduce motion」が単に問題をフェードアニメーションに置き換えるだけでなく、ブラウザの prefers‑reduced‑motion 設定もトリガーすることを指摘しています。他の解決策には欠点があり、yabai は即時切替を可能にしますが System Integrity Protection (SIP) を無効化し、タイル方式を学ぶ必要があります。FlashSpace と AeroSpace はネイティブではなく不要な複雑さを追加します。BetterTouchTool は「Move Left/Right Space (Without Animation)」機能を提供しますが、有料ライセンスのみで利用可能です。 著者は **InstantSpaceSwitcher**(GitHub: jurplel/InstantSpaceSwitcher)というメニューバーアプリを発見しました。このアプリは SIP を無効にせずに即時の Space 変更を実現します。高速トラックパッドスワイプをシミュレートし、コマンドラインインターフェース(`ISSCli`)を通じてユーザーが直接特定のスペース番号へジャンプできるようにします。 **インストール手順:** ``` git clone https://github.com/jurplel/InstantSpaceSwitcher cd InstantSpaceSwitcher ./build.sh ``` ビルド後、`.build/release/ISSCli --help` を実行して `[left|right|index <n>]` などのコマンドを確認してください。リポジトリは GitHub スターが1つしかありません。著者は役立った場合にスターを付けるよう読者に奨励しています。 別プロジェクト **instantspaces** は yabai のスイッチャーを分離しようとしますが、著者の macOS Tahoe では機能しませんでした。読者は新しい macOS リリースで InstantSpaceSwitcher または instantspaces が成功したかどうか報告することが推奨されています。

2026/04/10 5:12

チャルクテリー – 視覚的類似性を探るUnicodeエクスプローラ

## Japanese Translation: **改訂要約** Charcuterie は Unicode 文字セットのウェブベースのビジュアルエクスプローラーで、ユーザーがグリフを閲覧し、関連するシンボル、スクリプト、および形状を発見できるツールです。各グリフは描画され、ベクトル空間に埋め込まれ、類似度計算を用いて視覚的に似ている文字をグループ化します―すべてブラウザ内で完結します。このプロジェクトは積極的に開発中です。ユーザーからのフィードバックを歓迎し、継続的な改善を支援するための寄付も奨励しています。© 2026 David Aerne.

2026/04/10 5:10

Gemini の SynthID 検出機構のリバース エンジニアリング

## 日本語訳: > **概要:** > 本プロジェクトは、Google の Gemini が生成するすべての画像に埋め込む Spectral SynthID ウォーターマークを検出・除去する高忠実度手法を示しています。ウォーターマークを逆解析した結果、解像度依存性(キャリア周波数が画像サイズとともに変化)であること、および Gemini モデルごとに固定の位相テンプレートが存在し、クロスイメージ位相共鳴率が 99.5 % 超、黒/白検証時には |cos(phase_diff)| が 0.90 を超えることが判明しました。 > 研究者は、解像度ごとにキャリアプロファイルを保存するマルチレゾリューション SpectralCodebook(V3)を構築し、バイパスアルゴリズムではチャネル重み G=1.0、R=0.85、B=0.70 を用いて 3 回のパス(攻撃的 → 中程度 → 穏やか)で位相整合性付きの加重減算を行います。これによりキャリアエネルギーが約 75.8 % 減少し、トップ5 キャリア位相共鳴率が 91.4 % 降低され、1536×2816 画像で PSNR >43 dB、SSIM ≈0.997 の視覚品質を保持します。これは以前の V1(JPEG Q50、37 dB)や V2(27–37 dB)の試みと比べて著しい改善です。 > リポジトリにはコードブック構築用スクリプト (`synthid_bypass.py build-codebook`)、V3 バイパス実行、ウォーターマーク検出用 (`robust_extractor.py detect`) が含まれています。貢献者は、Nano Banana Pro を使用して様々な解像度で純黒(#000000)と純白(#FFFFFF)の画像を生成し、コードブックをさらに充実させることが推奨されています。 > すべてのツールは学術研究専用に公開されており、SynthID は依然として Google DeepMind の独自技術です。 この改訂版は主要ポイントを網羅し、根拠のない推測を排除し、読者向けに明確で簡潔な概要を提示しています。

**拡張頂点ブロック降下法の WebGPU 実装** | そっか~ニュース