1

GLSL ES 2.0 を使用して三角形ファン プリミティブの内部グロー効果を作成しようとしていますが、外側のエッジのみが手元にある効果の影響を受けます。これを行うには多くの方法があると思いますが、これまでのところ説明が見つかりませんでした。

Make the edge of a textured polygon grow in OpenGL ES 2.0で説明されている手法がありますが、この段階では純粋にプリミティブを使用しているため、これは機能しません。

私の最初の考えは、フラグメントシェーダーで最も近いエッジまでの距離を何らかの方法で計算し、距離がしきい値の範囲内にあるかどうかに応じて色を設定することでした。(もちろん、色とアルファは、最も近いエッジからの距離の関数になります。この時点では、正確なグラデーション プロファイルは重要ではありません。)

このアプローチには、次の 2 つの問題があります。

1) フラグメントから最も近いエッジまでの距離を計算するにはどうすればよいですか? 2) このプロセスで共通のエッジ、つまり 2 つ (またはそれ以上) の三角形に共通するエッジを除外するにはどうすればよいですか?

これは賢明なアプローチですか?もしそうなら、どうすれば2つの問題を解決できますか? 代替アプローチの提案も大歓迎です。(たとえば、テクスチャ データは画像である必要はなく、カスタム目的で利用できることを読んでいます。画像以外のテクスチャがソリューションの一部になる可能性はありますか?) :)

4

1 に答える 1

4

あなたの 2 つの質問に答えるために、これを行う glsl マジックはないと思います。フラグメント シェーダーに到達するまでに、特に内部エッジから真のエッジを分離しようとしている、エッジに関する情報は利用できなくなります。

ファンに頂点を追加し、新しいカスタム アトリビュートを使用して「グロー レベル」を定義することをお勧めします。たとえば、画像を参照してください。エッジの周りに頂点の行を配置し、これら(およびファンの中心)を最大のグローを持つように定義し、エッジをグローがゼロになるように定義すると、補間されたグロー値を取得できますエッジと新しい頂点の間。ここに画像の説明を入力

于 2012-06-03T21:12:48.807 に答える