タグ付けされた質問 「decal-system」

1
据置デカールの通常の問題
私は延期デカールシステムに取り組んできました。ここまでで、投影パーツを完成しました。つまり、シーン内の何かをクリックすると、デカールがオブジェクトの表面に適切に投影されます。 このシステムに追加したいことが他にいくつかあります。通常のクリッピングと通常のマップされたデカールです。通常のクリッピングは、鋭角に引き伸ばされたフラグメントを破棄するときです。見てここに。これを解決する方法は、Gバッファの法線とデカールの法線との間に大きな差があるフラグメントを破棄することです。これには、Gバッファの通常のテクスチャを読み取る必要があります。 デカール法線マッピングを行うには、デカールの法線(法線マップからの)をGバッファの法線とブレンドする必要があります。では、Gバッファの通常のテクスチャに書き込む必要があります。 これら2つの機能をサポートするために、同じシェーダーパスで通常のテクスチャを読み書きする必要があることは明らかです。残念なことに、これは未定義の動作なので、これらの機能を実装する他の方法があるかどうか疑問に思っています。

2
デカールの実装
デカールに関する情報を見つけるのに問題があったので、この質問が他の人の役に立つかもしれません。この実装は、フォワードレンダラー用です。 デカールの実装が正しいかどうか誰かが確認できますか? 共通空間での投影ボリュームを定義する任意の次元の立方体を定義します。定義されたキューブとの三角形の交差をチェックして、投影が影響する三角形を受け取ります。 これらの三角形をクリップして保存します。 次に、マトリックストリックを使用して、投影するテクスチャを参照する保存された三角形のUV座標を計算します。 これを行うには、共通空間での立方体の高さ、幅、奥行きを表すベクトルを取り、左下隅が原点になるようにします。 これをi、j、kの単位ベクトルとして行列に入れ、立方体の移動を設定してから、この行列を逆にします。 保存した三角形の頂点にこの行列を掛けます。これにより、UV座標として使用する0から1のサイズの立方体内の座標を取得できます。 このようにして、投影している元の三角形があり、それらのUV座標があります(UV座標は、投影しているテクスチャを参照しています)。 次に、保存した三角形をシーンに再レンダリングすると、投影された画像で投影領域が上書きされます。 今、私が答えを見つけることができなかった質問。最後の点は正しいですか?私はソフトウェアクリッピングを行ったことがありませんが、精度に制限があるため、投影されたテクスチャに対してzファイティングが発生する可能性があるため、エラーが発生しやすいようです。また、UV座標を正しく取得する方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.