Кто-нибудь знает хорошие алгоритмы для рендеринга травы?
Положи текстуру на пол, например.
Или как вариант, вместо второго варианта сделай односторонние текстуры, видимой стороной внутрь, и не вертикальные, а под углом к нормали (букетиком)
добавим еще один уровень LOD (3d-модель кустика для примитивов для второго уровня LOD будем использовать 3x3+1 плоскости с спроектированными изображениями модели кустика
с букетиком проблемы в том, что эффект проявляется, но под другими углами (соответствует углу наклона плоскостей в букетике)
+ т.к. трава в основном имеет вертикальную структуру (если молодая то из-за букетика мозг чувствует себя обманутым ( уже попробовал разные букетики - выглядит получше, но кардинально картину не меняет)
для интересующихся: Вот тут очень хорошо все расписано
PS чует моя головушка, что придется очень сильно играться потом с оптимизацией
текущая сцена без оптимизаций, но с динамическими тенями (2 направленных источника света, VSM) на пятом айфоне выдает 20 фпс, что радует
Положи текстуру на пол, например.не всегда приемлимо - т.к. трава будет строиться процедурно(вся сцена разбита на квадраты с указнием плотности, преимущественной окраски, преимущественного типа травы) - соответственно единая текстура на полу не работает
или ты имеешь в виду под каждый куст класть горизонтальную плоскость?
или ты имеешь в виду под каждый куст класть горизонтальную плоскость?скорее вот так
соответственно единая текстура на полу не работаетчто тебе мешает генерировать текстуру из атласа примитивов и текстуры разметки прямо в пиксельном шейдере?
что тебе мешает генерировать текстуру из атласа примитивов и текстуры разметки прямо в пиксельном шейдере?поясни свою мысль
текстура разметки - это, я так понимаю, карта для уровня с указанием плотности и прочих характеристик
атлас примитивов - это что?
дополнительная проблема в том, что я могу передать всего 4 текстуры в шейдер, причем 2 из них уже используются для карт глубины теней
для процедурной генерации еще один слот уйдет для карты разметки (если я правильно понял твое определение)
и еще надо учитывать, что формат текстур - максимум 4 канала по 8bit
атлас примитивов - это что?ну, общий зеленовытый фон в горошек, листки травы и прочие элементы, которые вытягиваются, изгибаются, раскрашиваются, накладываются друга на друга с альфой в зависимости от разметки свойств травы для уровня. Бери размер текстуры побольше, чтобы на одной картинке 4х8 бит разместить и диффузку, и нормалку.
сегодня решил, что будем реализовывать все это чуток посложнее:Вы изобрели мип-маппинг?
нет. Он изобрёл несколько графических представлений для одной логической сущности
Вы изобрели мип-маппинг?я где-то это утверждал?
ну, общий зеленовытый фон в горошек, листки травы и прочие элементы, которые вытягиваются, изгибаются, раскрашиваются, накладываются друга на друга с альфой в зависимости от разметки свойств травы для уровня. Бери размер текстуры побольше, чтобы на одной картинке 4х8 бит разместить и диффузку, и нормалку.не совсем понимаю зачем так извращаться?
вижу преимущество в том, что для смены окраски можно одну текстуру менять и хранить это тоже просто
но тут есть проблема: MAX_TEXTURE_SIZE = 1024x1024
соответственно в такую текстуру влезет разве что 8-12 текстур элементов (и это если упаковать и диффузку, и нормалку)
пока не вижу в этом необходимости (блиде к альфе скорее всего буду таким заниматься)
что тебе мешает генерировать текстуру из атласа примитивов и текстуры разметки прямо в пиксельном шейдере?с этим проблем нет
короче, никаких проблем с текстурами на полу нет вообще
ну проблемы как таковой тоже нет
просто я интересовался, есть ли какие-то общепринятые методы рендеринга травы с перечислением недостатков, преимуществ
видел интересный способ без генерации геометрии - расчеты чисто в пиксельном шейдере - что-то вроде 3d-текстур, точнее их эмуляция, но по моим прикидкам это очень тяжелая техника
получилось получше:
А почему не использовать наклонные плоскости? Типа зигзагом.
А почему не использовать наклонные плоскости? Типа зигзагом.все проще - можно и наклонные - сильно зависит от структуры травы (величина изгибов, плотность, кустистость)
визуальное качество достигается за счет хитрой обработки: к примеру, нелинейно изменять прозрачность плоскостей в зависимости от степени "параллельности" линии взгляда
Оставить комментарий
PooH
Желательно чтобы реализация была на OpenGL ES2.0 (там нету геометрических шейдеров)стандартный способ через рендеринг вот такого примитива:
при низких углах наклона камеры (относительно горизонтали) все выглядит приятно:
но если чуть больше наклонять камеру, то все становится очень плохо:
нагрузка при вычислениях приемлимая
подскажите, как с этим бороться?
какие-нибудь хитрые способы рендеринга?
при этом надо учитывать, что целевой девайс - мобилка и там не особо с пропускной способностью и производительностью шейдеров, да и сами шейдеры сильно урезаны в функциональности (ES 2.0)