見出し画像

📏距離関数とglslのsdfとdfの解説

数学およびその応用において,計量空間の集合Ωの符号付き距離関数(または配向性距離関数)は,与えられた点xのΩの境界からの距離を決めるもので,xがΩ内にあるかどうかによって符号が決まる. この関数は,Ω内の点xでは正の値をとり,xが符号付き距離関数がゼロとなるΩの境界に近づくにつれて値が減少し,Ω外では負の値をとる

https://amzn.to/3B4Q80M

距離関数は一般的な2つの点や点と形状との間の距離を示す関数です。

GLSLはシェーディング言語であり、グラフィックスの描画や計算を効率的に行うためのプログラムを記述するための言語です。
SDFは特定の形状との距離を示す関数で、点が形状の内部か外部かに応じて符号付きの距離を返します。
DFは距離の情報を持つデータやテクスチャで、特定の形状や文字の描画を助けるために使われます。

SDFやDFはGLSL内で利用されることが多く、特に3Dシーンのレンダリングやエフェクトの生成に用いられます。

GLSLやレイマーチングにおいて、距離関数 (Signed Distance Function, SDF) が使われる理由は以下のような利点があるためです。

  1. シンプルで効率的なシーン定義: SDFはシーン内のオブジェクトを数式で表現するため、非常にコンパクトかつ簡潔にシーンを定義できます。これにより、複雑なオブジェクトやシーンも比較的少ないコードで表現できます。

  2. 滑らかな形状生成: SDFを使うと、滑らかで継続的な表面を持つ形状を簡単に生成できます。例えば、球、トーラス、キューブなどの基本的な形状は単純な数式で表現でき、これらを組み合わせることで複雑な形状も作成可能です。

  3. 効率的なレイマーチング: レイマーチングでは、各ステップでの進行距離をSDFに基づいて決定するため、無駄な計算を減らしつつ効率的にサーフェスに到達できます。これにより、レンダリングのパフォーマンスが向上します。

  4. 布ルーディング・エフェクト: SDFはブーリアン演算(和、積、差など)を使って形状を合成するのに適しており、複数のSDFを組み合わせることで複雑な形状を作成できます。これにより、複雑なオブジェクトやシーンの作成が容易になります。

  5. 柔軟なディスタンスフィールド操作: SDFは形状の変形やモディファイを柔軟に行うことができます。例えば、スムージングやブレンド、反転などの操作が数式レベルで簡単に行えます。

これらの理由から、GLSLやレイマーチングでSDFが広く使用されているのです。

いいなと思ったら応援しよう!

あたり帳簿
お願い致します