2011-07-23 35 views
11

私はたぶん私が酔ってブラウズするので、私は未回答のfwidthの質問が表示されます。 そして、それは実際には何をするように設計されたのだろうかと思う。実際に使用されているfwidth glsl関数は何ですか?

ドキュメントを読むのは、 abs(dFdx(p))+ abs(dFdy(p))です。

これは、max(dx、dy)という古典的なミップ選択ではありません。 代替ミップ選択ですか?しかし、私はabs(dx)+ abs(dy)がより良い場合を見つけることができません。 いくつかのsiggraph用紙や共通のアルゴリズムが必要です。私は完全にその機能を使用していません。それはGLSLに組み込まれたので、本当に人気があります。 私が考えることができる唯一の事は、私が紛失している2d後のフィルターです。
しかし、何ですか? 私は確か誰かがここで知っていると確信していれば、それは明らかです。 abs(dx)+ abs(dy)を使うアルゴリズムは?

+1

あなたが言及している2Dポストフィルタリングは、まともな例です。 – Bart

+0

しかし、どのフィルタ? – starmole

+4

お選びください。アンチエイリアス、エッジ検出、異方性フィルタリング実際、いくつかのGoogle-ingの後で、私はここで(例:http://prideout.net/blog/?p=22)、Celシェーディングシェーダのアンチエイリアスに使用されている例を見つけました。 – Bart

答えて

9

実際には、2Dフィルタリングの提案でお金を稼いでいます。ピクセルとその近傍ピクセルとの間の変化率にある種のメトリックに依存するフィルタは、この機能から利益を得ることができる。例は、アンチエイリアシング、エッジ検出、異方性フィルタリングである。私は考えているより多くの例があると確信しています。

GLSLにこの機能を組み込むのは、驚くべき理由があると思われるようです。私はそれが有益な機能だと言うでしょう。おそらく、この関数の実際の内部構造についてより詳細な知識を持っている人は、裏で何が起きるのか(dFdxとdFdyの手書き同等物に比べてパフォーマンスの改善がある場合)を詳しく説明することができます。

+0

答えをありがとう。それは意味をなさない。私が探していたのは、本当に「吹き飛ぶ」ものでした。例えば、GLSLのノイズ関数を見ると、なぜそれが存在するのか、なぜそれが入力などによって駆動される必要があるのか​​がわかります。しかし、以前はPerlinノイズについて知っていたからです!だから私は、この関数は、私がちょうど知らないアルゴリズムでも同様に重要であると考えています。しかし、質問の年齢と誰もがシングラリンクで答える人はいないでしょう。これは便利なショートカットで、簡単に実装でき、エミュレートできます。とにかく、忍耐と申し訳ありませんが、私はちょっとdouchyのように見えてくれてありがとう:) – starmole

+0

ここでは、fwidthを使ったシェイダーのよく見られる例です:[terrain-contour-lines](http://www.gamedev.net/topic/529926-terrain-contour-lines-using-pixel-shader /) – wil

3

これは、関数DF = dF/dx * dx + dF/dy * dyの総導関数です。 fWidth> = DFまたは言い換えれば、fWidthは、現在のフレグマント隣接ピクセルのいずれかの間のフラグメント変数Fの可能な最大変化である。すなわち、3x3近傍の8つの周囲画素。

関連する問題