У меня есть сэмплер tex2D. Я хочу вернуть только те цвета, которые присутствуют на моей текстуре. Я использую Shader Model 3, поэтому не могу использовать load .
В случае, когда тексель перекрывает несколько цветов, я хочу, чтобы он выбрал один и весь цвет был таким.
Я думаю, что для этого я хочу отключить mipmapping или, по крайней мере, трилинейную фильтрацию mips.
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, поэтому не уверен, в какую комбинацию мне нужно их установить, или это даже то, что мне нужно.
Как выглядит часть моей исходной текстуры;
http://img689.imageshack.us/img689/6171/sourcev.png http://img689.imageshack.us/img689/6171/sourcev.png
Снимок экрана того, как выглядит соответствующая область после отображения полной текстуры на моей сфере;
http://img717.imageshack.us/img717/9202/resultc.png http://img717.imageshack.us/img717/9202/resultc.png
Артефакты сглаживания / смешивания / фильтрации хорошо видны; Я не хочу это.
MSDN имеет это сказать;
D3DSAMP_MAGFILTER: Фильтр увеличения типа D3DTEXTUREFILTERTYPE
D3DSAMP_MINFILTER: Фильтр минификации типа D3DTEXTUREFILTERTYPE .
D3DSAMP_MIPFILTER: фильтр Mipmap для использования во время минимизации. См. D3DTEXTUREFILTERTYPE .
D3DTEXF_NONE: При использовании с D3DSAMP_MIPFILTER отключает отображение.
Еще одна полезная ссылка на понимание внутренностей hlsl .
ПОСТАНОВИЛИ
Совсем не проблема HLSL! Извините все. Кажется, я задаю много вопросов, на которые невозможно ответить. Огр перешагнул через вышеуказанные настройки. Это было исправлено с помощью
Ogre::MaterialManager::getSingleton().setDefaultTextureFiltering(Ogre::FO_NONE , Ogre::FO_NONE, Ogre::FO_NONE);