Comments 45
Для DirectX11: docs.microsoft.com/en-us/windows/desktop/direct3d11/texture-block-compression-in-direct3d-11
Для OpenGl тоже поддержка есть
Этот ковер выглядит довольно плоским, а не состоящим из длинного ворса. Может быть, достаточно карты нормалей?
Я так понял, что это 11 слоев. Каждый прямоугольник = 2 треугольника (полигона). Итого — 22 полигона.
</зануда>
Но это я уже перебарщиваю с занудством, извините )
Треугольник — это треугольник. Правильно считать треугольниками. Но по количеству полигонов автор не соврал.
все графические API используют треугольники для отрисовки.GL_QUAD: я для вас что, шутка?
Там неслабый такой оверхед при использовании квадов, потому что большинство(все?) драйверов тупо переделывают сами буффер в буффер трианглов.
Дело в том что нативно квады не поддерживаются еще со времен 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.
Снова прошу прощения за излишнее занудство, хотя в данном случае воспринимаю это больше как просветительную работу.
Честно говоря, больше на поле пшеницы похоже, чем на ковёр)
Добавить в шейдеры изменения цвета, и будет иллюзия ветра. Ну я себе это так теоретически представляю
Такой шейдер для меха с тем-же принципом работы там является стандартным примером, и обойтись вполне можно одним полигоном (ака двумя треугольниками) для ковра и одной черно-белой текстурой.

Он состоит всего из одиннадцати полигонов и выглядит как натуральный ковер!
нет, не выглядит…
Когда ты в игре в помещении перестреливаешься с врагами то не разглядываешь ворсинки на ковре, как и убегая от медведя не разглядываешь его мех.
Но если тебе требуются очень качественные ковры или мех, то можно конечно их получить «как настоящие», но будет это не 60 раз в секунду, а один раз в пол часа — такие ФПС тебя тоже врятли устроят…
Не нужно там 11 текстур (и 3 тоже не нужно), достаточно одной, которая будет, например, в альфа-канале хранить высоту ворсинки (вряд ли ворсинка будет менять свой цвет с высотой, а если и будет, то можно сделать изменение для всех ворсинок сразу).
При рисовании просто сравнивать "высоту" текущего полигона с высотой ворсинки и на основении этого решать, рисовать её или нет.
Это позволит менять детализацию ковра на лету. Если он далеко — рисуем 2-3 прямоугольника, если близко и видом сбоку — то все 20.
Может не совсем в тему, однако в местах, для этого предназначенных, ваша компания своих клиентов игнорирует, поэтому напишу тут, чтобы все видели.
Так вот было бы совсем замечательно, если бы вы ваших коллег, работающих над Роботами, к подходу, декларируемому вами в заключении тоже приучили. А то вроде бы и неплохая игра, но после обновлений этого года на всём, что старше двух лет тормозит по свински.
[/offtop]
www.google.ca/search?q=gta+5+grass&newwindow=1&client=ms-android-samsung-gn-rev1&prmd=ivsn&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj5vbeNuPreAhUCslMKHQtFAhYQ_AUoAXoECAwQAQ&biw=412&bih=766#imgrc=SV1uv_zZmQtDMM
Мех так делать нельзя, видно будет косяки на взгляде сбоку.
Простите великодушно, но эти 11 полигонов совершенно не похожи на ЕГО ВОРСЕЙШЕСТВО.

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