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

テクスチャに関する質問:手続き型の生成、エンコーディング、アスペクトの特性評価、フィルタリング、マッピング、ストレージ...

5
符号付き距離フィールドフォントを使用したシャープコーナー
この論文では、Valveによる解像度に依存しないフォントレンダリングを実現する高速ソリューションとして、符号付き距離フィールド(SDF)が提示されました。 私はすでにValveソリューションを動作させていますが、角の周りのシャープネスを維持したいと思います。Valveは、2番目のテクスチャチャンネルとベースチャンネルのANDを使用することで、この方法でシャープなコーナーを実現できると述べていますが、この2番目のチャンネルがどのように生成されるかを説明していません。 実際、このホワイトペーパーには実装の詳細が数多く残されています。 鋭い角のあるSDFフォントレンダリングを取得する方向性を指摘できる方がいるかどうかを知りたいと思います。

2
仮想テクスチャリングは実際にどのように効率的ですか?
参考までに、私が言及しているのは、idTech 5のMegaTextureテクノロジーで最初に導入された(私が信じている)テクニックの「一般名」です。それがどのように機能するかについての概要を見るには、こちらのビデオをご覧ください。 私は最近、それに関連するいくつかの論文や出版物をざっと読んでいますが、どうすれば効率的になるのか理解できません。「グローバルテクスチャページ」スペースから仮想テクスチャ座標へのUV座標の絶え間ない再計算が必要ではないでしょうか。そして、それはジオメトリをバッチ処理するほとんどの試みを完全に抑制しないのでしょうか?任意のズームインを許可するにはどうすればよいですか?ある時点でポリゴンを再分割する必要はありませんか? 私にはわからないことがたくさんあり、このトピックに関する実際に簡単にアクセスできるリソースを見つけることができませんでした。

3
ベクターグラフィックスとビットマップまたはラスターグラフィックスのパフォーマンス
ベクトルグラフィックスを使用することもありますが、それは単にある場合には少しだけ見た目がいいからであり、また、ビットマップ/ラスタグラフィックスを使用する場合もあります。 私は疑問に思っていましたが、これら2つのオプションの間にパフォーマンスの大きな違いはありますか?

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と同じ)は、複雑なデバイス固有のミップマップ選択について言及しましたが、新しいアーキテクチャでミップマップ選択がより適切に定義されているかどうかはわかりません。

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

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



2
導関数マップと接線空間法線マップ
一部のエンジンが接線空間法線マップの代わりに微分マップを使用していることを発見しました。 いくつか読んだ後、それは接線空間法線を置き換えるための本当に素晴らしい方法のようですが、それらを使用するいくつかの欠点がありますか?なぜ接線空間法線を使い続けるのですか? メリットとデメリットの両方を比較することは可能ですか?


1
テクスチャの変更(その上でのペイント)は、「状態変化」と見なされますか?
グラフィックスの慣例では、状態変更をより少なく実行する方が、より多くの状態変更を実行するよりも優れています(シェーダーの切り替え、バッファーのバインド、テクスチャのバインドなど)。テクスチャの場合、(スプライト/テキストをレンダリングするために)1つのアトラスを使用して多くのポリゴンをレンダリングする方が、各ポリゴンに新しいテクスチャを個別にバインドするよりも高速です。 継続的にテクスチャにペイントしている場合、これは当てはまりglTexSubImage2Dますか?(ネットワークを介して)入ってくるデータのストリームがあり、処理を経て、一度に1行ずつテクスチャーにペイントされます。データは視覚的に無限のスクロールで表示されます。 1つの大きな長方形にレンダリングされた1つのテクスチャにペイントする方がよいでしょうか(ペイントされたデータをスクロールして表示します)。ここでのアイデアは、ペイントを続けている間、いつでも1つまたは2つのテクスチャをバインドすることです。 または、たくさんの小さな長方形をペイントする必要がありますか(ペイントが完了すると長方形のみが表示されます)。長方形ごとに1つのテクスチャをバインドするとします。
11 opengl  texture 

1
三次ラグランジュ補間テンソル積は、双三次補間と同じですか?
4x4の最も近いピクセルをサンプリングし、x軸でラグランジュ補間を実行して4つの値を取得し、y軸でラグランジュ補間を使用することにより、いくつかの補間テクスチャサンプリングを実装しました。 これはバイキュービック補間と同じですか、それとも異なりますか?または、さまざまな種類のバイキュービック補間がありますが、これはおそらくそのうちの1つにすぎませんか? ここでのWebgl Shadertoyの実装と関連するGLSL(WebGL)コード:https ://www.shadertoy.com/view/MllSzX ありがとう! float c_textureSize = 64.0; float c_onePixel = 1.0 / c_textureSize; float c_twoPixels = 2.0 / c_textureSize; float c_x0 = -1.0; float c_x1 = 0.0; float c_x2 = 1.0; float c_x3 = 2.0; //======================================================================================= vec3 CubicLagrange (vec3 A, vec3 B, vec3 C, vec3 D, float …

3
(拡散/アルベド)テクスチャとしての16ビットハーフフロートリニアHDR画像?
だから私はしばらくこれについて考えていて、グーグルで答えを探しましたが、成功しませんでした。 すべてのテクスチャがJPEGなどの8ビットLDR画像である場合、レンダリング時に露出制御/トーンマッピングと競合する可能性はありません。これは、低ダイナミックレンジによってクランプされているため、実際には存在しないテクスチャの詳細を公開する必要がある画像のレンダリング露出を調整する場合です。したがって、テクスチャをHDRイメージとして保存し、.exrとして保存して、16ビットハーフフロートの線形カラースペースで適切なカラー表現を取得することは意味がありません(32ビット「フル」フロートはやりすぎかもしれません)。より詳細で正しい色の値を取得するには、GIとカラーブリードの計算方法にも影響があると思います。 それとも、必要なレンダリングの最終結果はおそらく何らかの方法で写真を撮ったときのテクスチャの露出レベルと同じになるので、それは単に必要ではないのですか?また、カメラは主に12〜14ビットで撮影するので、テクスチャを複数回露光し、それらすべてを1つのHDRIにつなぎ合わせるために余分な作業をすべて行う必要があります。 編集: 明確にするために、私は主にこれに興味を持っていますリアルタイムゲームエンジン。



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