1

現在、高さマップで作成された円柱状の地形に取り組んでいます。プログラムで行われることは単純です。領域のアルファ値を持つ地形の色のテクスチャがあり、それを非表示にしたいです。別のテクスチャARGBで、Aは高さのグレースケールで、RGBは光の法線。テクスチャは、A値が1から255になり、穴のある領域に0を予約しているようなものです。つまり、存在したくないということです。したがって、理論的には問題ありません。最初のテクスチャに基づいてこれらの領域を非表示にしますが、実際には、プログラムは0を最小の高さと見なし、テクスチャが上にある場合でも、これに向けていくつかの線を作成しています。 0の領域、 円柱の中心に向かう線に注意してください これは、それらの頂点を非表示にするのをやめたときに取得する方法です

円柱の中心に向かう線に注意してください。これは、これらの頂点を非表示にするのをやめたときに取得される方法です。

つまり、ピクセルシェーダーで関数Clip()を使用して、ピクセルシェーダーを非表示にしました。

基本的に私が助けを必要としていること:ピクセルシェーダーでclip()を使用するのと同じ方法で、頂点シェーダーでそのようなことを行い、不要な頂点を取り除くことは可能ですか?基本的に、値0を無視すると言うことは可能ですか?これを修正するためのアイデアはありますか?私は、0であるすべての頂点を彼の隣人の値にすることを考えています。そうすれば、それらの線は中心ではなく、円柱自体と同じ平面に行きます。もう1つのことは、プログラムが1つの頂点から次の頂点に値を補間していることを確認できることです。そのため、非表示の頂点まで途中でカットします。

私はC++でDirectx11APIを使用しており、プログラムはテッセレーションを使用しています。

お時間をいただきありがとうございます。これに関するご意見をお待ちしております。

4

1 に答える 1

0

さて、私はこの問題を少し解決しました。高さの値を持つテクスチャをモディファイヤを通過させ、ゼロの値がゼロ以外の値を持つサイド ピクセルに置き換えられた別のテクスチャを作成するか、128.0f に変更しました。それにより、奇妙な線の方向がより正確になり、円柱の中心ではなく線に沿って進みました。

于 2012-09-20T19:04:50.847 に答える