タグ付けされた質問 「algorithm」

2
なぜモンテカルロ光線追跡は分散光線追跡よりも優れているのですか?
モンテカルロレイトレーサー(パストレースアルゴリズムに基づく)の品質は、分散(確率的)エンジンよりもはるかに現実的だと聞きました。理由を理解しようとしていますが、まだ始まったばかりです。 このトピックに飛び込み、基本を理解するために、誰かが私を正しい方向に向けることができますか?アルゴリズムのどの部分がよりリアルなレンダリング結果につながりますか?

2
異方性フィルタリングは、通常、最新のGPUでどのように実装されていますか?
異方性フィルタリングは、「エイリアシングを回避するためのMIPマップテクスチャの試行によって通常失われるテクスチャの鮮明さを保持します」。ウィキペディアの記事は、それをどのように実装できるかについてのヒントを提供します(「異方性の任意の方向のテクスチャ(...)をプローブする」)。 プレゼンテーションのノートで説明されているテストで示唆されているように、さまざまな実装があるようです。物理ベースのレンダリングの近似モデル: 異方性フィルタリングを使用するときに正しいMIPレベルを選択するために(現代の)GPUによって実行される具体的な計算とは何ですか?

1
タイル化できるノイズ関数を作成するのに2倍の費用がかかるのはなぜですか?
いくつかの場所で、Perlinノイズループをシームレスに作成するには、わずかに異なる方法で2回計算し、2つの結果を合計する必要があることを見てきました。 このPerlinノイズ数学FAQは、式を提供します: FL O O P(x 、y、z)= (t − z)⋅ F(x 、y、z)+ z⋅ F(x 、y、z− t )tFloop(バツ、y、z)=(t−z)⋅F(バツ、y、z)+z⋅F(バツ、y、z−t)tF_{loop}(x, y, z) = \frac{ (t - z) \cdot F(x, y, z) + z \cdot F(x, y, z - t) }{ t} ノイズ関数方向にループさせる。また、これを拡張して、2次元でループするには 4回の評価が必要であり、3次元でループするには8回の評価が必要であると述べています。FFFzzzFFFFFF これにより、タイル間のシームレスな結合が連続的であるだけでなく継続的に微分可能であることを理解していますが、必要なタイルサイズを法としてグリッドポイントを減らしてノイズ関数を1回評価するだけで、直感的にそうなると思います。ノイズ関数が、すぐに周囲のグリッドポイント(2Dノイズの場合は4、3Dノイズの場合は8)のみに基づいている場合、計算するポイントがタイルの右端を通過するときは、必ず左端のグリッドポイントを使用します他のグリッドポイントと同じ品質のノイズですか? この複数の計算手法をいくつかの場所で見てきたので、何らかの利点が必要だと思いますが、グリッドポイントが大きくなりすぎて最初に戻るように単純に折り返すという欠点を見つけるのに苦労しています。私は何が欠けていますか?
12 algorithm  noise 

2
画面スペースのアンビエントオクルージョンはどのように実装されていますか?
ウィキペディアからの説明がわかりません。 画面上のすべてのピクセルについて、ピクセルシェーダーは現在のピクセルの周囲の深度値をサンプリングし、サンプリングされた各ポイントからオクルージョンの量を計算しようとします。 周囲のピクセルの深度値は、オクルージョンについて何かを伝えることができますか?閉塞は、あなたがオブジェクトBを参照してくださいすることができないように、オブジェクトAは、別のオブジェクトBの前に立ったとき、私は理解して、たまたましかし、なぜあなたは今の深さピクセルでなり、周囲のピクセル?つまり、これらのピクセルが見えるので、オクルージョンはありません。多分私は咬合が間違っていることを理解しました。 また、他のチュートリアルではカーネルという用語も理解していません。カーネルとは何ですか、なぜそれをssaoに使用するのですか? 私の質問に関して誰かがアルゴリズムの詳細な説明をすることはできますか?

3
曲率の​​高い領域に点を集中させるにはどうすればよいですか?
ポイントをインプリシットサーフェス上に分布させて、曲率の高い領域にポイントをより密集させるにはどうすればよいですか? ポイントをランダムに追加し、曲率に基づいて不要なポイントを拒否することを検討しましたが、同様に曲率のある領域全体に均一な分布を与えるより良い方法があるかどうか知りたいです曲率領域。 表面の三角形分割にこれらの点を使用することに特に注目しており、比較的平坦なパーツに必要な数より多くの三角形を作成したくありません。 これは、既知の導関数を持つ形状に適用されるため、特定の点の曲率を計算できます。 これは、リアルタイムのアプローチである必要はありません。

1
以前に描いた曲線のセグメントを交差させずに2点を接続する方法
交差せずにポイントペアを接続する必要があります。曲線のセグメントに接続する2つの特定のポイントがあるとします。次に、2つの新しいエンドポイントが再び選択され、これらの新しいポイントも接続する必要がありますが、以前に描画されたカーブと交差せずに、任意の数のポイントペアについて同様に接続します。 これらの曲線のセグメントを見つけて描画する最も簡単な方法は何ですか?
9 algorithm 

1
GPUでルックアップテーブルを使用する場合の最適なメモリアクセス
私は学士号プロジェクトのGPUの等値面アルゴリズムを調査しています(具体的には、実数値のフィールドではなく、バイナリの入出力ボクセルデータのみに集中しています)。したがって、OpenFrameworksで古き良きマーチングキューブのCPU実装があり、それをGLSLコンピューティングシェーダーに移植しようとしている段階で、潜入する前に落とし穴を考慮しています。vertシェーダーとfragシェーダーのみを記述しました以前はそれは私にとってすべて新しいものです。 私の最初の問題は、ワークグループ内の数十または数百のスレッドにわたってルックアップテーブルを効率的に使用する方法です。GPUにはさまざまなタスク用にさまざまな種類のメモリがあることを理解していますが、それぞれがどのように動作するか、どのタイプを使用するかは完全にはわかりません。 Paul Bourkeの古典的なcopypastaテーブルは256 * 16配列なので、スカラーバイトタイプを使用する場合、これはおそらく4kbテクスチャまたはSSBOにパックできます。 問題は、異なるスレッドが互いにつまずくのを防ぐ方法ですか?各ワークグループの多くのキューブは、同じ構成を持つ可能性があるため、バッファ内の同じ場所に同時にアクセスしようとします。これに対処するための回避策または最適化はありますか?

1
ヤングのダブルスリット実験のモデリング
ヤングのダブルスリット実験は、セットアップと説明が非常に簡単ですが、回折と干渉の両方の例であり、どちらも従来のレイトレーシングではモデル化されていません。 テクスチャを使用して結果の近似をレンダリングするのは簡単ですが、そのためには、結果がどうあるべきかを事前に知る必要があります。スリットの数と配置が事前にわからない任意の設定の場合、正しい結果の画像を生成するために効果をモデル化するための既存のアルゴリズムはありますか? そうでない場合、これらの効果を正確に生成するには、モデルに何を含める必要がありますか?レイトレーシングは、追加情報を運ぶレイを使用するように適合させることができますか、それともまったく新しいアプローチが必要ですか?

2
パストレースから高周波ノイズを除去するアルゴリズム
私はしばらく自分のレンダラーに取り組んでいますが、収束するまで長時間待つ以外に、レンダリングされた画像からモンテカルロノイズを削除する方法はあるのでしょうか。 私が見つけた方法は、画像の品質/シャープネスを大幅に低下させるため、画像をぼかすことですが、これはあまり役に立ちません。さらに、サンプル数の多い小さな画像をレンダリングしてから拡大することで、同じことを実現できます。 パストレースで画像のノイズに対処するために設計されたアルゴリズムはありますか?



1
ベジェ曲線と直線で構成される形状をどのように塗りつぶす必要がありますか?
私はしばらくの間グラフィックライブラリに取り組んでおり、ベジエフォントとラインベースのフォントを描画しなければならないところまで到達しました。この時点まで、私はこれで立ち往生しています: 緑の線はベジェパスで、白い部分がレンダリングされます。 ベジエに使用するコードはこちらです。ライン用はこちら。知らない人はルアです。 パスレンダリング(ライン):32-39アルゴリズムは次のとおりです。 特定の間隔で0から1まで繰り返す 次の式でxとyを計算します。 (1-index)^2*x1+2*(1-index)*index*x2+index^2*x3 この時点まで、すべてが正常に動作します。緑の線は、パスメソッドを使用して生成されます。 白い部分は完全に異なる方法でレンダリングされます: 特定のYでのベジエと線のx座標を取得し、それらをテーブルに入れます。 テーブルを繰り返し処理し、ポイントに遭遇するたびに状態の値を変更します。同じforループで、状態がオンかどうかも確認します。もしそうなら、私は画面にピクセルを描画します。 ayのx値を見つけるには、getXメソッドを使用します(ベジェでは46行目、ラインでは31行目)。 図面自体に使用するコードは次のコードです。 local xBuffer = {} local state = false for i=0,500 do for k,v in pairs(beziers) do a,b = v.getX(i) if a then xBuffer[round(a)] = 1 if b then xBuffer[round(a)] = 1 end end end for k,v in …

1
renderman言語による摂動画像テクスチャの実装
私は(C#で)イメージの摂動アルゴリズムを実装しようとしています(「テクスチャリングとモデリング-K.パーリンら」(誰かが持っている場合は91ページ))で、イメージを歪めています。次のコードはRenderman言語で記述されています。テクスチャアクセス Ct = texture("example.tx", s, t); に置き換えられます point Psh; float ss, tt; Psh = transform("shader", P); ss = s + 0.2 * snoise(Psh); tt = t + 0.2 * snoise(Psh+(l.5,6.7,3.4)); Ct = texture("example.tx", ss, tt); 左の画像を右の画像に変換します。 私が理解していないことから、座標にアクセスする代わりに、わずかに摂動した座標にアクセスしそれらを場所に表示して、わずかに摂動したように見える画像を作成します。(s,t)∈[0,1](s,t)∈[0,1](s,t)\in[0,1](ss,tt)(ss,tt)(ss,tt)(s,t)(s,t)(s,t) s n o i s e (x )snoise(x)snoise(x)はとして定義され、からにノイズをマッピングし、RenderManのドキュメントでは、Pがポイントである返します。ノイズに基づく値(おそらくパーリンまたはラティス)。(http://renderman.pixar.com/resources/current/RenderMan/noiseFunctions.html)(n o i s e (x …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.