Суть этого шейдера сводится к тому что он для материала 0 рисует текстурой 0 и накладывает нормаль с текстуры 1, для материала 1 рисует текстурой 2 и накладывает нормаль с текстуры 3, и т.д.
Инструкция по использованию:
Распаковать шейдеры в папку с ассетами проекта, настроить ладшафт как показано ниже
Текстуры должны следовать как диффузка/нормаль к ней/диффузка/нормаль к ней
Шейдер поддерживает спекулар карту, она берется из альфа канала диффузки
Если вы создаете ландшафт из скрипта, то не забудьте что номер материала теперь должен быть кратен 2
Синтаксис:
Используется csharp
float[] materials = new float[resolution, resolution, textures_count];
materials[x, y, material_number*2] = 1;
materials[x, y, material_number*2] = 1;
Минусы этого метода:
* Незначительно повышается Draw Calls из-за большего количества проходов шейдера
* Надо следить за тем чтобы не нарисовать на ландшафте неправильным материалом (нормалью)
* Использует более 8 регистров, что делает невозможным компиляцию под Flash
Download:
http://dl.dropbox.com/u/48301614/Shaders.zip
Насколько я знаю это единственный способ заставить стандартный ландшафт работать более чем с 4 картами нормалей.