ksacvet777.moy.su
Главная » Статьи » IT

Процедурный генератор normalMap текстуры.
Принцип прост:

В метод генерации передаётся параметр диффузная текстура и параметры генерации (параметры генерации опционально).

В классе создаётся rendertarget-текстура, в которую выполняется отрисовку получаемой карты нормалей специальным шейдером (текст шейдера в коде реализации класса). 

После этого с готового первого mip-уровня поверхность копируется в последующие mip-уровни.  Демонстрация  и исходники прилагаются. 

У демонстрационного приложения два режима:
  1. Режим отображения на модели чайника
  2. Режим отображения текстур на экране

Переключаются режимы любой клавишей.
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);
     
};





Категория: IT | Добавил: ksacvet777 (04.02.2014)
Просмотров: 326 | Теги: directx, normalmap, Generator, CPP, C++ | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: