Главная » Статьи » IT |
Процедурный генератор normalMap текстуры.
Принцип прост: В метод генерации передаётся параметр диффузная текстура и параметры генерации (параметры генерации опционально).
В классе создаётся rendertarget-текстура, в которую выполняется отрисовку получаемой карты нормалей специальным шейдером (текст шейдера в коде реализации класса). После этого с готового первого mip-уровня поверхность копируется в последующие mip-уровни. Демонстрация и исходники прилагаются. У демонстрационного приложения два режима:
Переключаются режимы любой клавишей. ESC-выход. Декларация struct generator_normalmap_params { float kTextureSize; float kCntrst; float lightness_x; float lightness_y; float lightness_z; generator_normalmap_params() { kTextureSize = 1000.0f; kCntrst = 0.5f; lightness_x = 0.3f; lightness_y = 0.5f; lightness_z = 0.11f; } }; class generator_normalmap { ID3DXEffect* m_pEff; public: generator_normalmap(IDirect3DDevice9* const _device) throw(std::runtime_error); virtual ~generator_normalmap(); void DoDrawQuad(IDirect3DDevice9* const pdevice); IDirect3DTexture9* Generate( IDirect3DDevice9* const pdevice, IDirect3DTexture9* const srcTexture, const generator_normalmap_params* params); }; | |
Просмотров: 351 | | |
Всего комментариев: 0 | |