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

シェーダー、つまりGPUパイプラインのプログラム可能な部分に関連するすべての質問。言語固有のシェーダーの質問については、[glsl]および[hlsl]タグも参照してください。


2
シェーダーは、シェーディングされたメッシュが占めるピクセルを超えて、スクリーンピクセルをペイントできますか?
ジオメトリとコンピューティングシェーダーのプログラミングの経験はありますが、フラグメントシェーダーを実際に使ってみたことはありません。現在、私はそれらがどのように機能するか、そしてそれらの可能性をよりよく理解しようとしています。私が複数の場所で読んだことの1つは、フラグメント(スクリーンピクセル)がフラグメントシェーダー内でそれ自体を超えて拡張できないことです。つまり、反復される特定のフラグメントは、それ自体にのみ影響を与えることができます。 したがって、私は学習のために、次のことが可能かどうか(可能であれば、一般的にはどのようにして達成できるか)を知りたいと思います。簡単にするために、2つの頂点のみからなるポイントメッシュ(3Dワールド空間に配置)があるとします。これらの2つの頂点のそれぞれが画面上のWorldToViewportの正確な位置に描画されるようにシェーダーをプログラムできますか。また、radius = Rの各頂点を囲む円も、それらが延長されている場合でも周囲のピクセルに描画されます。シェーダーがアタッチされている元のメッシュを超えていますか?下の図のように(円の中心にある赤い四角形が画面に描かれた頂点を表します): それが可能であれば、頂点を超えて延びるこれらの円が互いの色(RGBA)に影響を与えるように、シェーダーをプログラムすることもできますか?下の図のように: 私が言ったように、これらが可能であるなら、私はそのようなことを達成する方法の少しを概念的または実際的な面で聞きたいです。フラグメントシェーダーで行われますか、それとも頂点シェーダーまたはジオメトリシェーダーで前に計算する必要がありますか?メッシュボディが占めるフラグメントを超えて「追加のフラグメント」を計算して渡す方法は?

2
可変パターン密度のパターン化オブジェクトをリアルタイムで作成する方法は?
pフレームごとに計算された、オブジェクトの表面上で連続的に変化する値があると仮定します。の値はp、表面上のパターンの密度を決定します。たとえば、密度p < 0.3が高い場合に2つの密度しかない場合、そうでない場合は密度が低くなります。 私は単純な高レベルのソリューションを考えました。2つのテクスチャを作成し、それぞれが異なる密度でp、適切なものからのサンプルの値に基づいています。ただし、高密度と低密度の境界には問題があります。 これは問題を説明するための例です(私の問題はこのドットパターンの例に限定されないことに注意してください。後で処理するパターンについて説明します)。 そして、これが低と高の間のしきい値です(高密度テクスチャに表示されますが、それは関係ありません)。線の下にある場合、高密度テクスチャをサンプリングする必要があることを意味します。 そして最後に、この方法を使用して望ましいことと実際に何が起こるかを比較します。 問題は、高密度のみの円がラインを横切るときにp、サンプリングされる低密度のテクスチャを示すときに無視され、その結果、円が切り捨てられることです。pフレームごとに異なるため、この問題の解決方法がわかりません。2つの密度の境界を「焼き付ける」ことはできません。下から高密度テクスチャを作成することで、逆の問題を簡単に防ぐことができます(つまり、円が低密度テクスチャ上にある場合は、高密度テクスチャ上にあることを確認してください)。 誰かが私の解決策を改善する方法を持っているか、完全に別の方法を持っているかどうかに興味があります。ここでの制約は、pフレームごとにリアルタイムで計算されることです。別の制約はパターンテクスチャに関連しています。パターンは白黒で、黒はパターン、白は背景です(例の円のように)。パターンは、同じ形状が繰り返されているだけでなく、白い背景の上に任意の黒い形状が配置されている場合もあります。(たぶんパターンは単語の間違った選択です。) 私はこの分野の研究に詳しくないので、どのキーワードを検索すればよいかわかりませんでした。

1
GLSLまたはHLSLの上に構築された多くのシェーディング言語があります。それらは通常どのような問題を解決し、どのような進歩に価値がありますか?
ふう、長いタイトルでした。 いずれにせよ、私はさまざまなことを考えたいので、この質問をしているのですが、次のような単純なものを追加するだけでも、GLSLの上に単純なオープンソースレイヤーが実際にはないことに気付きました。含む、または一般的に使用される機能。 ある種の研究として、私はこのような質問をしています。そのような言語に対する私自身の意識は控えめに言ってもごくわずかなので、私はbgfxのシェーディング言語とUnityのShaderLabを知っていますが、それらが何を達成するのか本当にわかりません-または理由-コンピュータグラフィックスの初心者。 あるいは、このようなシェーディング言語のウィッシュリストは何でしょうか?これまでのマインには、バージョン間のいくつかの互換性、ピクセルオフセットでテクスチャに簡単にアクセスできるオプションの「非表示」入力、または画像サイズなどが含まれ、おそらく通過します-たとえば、2パスガウスぼかし。 考え?
8 shader 

1
シェーダー均一性能
シェーダーのユニフォームをどのように構成するかに基づいて、パフォーマンスに影響があるかどうか知りたいのですが。たとえば、4つのfloatを渡すことは、単一のvec4を渡すよりも悪いですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.