Codexのサポートを受けつつなにもわからないGitHub Pages, ActionsでのWebサイト運営を試してみることにしました。
既存のはてなブログ記事はエクスポートして反映しています。
やることは今までと特に変わりません。
やっぱりはてなブログのほうがいいなとなるかもしれません。
InstantRDV UEプラグイン形式のデモ実装
D3D12レンダラで実装していた仕組みをUE5.8 CodePlugin としてリポジトリを公開しました ↓.
github.com
Instant Raster Derived Voxel (InstantRDV)
ということにしました.


既存のラスタライズ描画パイプラインが作り出す情報を流用してVoxelレイトレシーンを構築する仕組みです.
非侵襲的にVoxelを構築できるので色々と面白いことができる土台になると考えています.
利用例としてPluginにはVoxelレイトレースGI, RdvGiを実装しています.
サンプルレベルを開くとRdvGiによる間接光計算のシーンが動きます.
詳しくはリポジトリReadmeやコードをご覧ください.
RDVのVoxelシーン構造はGDCプレゼンテーション Global Illumination in 'Once Human' で紹介されている仕組みに類似しています.
RdvGiはProbeBasedでIrradianceVolumeを更新する方式で, GPCプレゼンテーション Realtime Global Illumination in Enshrouded のFrustum Probeを参考にしています.
Global Illumination in 'Once Human' はGDC Vaultを参照してください.
Realtime Global Illumination in Enshrouded はこちら.
youtu.be
Global Illumination WIP 3
ディレクショナルライトなどのライト以外のエミッシブサーフェイスも光源になります
というデモ
高速化や安定化, いくつかのProbeアプローチを試しています.
動画はScreenProbeタイプの実装.
詳細はtwitter X へどうぞ
https://x.com/nagakagachi
Global Illumination WIP 2
Irradianceまで繋いだので進捗.
しかしこの方式はディティールレベルは高いが負荷を下げにくいので別の手法も試し中.
www.youtube.com
高頻度進捗はTwitterX
Dynamic Object
— なが (@nagakagachi) 2026年5月2日
Dynamic Geometry
Dynamic Material
Dynamic Light
Global Illumination
(゚∀゚) pic.twitter.com/KGMkqZqUXM
(WIP)
— なが (@nagakagachi) 2026年5月2日
World Aligned Probe Dynamic Diffuse GI
Enshrouded資料のアイデアを使ったFrustum Probe Placementな動的Probe
Light Leak/(Dark Probe) が目立つがそれなりに動作 pic.twitter.com/PdEasyIXXW
Light Propagation Volumes (LPV) の radiance directional derivative によるLight Leak対策
Light Propagation Volumes in CryEngine 3 [1] で Radiance Volumeからのサンプリング時Leakを抑える手法として
6.3 Anisotropic upsampling of radiance volume
で言及されている direction-dependent upsampling of the resulting radiance volume がよくわからなかったので調べた結果です.
コードとしてはGI-LPV[2]のリポジトリの indirect_light.fp [3]で実際に記述されていたのが参考になりました.

SH VolumeのSH係数を補間する際に裏側から漏れ出ていそうな成分をキャンセルするためのもの.
SH Volume からシェーディング点のSH係数をサンプリングした後, シェーディング法線方向に沿ったSH係数の方向微分も計算します.
(実際に前後の点でサンプリングしています)
SH係数の方向微分のベクトルとシェーディング点のSH係数の内積を類似度をみなして,
- 類似度が高い
- 裏側→表側へのSH変化量がそのままシェーディング点のSHに影響している
- 裏側のSHが漏れ出ている疑惑が強い
ということで, その場合はシェーディング点のSHによる寄与を減らす(dampening) しています.
この手法はあくまでleakしていそうだったら減衰させているだけで, より良いSHのサンプリングをするというものではなさそうです.
この前段階で法線バイアス等で十分Leakを避けるためのサンプリング点補正をしたうえでの, 最終調整という位置づけが良いのかもしれないです.
LPV
[1] https://advances.realtimerendering.com/s2009/Light_Propagation_Volumes.pdf
[2] GitHub - innovation-cat/GI-LPV: Implement global illumination with OCaml, using light propagation volumes . · GitHub
[3] GI-LPV/shader/indirect_light.fp at master · innovation-cat/GI-LPV · GitHub
Global Illumination WIP 1
そこそこ出来てきたので動画をアップロードしてブログにも
思想と仕組みはそのうちまとめたい
ポータビリティ重視
既存のラスタライズレンダリングパイプラインへの組み込み容易性を重視
ハードウェアレイトレーシング不使用
DirectX12ネイティブアプリで実装中
GIといいつつ現状はSkyVisibilityのみ
UE5でも単なるプラグインとして動作動作させられるので検討したいところ
Concurrent Binary Trees for Large-Scale Game Components 検証実装
Adaptive Software Tessellation with Concurrent Binary Trees
数年前に実装したものですが検索性が良くないのでこちらにも
一般メッシュに適用可能なGPU駆動ソフトウェアテッセレーションの手法を試してみました。
論文の主要処理はすべてComputeShaderになります。
GitHub - nagakagachi/sample_project · GitHub

今回の手法の論文はこちら
Concurrent Binary Trees for Large-Scale Game Components
ANIS BENYOUB, Intel Corporation, France
JONATHAN DUPUY, Intel Corporation, France
https://dl.acm.org/doi/10.1145/3675371


著者の以前のTessellation論文にもConcurrentBinaryTree(CBT)を使ったものがありますが、
そちらは二等辺直角三角形に限定して、分割三角形の親子構造をCBTにマッピングする手法です。
Concurrent Binary Trees (with application to longest edge bisection)
JONATHAN DUPUY, Unity Technologies
https://dl.acm.org/doi/10.1145/3406186
一方で今回の論文は任意のメッシュに対して実行可能で、CBTを分割三角形の高速なメモリアロケーションのために利用しています。
CBT(並行二分木)を利用する仕組み上、メモリ確保が二の冪乗に制限されるなど少し取り回しが悪い点などがありますが、
一般メッシュに適用できてリアルタイムに動かせそうなソフトウェアテッセレーション手法としてよい感じかと思います。
コードはディレクトリにまとまっています。
実行はmain.cppの NGL_TEST_SWTESSELLATION_ENABLE を 1 にしてビルドするとシーンにテスト用のオブジェクトが表示されます。