2D ジオメトリの輪郭を描くシェーダーを作成したいと考えています。OpenGL ES2.0 を使用しています。アウトラインはテクスチャに依存せず、遅すぎるため、コンボリューション フィルタを使用したくありません (テクスチャ ジオメトリを別のテクスチャにレンダリングしてから、コンボリューション シェーダで描画しようとしました)。また、2 つのパスを実行してみました。最初は 1 つの色でオーバースケールされたジオメトリを使用して oultine を表し、次に通常の描画を上に行いましたが、これにより太さが異なるか、アウトラインが整列しなくなります。セルシェーディングのシルエットがどのように行われるかを調べましたが、それらはすべて法線とライトを使用して計算されており、まったく使用していません。
私は物理学にBox2Dを使用しており、複数のフィクスチャを持つ「破壊可能な」オブジェクトを持っています。いつでもオブジェクトを分割 (フィクスチャを削除) することができ、アウトラインを新しいアウトター カウンターに合わせたいと考えています。フィクスチャの頂点、プリセット テクスチャ座標、および三角形を描画するためのインデックスに一致する頂点バッファーを使用して描画を行っています。フィクスチャが削除されると、インデックス バッファ内の関連付けられたインデックスが 0 に設定されるため、そこに三角形が描画されなくなります。次の図は、1 つのオブジェクトが完全に無傷の場合にどのように見えるかを示しています。赤い点は頂点の位置 (テクスチャリングは表示されていません)、黒い線はフィクスチャ、青い線は三角形の描画方法の分離を示しています。灰色のアウトラインは、どのような場合でもアウトラインをどのように見せたいかです。
この画像は、いくつかのフィクスチャを取り外した同じオブジェクトを示しています。
これを頂点シェーダーで (または他の単純な方法と組み合わせて) 行うことは可能ですか? どんな助けでも大歓迎です。
ありがとう :)