Pull to refresh

Comments 45

надо потестить ) выглядит прикольно, но думаю на практике 11 текстур с прозрачностями не такое уж и простое решение.
На десктопе ОК, на мобилках — неприменимо.
Да и для десктопа с повсеместностью отложенного освещения решение так себе.
Хорошо, что их не 11 на самом деле, а только три. Не 44 мегабайта, а 12.
Да и сжать можно, никто шумы на ковре рассматривать не будет. Так что еще меньше будет
А разве можно сжимать в видеопамяти?

image
Этот ковер выглядит довольно плоским, а не состоящим из длинного ворса. Может быть, достаточно карты нормалей?

<зануда>
Я так понял, что это 11 слоев. Каждый прямоугольник = 2 треугольника (полигона). Итого — 22 полигона.
</зануда>
В Блендере полигоны не только треугольные. Наверное поэтому 11 слоев = 11 четырехугольных полигонов.
Возможно, но автор, все же, пишет про игру, а все графические API используют треугольники для отрисовки.

Но это я уже перебарщиваю с занудством, извините )
Полигон — это полигон. Плоский многоугольник. Количество вершин не определено.
Треугольник — это треугольник. Правильно считать треугольниками. Но по количеству полигонов автор не соврал.
Да, я согласен. Перезанудствовал. Профдеформация.
все графические API используют треугольники для отрисовки.
GL_QUAD: я для вас что, шутка?
Там всё равно на выходе тругольники. Просто прозрачно для пользователя.
Там неслабый такой оверхед при использовании квадов, потому что большинство(все?) драйверов тупо переделывают сами буффер в буффер трианглов.
Я знаю, что видеокарта рисует все равно треугольниками, но в API подаются квады, и речь шла про API.
Нет. GL_QUADS depricated начиная с 3. Так что актуальных API с квадами нету.
GL_QUAD всегда доступен за счет обратной совместимости как и всякие glBegin/glEnd (по крайней мере, под Desktop).
Mac OS X — это десктоп? Там нет Legacy OpenGL.
Плюс если вы используете OpenGL 4, то тоже не можете получить доступ к этим методам.
Так что хоть Legacy OpenGL и существует, его нельзя отнести к актуальным API.
Нет, не шутка. Я выше даже извинился за занудство, но не могу не ответить.

Дело в том что нативно квады не поддерживаются еще со времен Glide, и даже если вы видите GL_QUAD — API за вас соберет его из треугольников.
К тому же, это deprecated и не является актуальным уже довольно давно.

Т.к. я сейчас залезу в серую зону легальности (ибо нельзя распространять части SDK от Sony), потому кат:
Заголовок спойлера
Я заменил некоторые латинские литеры оными из кирилицы, чтобы не вылезти в поиске

kРrimitivеTypеQuаdList — vеrticеs [N*4+0, N*4+1, N*4+2] аnd [N*4+0, N*4+2, N*4+3] rеndеr triаnglеs.


Снова прошу прощения за излишнее занудство, хотя в данном случае воспринимаю это больше как просветительную работу.
Идея интересная, жаль видео результата нету.

Честно говоря, больше на поле пшеницы похоже, чем на ковёр)

Да, ворс как будто бы требует уменьшения масштаба текстуры раза в 2 или 4.
В нескольких играх видел поля, сделанные именно таким способом.

Добавить в шейдеры изменения цвета, и будет иллюзия ветра. Ну я себе это так теоретически представляю

Есть такая старая програмка от AMD — RenderMonkey, для написания шейдеров…
Такой шейдер для меха с тем-же принципом работы там является стандартным примером, и обойтись вполне можно одним полигоном (ака двумя треугольниками) для ковра и одной черно-белой текстурой.


Кстати анимированный мех тоже есть как один из вариантов этого шейдера.
Всегда было интересно, как в этом можно увидеть мех. Аналогичный вопрос к «ковру» из статьи.
Он состоит всего из одиннадцати полигонов и выглядит как натуральный ковер!

нет, не выглядит…
Смотреть надо не в статике просто, а в динамике.
Когда ты в игре в помещении перестреливаешься с врагами то не разглядываешь ворсинки на ковре, как и убегая от медведя не разглядываешь его мех.

Но если тебе требуются очень качественные ковры или мех, то можно конечно их получить «как настоящие», но будет это не 60 раз в секунду, а один раз в пол часа — такие ФПС тебя тоже врятли устроят…

Не нужно там 11 текстур (и 3 тоже не нужно), достаточно одной, которая будет, например, в альфа-канале хранить высоту ворсинки (вряд ли ворсинка будет менять свой цвет с высотой, а если и будет, то можно сделать изменение для всех ворсинок сразу).
При рисовании просто сравнивать "высоту" текущего полигона с высотой ворсинки и на основении этого решать, рисовать её или нет.
Это позволит менять детализацию ковра на лету. Если он далеко — рисуем 2-3 прямоугольника, если близко и видом сбоку — то все 20.

[offtop]

Может не совсем в тему, однако в местах, для этого предназначенных, ваша компания своих клиентов игнорирует, поэтому напишу тут, чтобы все видели.

Так вот было бы совсем замечательно, если бы вы ваших коллег, работающих над Роботами, к подходу, декларируемому вами в заключении тоже приучили. А то вроде бы и неплохая игра, но после обновлений этого года на всём, что старше двух лет тормозит по свински.

[/offtop]
Так был реализован фейковый дисплейс в октан ренедер, по крайней мере, до версии 4
Впервые видел такое еще в Tony Hawk's Pro Skater 4, помню, как в свои 11 лет восхищался изяществом и простотой решения.Недавно использовал аналогичную технику для рендера губчатого материала. Просто, быстро и легко настраивается
В игре Ил-2 2001 года леса такие были.
Для травы и ковров — ОК. Потому что нельзя сбоку посмотреть.
Мех так делать нельзя, видно будет косяки на взгляде сбоку.
Давным давно в самом первом Ил-2 похожим образом был реализован лес: отдельными слоями кроны деревьев, стволы и тень. Выглядело очень реалистично, пока на него не упадешь.
Вот тоже хотел про это написать. Выглядело оно реалистично, пока не начнёшь пролетать над горой, на которой эти самые деревья растут — видно сбоку эти слои.
>>Он состоит всего из одиннадцати полигонов и выглядит как натуральный ковер!

Простите великодушно, но эти 11 полигонов совершенно не похожи на ЕГО ВОРСЕЙШЕСТВО.
Другая техника, но по сути похожая.
туториал картинкой

Да, это выглядит гораздо лучше, чем в статье)

У вас нет случайно примера вашего ковра с рисунком. (как рисунки смотрятся)
Этот ковер за 10 минут повторяется в любом редакторе.
Сделайте да посмотрите.
А ведь подобную технологию можно было б применять для решения давней проблемы многопользовательских шутеров — когда трава отрисовывается только в ближнем радиусе, а вдали — голый рельеф.

Ну, то есть, эта условность присутствует не только в многопользовательских и не только в шутерах — но в них это наиболее чувствительно для геймплея: залегание в траву становится не маскировкой, а «страусиным поступком». Но и в синглах как-то странно выглядит, когда всякую мелочь типа крыс вдали видно лучше, чем вблизи.

Так вот — решением было бы дублировать рельеф вторым слоем полигонов с текстурой, имитирующей тип растительности. С переменным отступом, отражающим среднюю высоту травы по зонам. Или даже несколько таких слоёв, как в этой статье. Правда, с малой детализацией — то есть практически с той же, с которой текстуры рельефа делают.

А в ближнем радиусе, где трава отрисовывается детально, делать вырез в этом слое. Разумеется, такой слой не должен иметь коллизий. То есть теперь залегание в траву для дальних наблюдателей будет выглядеть как «прятки в текстуру» — что и сейчас, в принципе, можно наблюдать из-за несоответствия слоя отрисовки и слоя коллизий. Только нынешние такие прятки скорее баг, чем фича и не дают адекватного перекрытия обзора для самого прячущегося.

Разумеется, у этого решения есть свои подводные камни, но это уже нюансы.
Sign up to leave a comment.