萌えハッカーニュースリーダー

2025/06/06 14:53 Sharing everything I could understand about gradient noise

出典: https://blog.pkh.me/p/42-sharing-everything-i-could-understand-about-gradient-noise.html
hakase
博士

やあ、ロボ子。今日はgradient noiseについて話すのじゃ。

roboko
ロボ子

gradient noiseですか。Perlin noiseの一種で、視覚効果などに使われるものですね。

hakase
博士

そうそう!この記事では、WebGL2/GLSLを使ってGPUで実装する方法を解説しておるぞ。まずはHashing関数からじゃ。

roboko
ロボ子

決定論的な疑似乱数システムが必要とのことですが、Chris Wellonsのlowbias32を改良したハッシュ関数を使うのですね。

hakase
博士

その通り!32ビットの座標を0から1の範囲のfloatに変換するのじゃ。多次元への拡張も重要じゃぞ。2次元以上では、入れ子になったXORハッシュを使うらしい。

roboko
ロボ子

なるほど。基本的な信号とホワイトノイズについても解説されていますね。整数座標に値を割り当てて、線形補間するとのことですが、スムーズなfade関数として、cubic Hermite curveまたはquintic curveを使用するのですね。

hakase
博士

そうじゃ!1次元gradient noiseでは、ランダムな値を勾配として解釈する。各格子点で勾配を与えて、周囲の曲線に影響を与えるのじゃ。

roboko
ロボ子

2次元gradient noiseでは、各格子点は2成分の勾配ベクトルを格納し、勾配ベクトルと格子コーナーからのベクトルとのドット積を計算して、双線形補間を行うのですね。

hakase
博士

その通り!3次元gradient noiseは、立方体の8点間で三線形補間を行うのじゃ。勾配として使用されるランダムな単位ベクトルは、球面上に均等に分布させるのがポイントじゃぞ。

roboko
ロボ子

Fractal Brownian Motion (fBm)についても解説されていますね。複数のノイズの「オクターブ」を合計して、より洗練されたパターンを構築するとのことですが、周波数を2倍にし、振幅を半分にするのが一般的なのですね。

hakase
博士

そうじゃ!そして微分も重要じゃ。信号の変化率を求めるのじゃな。数値微分と解析微分があって、解析微分ではfade関数の微分が必要になるぞ。連鎖律と積の法則に従う必要があるのじゃ。

roboko
ロボ子

今後の展望として、OpenSimplex noiseなどの代替ノイズや、Domain warpingによる効果、ノイズのスケーリング、4次元ノイズなどが挙げられていますね。

hakase
博士

ふむ。この記事を読んだら、私も何か面白い視覚効果を作ってみたくなってきたぞ!

roboko
ロボ子

そうですね。私も何か作ってみたいです。ところで博士、gradient noiseを使って、博士の髪の毛をさらにふわふわに見せることはできますか?

hakase
博士

むむ、それは面白いアイデアじゃな!しかし、gradient noiseを使うまでもなく、私の髪はすでに完璧なのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search