コンピューターグラフィックス

コンピューターグラフィックスの研究者やプログラマーのためのQ&A

3
ゲームのジオメトリックLODの最新技術とは何ですか?
現代のゲームは、キャラクター、地形、葉などのオブジェクトメッシュのジオメトリの詳細レベルをどのように行いますか?私の質問には2つの部分があります。 資産パイプラインはどのように見えますか?アーティストは、後にデシメーションされるハイポリモデルを作成しますか?もしそうなら、どのデシメーションアルゴリズムが最も人気がありますか?LODメッシュは時々手作業で行われますか? 実行時にエンジンは異なるオブジェクトLOD間でどのように移行しますか?スムーズまたはプログレッシブトランジションはありますか? 答えは「スタジオごとに異なるテクニックを使用する」かもしれません。その場合、最も一般的な慣行をいくつか特定してください。特定の例をカバーするホワイトペーパー/スライドを教えていただければ幸いです。
15 geometry 

1
Metalではミップマップレベルはどのように計算されますか?
私の質問は、特にMetalに関するものです。なぜなら、別のAPIで答えが変わるかどうかわからないからです。 私がこれまでのところ理解していると信じているのはこれです: ミップマップされたテクスチャには事前に計算された「詳細レベル」があり、元のテクスチャを何らかの意味のある方法でダウンサンプリングすることで、より低い詳細レベルが作成されます。 ミップマップレベルは、詳細レベルの降順で参照されます。レベル0は元のテクスチャであり、高レベルはその2のべき乗の縮小です。 ほとんどのGPUは、トライリニアフィルタリングを実装します。これは、各サンプルの2つの隣接ミップマップレベルを選択し、バイリニアフィルタリングを使用して各レベルのサンプルを選択し、それらのサンプルを線形ブレンドします。 私がよく理解していないのは、これらのミップマップレベルがどのように選択されるかです。Metal標準ライブラリのドキュメントでは、lod_options型のインスタンスを指定してもしなくても、サンプルを取得できることがわかります。この引数はミップマップレベルの選択方法を変更するものと思われ、lod_options2次元テクスチャには明らかに3種類あります。 bias(float value) level(float lod) gradient2d(float2 dPdx, float2 dPdy) 残念ながら、ドキュメントではこれらのオプションが何をするのかわからない。bias()自動的に選択された詳細レベルにバイアスがかかると推測できますが、バイアスのvalue意味は何ですか?どの規模で動作しますか?同様に、どのように離散ミップマップレベルlodにlevel()変換されますか?そして、gradient2d()テクスチャ座標の勾配を使用するという仮定の下で動作する場合、その勾配をどのように使用してミップマップレベルを選択しますか? さらに重要なのは、を省略した場合lod_options、ミップマップレベルはどのように選択されるのかということです。これは、実行されている機能のタイプによって異なりますか? また、sample()関数のデフォルトのno-lod-options-specific操作がgradient2D()(少なくともフラグメントシェーダーで)次のようなことをすることである場合、単純な画面空間の派生物を利用するか、ラスタライザーおよび補間されたテクスチャ座標で直接動作しますか正確な勾配を計算するには? 最後に、この動作はデバイスごとにどの程度一貫していますか?古い記事(DirectX 9と同じ)は、複雑なデバイス固有のミップマップ選択について言及しましたが、新しいアーキテクチャでミップマップ選択がより適切に定義されているかどうかはわかりません。

1
GPUにラスタライザーがまだあるのはなぜですか?
進歩にもかかわらず、最新のGPUはまだラスタライザーを修正しています。プログラム可能なシェーダーで高度にカスタマイズ可能ですが、完全にプログラム可能ではありません。 何故ですか? GPUが、ラスタライザーがユーザーが提供するデバイス用の単なるソフトウェアであるユニバーサルコンピューティングユニットを備えた単純な超並列デバイスになれないのはなぜですか? 固定機能のハードウェアはパフォーマンス面で非常に有益であり、そのようなアプローチは実行不可能ですか?
14 gpu  rasterizer 

1
値のノイズに対するパーリンノイズの利点
パーリンノイズの内部の仕組みを調査しているときに、単純な値のノイズの代わりにパーリンノイズを使用する理由を疑問に思いました。私が正しく理解している限り、以下が適用されます。 パーリンノイズは、基底のノイズ空間のすべてのポイントにn次元の勾配(元の実装ではランダム、改善された実装では固定)を割り当てる格子ベースのノイズ関数です。これで、距離ベクトルと勾配ベクトル間のドット積を計算することにより、空間内のすべてのポイントの値を照会できます。その後、計算されたすべての値を平均し、クエリされた値を取得します。 しかし、勾配ベクトルではなくランダムな値を使用しない限り、値ノイズは同じではありませんか?また、値ノイズの値間を補間するため、perlinノイズの追加の計算ステップ(内積)を使用してもメリットが見られません。 では、なぜバリューノイズの代わりにパーリンノイズを使用するのでしょうか?なぜパーリンノイズはそんなに人気があるのですか?
14 noise 

1
GLMでベクターの長さを取得する
GLMライブラリがどのように動作しているか、または不適切に使用しています。 glm::vec2 testVec(6,-4); float len = testVec.length(); 2上記のコードスニペットで値を取得します。で定義されたベクトルの長さを取得しようとしていますtestVec。あなたはそれがベクトルの正しい長さではないことをよく知っています。ここで何が欠けていますか?
14 c++  vectors  glm 

2
さまざまな空間充填曲線の違いは何ですか?
空間充填曲線は、空間的な局所性を明らかにするのに役立つため、多くのグラフィックアプリケーションで重要です。Z曲線、モートンコード、ヒルベルト曲線などを使用したさまざまなアルゴリズムについてよく耳にします。これらのさまざまな曲線の違いは何ですか。また、さまざまなアプリケーションにどのように適用されますか。

1
地球の地平線の形状の公式の信頼できるソースが必要
私が求めているもの 私は式を求めていないことを強調します---私は式を知っており、それをどのように導き出すか。いくつかの異なるバージョンが投稿の終わり近くに再現されています。実際、他の誰かが同様に派生させただけでなく、ここで派生物の1つをうまく提示しました。 私が必要とするのは、公式の信頼できるソースです。たとえば、元の研究を報告することの禁止に違反することなくウィキペディアに載せることができます。[人々は実際に試してみました ...しかし、関連記事には非常に良心的な編集者がいて、元の研究であるという理由でこのセクションを削除しました...戦うために。] Computer Graphics StackExchangeに投稿する理由 ここの誰かが地球が軌道からどのように見えるかをモデル化したかもしれないので、おそらく彼または彼女は、この式(または、より一般的には、その一般化)が本、ジャーナル、会議議事録、またはクラスノートで公開されているかどうかを知っているかもしれませんなど 「グーグルによる」をやった 私に代わって答えを探しに行くように頼んでいるわけではないことを理解してください。私はすでに多くのグーグルを行っていますが、最後の手段としてここに投稿するだけです。私の(とてつもない)希望は、ここの誰かがすぐに参照を知っていることです。ない場合は...よく、私は(私はに興味がある人に話している完全な意識を持って、ので、自分自身を言うならば、少なくともあなたは以下のきれいな絵を楽しんで願って、コンピュータグラフィックス、あなたが大きく、より良い上へ移動する前に、すべての物事の)物事。 近づく2つのソース DKリンチ、「地球の湾曲を視覚的に識別する」Applied Optics vol。47、H39(2008)。ここから無料で入手できます。残念ながら、正しい方法で行うのではなく(それほど難しくはありません)、著者はハックを選択しました。(a)私は完全に理解しておらず、(b)私が知っていることに同意しません正しい式。 R. Hartley and A. Zisserman、コンピュータービジョンのマルチビュージオメトリ、第2版 (Cambridge University Press、Cambridge UK、2004)。秒で 8.3、「2次での射影カメラの動作」を読みました。 二次曲線が球体である場合、カメラの中心と二次曲線の間の光線の円錐は右円、つまり輪郭生成器は円であり、円の平面はカメラと球の中心を結ぶ線に直交します。これは、この線に関するジオメトリの回転対称性から見ることができます。球体の画像は、円錐を画像平面と交差させることにより取得されます。これが古典的な円錐曲線であることは明らかであるため、球体の見かけの輪郭は円錐曲線になります。 原則として、ほんの少しだけ多くの情報が含まれていれば、これはまさに必要なものです---少なくとも、球体までの距離と球体半径の関数としての円錐の離心率の表現画像平面が ピンホールカメラが地平線上の点に向けられている円錐の母線にである場合)。 学術的な参照が必要な式の詳細 大気のない完全に球形で完全に滑らかな地球を想定しています。理想的なピンホールカメラを水平線に向け、単純な中央投影を使用して、カメラの背面にある水平線の画像の形状(つまり、フィルム上での形状--- "フィルムプレーン")を計算します。 。これを明確にするグラフィック(興味のある人のためにAsymptoteで作成)を次に示します。 上で見たように、地平線の画像は円錐断面の一部です。してみましょう円錐の偏心なります。導出Iは、上記の代わりに、パラメータの使用K:ちょうど逆偏心であり、K = 1 / εを。偏心自体はε = 1 / √として与えられますεε\varepsilonkkkk=1/εk=1/εk=1/\varepsilon、ここでϵ=h/Rは、地球の表面上のピンホールの高度hと地球の半径Rの比です。【代わりに使用するεの比である、高度にRを、使用することが有用であり得るηの比率地球の中心にピンホールの距離、H+R:地球の半径、η=(R+Hを)/R=1ε=1/ϵ(2+ϵ)−−−−−−√ε=1/ϵ(2+ϵ)\varepsilon=1/\sqrt{\epsilon(2+\epsilon)}ϵ=h/Rϵ=h/R\epsilon=h/RhhhRRRϵϵ\epsilonRRRηη\etah+Rh+Rh+R。ηに関しては、 ε = 1 / √η=(R+h)/R=1+ϵη=(R+h)/R=1+ϵ\eta=(R+h)/R=1+\epsilonηη\eta ]。ε=1/η2−1−−−−−√ε=1/η2−1\varepsilon=1/\sqrt{\eta^{2}-1} ピンホール(図の点)からフィルムプレーンまでの距離は、1単位の長さと見なされます。PPP フィルムプレーンの軸は、地球の中心C(画像には表示されていません)とカメラがトレーニングされる水平線上のポイント(画像にVのラベルが付いている)を結ぶ線に平行になるように選択されます。線C Vはフィルム面に平行でなければならないため、この選択は明確です。これは、C Vとフィルム面の両方が視線P …

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

1
すべてのグリッドベースのノイズは必然的に異方性ですか?
これがより多くの次元にも適用されることに興味がありますが、この質問では2Dグリッドのみに焦点を当てます。 パーリンノイズは等方性(方向不変)ではなく、下にある正方形のグリッドがその向きを識別できるほど十分に現れることを知っています。シンプレックスノイズはこれを改善しますが、その下にある正三角形のグリッドはまだ完全に隠されていません。 私の直感では、グリッド上で特定の周波数のノイズを生成しようとすると、グリッドに整列していない方向の周波数が低くなります。そのため、これを隠すための試みを行うことができますが、グリッドを参照せずに生成しない限り、原則としてノイズを等方性にすることはできず、すべての方向で平均周波数が同じになります。 たとえば、ノイズのない正方形のグリッドで、正方形の辺の長さが、頂点の周波数は水平または垂直に、45度の頂点の周波数(正方形の反対側の角を通る)は。nnn1n1n\frac1n12√n12n\frac1{\sqrt{2}n} すべての方向で周波数が同一になる頂点位置をオフセットするために適用できるランダムな分布はありますか?私の疑いは、そのような配布がないことですが、どちらの方法でも証明する方法がありません。 要するに、特定の周波数の完全なグリッドベースのノイズを作成する方法はありますか、それとも他のアプローチ(非グリッドベースのノイズまたはアーティファクトを隠す方法)に焦点を合わせる必要がありますか?
14 noise  grid 

1
ルックアップテクスチャはまだ何かに使用されていますか?
それほど前のことではなく(5-10年?)、データをテクスチャにベイクし、テクスチャからデータを読み込むことが一般的で効率的だったことを知っています。データを出力します。 計算時間がテクスチャルックアップ時間と比較して安価になったため、すべてが一緒になくなったわけではないにしても、この方法は間違いなく少なくなりました。 私の質問は、ベイクアウトされたテクスチャはまだ何かに使用されていますか?モダンアーキテクチャでそれらの使用例はありますか?彼らは戻ってくる可能性が高いと思われますか?(たとえば、メモリテクノロジーまたは基本的なGPUアーキテクチャが変更された場合)
14 texture  gpu  hardware 

1
一定の条件はシェーダーの切り替えよりもコストがかかりますか?
一般的に、シェーダーでの分岐は良いアイデアではありません。しかし今では、描画呼び出し全体に対して一定の条件を持つシェーダーがあります。したがって、実行されるブランチは、1つの描画呼び出しに対して常に同じです。 そのような種類の分岐は、これらの分岐なしで複数のシェーダーを持ち、それらを切り替えるよりもまだ高価ですか?

1
遠くの雨をモデル化するにはどうすればよいですか?
クローズアップすると、雨は適切なモーションブラーを備えた透明な水のボールとしてモデル化できます。これは、遠くの雨のシーンに必要な大量の場合には実用的ではないようです。 人間の目で個々の雨滴を解決できない距離では、雨で満たされた大気の影響をどのようにモデル化できますか?これは、リアルタイムで使用するのに十分効率的である必要はありませんが、不連続性やちらつきを損なうことなく、アニメーション用に複数のフレームをオフラインで生成できるようにする必要があります。 これにはどのようなアプローチがありますか?

6
ジオメトリの回答に付随する単純な2Dイラストを作成する方法は?
アフィン変換に関する私の答えでは、説明を助けるためにいくつかの小さなイラストを作成しました。 幾何学的または数学的なアイデアを表現するアップロード可能なPNGをすばやく作成するにはどうすればよいですか? この質問は、私のポストスクリプトの回答をサポートするために作られましたが、より一般的にSEネットワークに利益をもたらす可能性のある他のソリューションを求めることを目的としています。しかし、信頼性のために、答えはこのテクニックが実際に使用されている投稿と、「メニューからエクスポートを選択」のような明白なもの以上を含む場合の十分な「ハウツー」部分にリンクする必要があります。 私たちのサイトに設定される優先順位に照らして、この質問の範囲を決める方法に関して、こことここに 2つのメタ質問があります。
14 2d 

1
パストレースでの反射または屈折の選択
私は自分のパストレーサーに屈折と透過を実装しようとしていますが、その実装方法が少しわかりません。まず、いくつかの背景: 光が表面に当たると、その一部が反射し、一部が屈折します。 反射光と屈折光の量は、フレネル方程式で与えられます 再帰的なレイトレーサーでは、単純な実装は、反射用のレイと屈折用のレイを撮影し、フレネルを使用して加重合計を行うことです。 RTLo=Fresnel()=1−R=R⋅Li,reflection+T⋅Li,refractionR=Fresnel()T=1−RLo=R⋅Li,reflection+T⋅Li,refraction\begin{align*} R &= Fresnel()\\ T &= 1 - R\\ L_{\text{o}} &= R \cdot L_{\text{i,reflection}} + T \cdot L_{\text{i,refraction}} \end{align*} ただし、パストレースでは、1つのパスのみを選択します。これは私の質問です: 偏りのない方法で反射するか屈折するかを選択する方法 私の最初の推測は、フレネルに基づいてランダムに選択することです。別名: float p = randf(); float fresnel = Fresnel(); if (p <= fresnel) { // Reflect } else { // Refract } これは正しいでしょうか?または、何らかの補正係数が必要ですか?私は両方の道を進んでいないので。

3
環境マップの重要度サンプリング
MISベースの単方向パストレーサーおよび同様のタイプのレンダラーでサンプリングされた環境マップ(EM)について、現在知られている、理想的には製品検証済みのアプローチとして最も良いものは何ですか?私は、非常に複雑で理解しにくい実装のコストで完全なサンプリングを提供するソリューションよりも、合理的に機能的でありながら合理的に機能するソリューションを好むでしょう。 私がこれまでに知っていること EMをサンプリングするいくつかの簡単な方法があります。BSDFとEM関数の両方のシェイプを無視する、余弦加重法で必要な半球をサンプリングできます。その結果、動的EMには機能しません。 サンプリングを使用可能なレベルに改善するには、球体全体のEMの輝度をサンプリングします。比較的簡単に実装でき、結果は非常に良好です。ただし、サンプリング戦略では、半球の可視性情報と余弦係数(およびBSDF)も無視されているため、EMの高輝度領域によって直接照らされない表面に高いノイズが生じます。 論文 このトピックに関する論文をいくつか見つけましたが、まだ読んでいません。これらのいずれかを読み、順方向単方向パストレーサーで実装する価値がありますか? 環境マップの構造化重要度サンプリング(2003)Agarwal et al。 Kartic SubrとJim ArvoによるSteerable Importance Sampling(2007)。彼らは、「...コサインの重みを考慮しながら、任意の表面の局所的な向きによって定義される正の半球でサンプルを生成する環境マップの効率的な層別重要度サンプリングのアルゴリズムを提示すると主張しています。「重要なサンプリング球面調和関数」という論文は次のようにコメントしています。これは、クランプコサインを任意の方向に効率的に回転できる操縦可能な基盤を形成します。」 Petrik ClarbergとTomasAkenine-Möllerによる、直接照明用の​​実用的な製品重要度サンプリング(2008)。環境マップの照明と表面反射率の積をサンプリングするためのアルゴリズム。ウェーブレットベースの重要度サンプリングを使用します。 Jarosz、Carr、およびJensennによる重要度サンプリング球面調和関数(2009)。要約では、「...球面調和関数(SH)として表される重要度サンプリング関数の最初の実用的な方法を提示しています...」 トーンマップされた平均シフトベースの環境マップサンプリング(2015)(Feng et al。)これはかなり新しく、私はそれへの参照も論文自体も見つけませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.