3Dノイズを使用して、球の表面で評価することを検討します。
球体の表面の領域に自然に存在する勾配ノイズの場合、各セルの面積がほぼ等しい自然な接続情報を持つ表面上のサンプルポイントの規則的なパターンが必要なので、隣接する値を補間または合計できます。フィボナッチグリッドのようなものが機能するのではないかと思います。
4つの隣人の指標と距離を計算するのにどれだけの作業が必要かを判断するために数学をかじりませんでした(すべての場合で明確に定義された4人の隣人がいるかどうかさえわかりません)、そして、単に3Dノイズを使用するよりも効率が悪いのではないかと思います。
編集:他の誰かが数学を噛んでいます!球面フィボナッチマッピングに関するこの新しい論文を参照してください。球体ノイズに適応させるのは簡単だと思われます。
球体の表面のノイズを評価するだけでなく、球体をノイズラティスの解像度にテッセレーションすることに問題がない場合、球体をレンダリングする場合は、球体の表面に測地線グリッドを作成できます(細分割された二十面体、通常):
球体の各頂点には、勾配ノイズ用にランダムに生成された勾配を設定できます。(あなたが値ノイズのような簡単な補間をしない限り)、ピクセルシェーダに、この情報を取得するには、この記事のような技術が必要な場合があり重心座標とワイヤーフレームのレンダリングを:三角形のその頂点の重心座標を含む各頂点に、インデックス付けされていないレンダリングを行います。次にSV_PrimitiveID
、ピクセルシェーダーから(またはOpenGLに相当するもの)を読み取り、現在の三角形に基づいて頂点から3つのノイズグラデーションを読み取り、補間された重心座標を使用して好きなノイズ計算を使用できます。
この方法の最も難しい部分は、各頂点のノイズ値を検索するために、三角形IDを3つのサンプルにマッピングするスキームを考え出すことだと思います。
複数のオクターブのノイズまたは球体モデルよりも細かい解像度のノイズが必要な場合は、頂点を使用して粗い測地線グリッドを作成し、ピクセルシェーダーでいくつかのレベルの細分化を実行できる場合があります。すなわち、重心座標から、メッシュがさらにテッセレーションされた場合にどの細分割三角形になるかを特定し、その三角形のプリミティブIDと重心座標が何であるかを特定します。