tex2Dサンプラーがあり、テクスチャに存在する色だけを正確に返したいです。Shader Model 3を使用しているため、loadを使用できません。
テクセルが複数の色に重なっている場合は、1つを選択して、テクセル全体をその色にします。
これを行うには、ミップマッピング、または少なくともミップのトリリニアフィルタリングを無効にしたいと思います。
sampler2D gColourmapSampler : register(s0) = sampler_state {
Texture = <gColourmapTexture>; //Defined above
MinFilter = None; //Controls sampling. None, Linear, or Point.
MagFilter = None; //Controls sampling. None, Linear, or Point.
MipFilter = None; //Controls how the mips are generated. None, Linear, or Point.
//...
};
私の問題は、Min / Mag / Mipフィルタリングを本当に理解していないので、これらをどの組み合わせに設定する必要があるのか、またはこれが私が求めているものであるかどうかさえわからないことです。
完全なテクスチャが球にマッピングされた後の関連領域のスクリーンショット。
アンチエイリアシング/ブレンディング/フィルタリングのアーティファクトがはっきりと表示されます。私はこれらが欲しくありません。
MSDNはこれを言っています。
D3DSAMP_MAGFILTER:タイプD3DTEXTUREFILTERTYPEの倍率フィルター
D3DSAMP_MINFILTER:タイプD3DTEXTUREFILTERTYPEの縮小フィルター。
D3DSAMP_MIPFILTER:縮小中に使用するミップマップフィルター。D3DTEXTUREFILTERTYPEを参照してください。
D3DTEXF_NONE:D3DSAMP_MIPFILTERとともに使用すると、ミップマッピングを無効にします。
hlsl組み込み関数を理解するためのもう1つの優れたリンク。
解決済み
HLSLの問題ではありません!申し訳ありません。答えられない質問がたくさんあるようです。Ogreは上記の設定を上書きしていました。これはで修正されました;
Ogre::MaterialManager::getSingleton().setDefaultTextureFiltering(Ogre::FO_NONE , Ogre::FO_NONE, Ogre::FO_NONE);