GPU ベースのジオメトリ クリップマッピングを実装しようとしていますが、地形に単純な高さマップを適用するのに問題があります。ハイトマップには、サーフェス フォーマットが「シングル」の単純なテクスチャを使用します。Catalinz の XNA ブログからテクスチャを取得しました。
私がやろうとしているのは、頂点ワールド座標でテクスチャから単一の float 値を取得し、その値を頂点の Y 値に適用することです。コード内に適用できる固定グリッドがないため、シェーダーを介して高さマップを適用しています。これまで試したことは、tex2Dlod
関数を使用することでしたが、出力がないか、0 の出力があるようです。Direct X バーテックス シェーダーのコードは次のようになります。
float4 worldPos = mul(float4(pos.x,0.0f,pos.y, 1.0f), worldMatrix);
float elevation = tex2Dlod(HeightmapSampler, float4(worldPos.x, worldPos.z,0,0));
worldPos.y = elevation * 128;
HeightmapSampler
ハイトマップ テクスチャのポイント ミラー サンプラーはどこにありますか。出力は次のとおりです。実際には標高がありません。
そして、これが私が使用している高さマップです: