То есть в террейне таким флагом скрываются объекты ?
Не думаю, скорее всего там прямая связь с графической либой Можно рефлектором, конечно, попотрошить, но там наверняка вызов неуправляемого кода.
Именно так, я уже через IlSpy половину юнити кода перелопатил и кстати, в нем много чего не очень быстрого есть, хотя и в самом шарпе много чего не очень быстрого есть .
вот надеюсь что портанется он на шарп тоже). то что ты делаешь на шарпе - это круто!
Еще бы найти спеца по 3Д геометрии, который бы подсказал как адаптивную сетку лучше организовать.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Снова тесты, пока ничего революционного. Намного ускоренная генерация чанков. Дополнительно добавил поддержку простых цветов с раскраской блока в 24битный цвет. Теперь ограничения больше по видеопамяти и оперативке. На видео прогрузка карты 1400х700х1400 блоков - 171500 чанков, почти 1,5 млрд блоков с двухпроходным 6 октавным перлином генерации биомов + двух-трех проходным 7-10 октавным перлином карты высот + рандомная генерация оттенка зеленого на каждый видимый блок. Пока цвета всех биомов одинаковые с цветом не заморачивался )). Каждый блок - 10 байт информации. Поставил ограчения на обработку 150 чанков/кадр. Моя видюшка помирает )), но процик нормально отрабатывает. Скорость камеры~ 60 км/час. Можно на машинке гонять .
Теперь когда устранены все захлебывания от количества, можно думать на счет ЛОДов, либо делать простое упрощение геометрии, либо полностью упрощение с блоками. Или забить .
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Сегодня открыл для себя любопытную штуку . Можно обкладывать юнитековские примитивы вокселями. Для теста - обкладываю стандартный кубик блоками в 6 см. Да и кстати переделал чанки, что теперь можно использовать блоки любых размеров хоть милиметр, правда много их все равно не засунешь в экран, но можно свой Voxatron запилить, там как раз маленькие воксели. Хотя я тут прикинул, если использовать только кубики и проходить гридиком по мешу, то можно метров 40-50 в объеме сделать. Допустим тайкун какой нибудь или платформер, хотя в платформерах едва 10-15 метров на экране помещается.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Запилил базу LOD уровней, соединять разноуровневые блоки еще не научился, но сама схема работает . И кеш измененных блоков работает пока только с минимальными блоками без смены детализаций. Минимальный блок 0,5м, дистанция 80 м. Максимальный блок 4м, дистанция 640 м.
Загрузка такой карты около 2-3с .
Без перлина еще терпимо, с перлином уже проседания заметны. Нужно будет провести пару оптимизаций. Вообщем начало положено .
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Снова переписал почти всю логику на чистый шарп, от юньки остались только вектора и color. Еще немного ускорил генератор. Теперь можно использовать любой размер чанка в разных направлениях (в разумных пределах). Наконец то начал полноценно использовать наследования и абстракции, тем самым избавился от четверти кода. Так же начал делать редактор объектов. Не знаю что получится .
На видео тест псевдо 2Д карты. Хотел сначала полноценный 2Д, но не понравились 2Д коллайдеры - не получается сделать одним коллайдером разделенный меш, поэтому буду пробовать из 3Д кубиков и меш коллайдера делать.
UPD: добавил поверхностный слой, думаю, может еще как нибудь внутри слоенный пирог сделать .
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Добавил тестовую гуйню и наконец то доделал красилку . Красить можно только блоки которые устанавливаются. На выбор 4 тестовых "материала" на "1" диффуз, "2" со спеком, "3" металл, "4" стекло. Есть горячие клавиши, но расписывать лень и они сейчас неудобные . Менюшка не игровая, а для будущего редактора.
Тестовый веббилд. Карта - почти плоскость 640х640 метровыми блоками. First_Build
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Пока изыскания. Продолжение будет, я ненадолго оставил воксели и в пытался влезть в сетевую архитектуру. В целом, наконец то дошел (не без помощи сетевого гуру) до того как сделать расширяемую базу сервер/клиента, заодно поняв как эти знания можно применить для обычных проектов и с этих выходных снова занялся: переписал (это уже 4-й раз переписываю ) на свой простенький поточный менеджер и сделал более гибкую архитектуру. Теперь можно легко менять модули алгоритма расчета меша, биомов и карты высот + стабильный фпс и контролируемая нагрузка на проц. Голый террейн выкладывать смысла нет, как дойду до генерации растений и объектов, если будут результаты, то снова чего нибудь выложу.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Давненько не писал. После небольшого перерыва снова возобновил свои изыскания. Двиг полностью переписан в четвертый раз. Теперь это почти независимая либа, единственное пока сохраненки с юнитековскими данными вшиты, чтобы можно было в вебе обходить system.IO. Почти каждую часть, начиная от описания блока до полного распаковшика мешей можно написать извне и прикрутить. Так же можно использовать практически любую карту высот, пробовал текстуры, вороного, террейн, шумы, простые формы. Сохраненки теперь региональные - куб размерами 128 или 256 метров. Хранить все в одной куче как в Blockscape оказалось не прикольно. Все изменения теперь проходят через кеш-сохраненку, так что написав ее извне, теоретически можно подключить сетку для приема/передачи данных. Пока отказался от любых размеров чанка, поскольку float после 10 км начинает терять в точности и становятся видны разрывы между ними. Привязал их к целым числам. Так же пока отказался от ЛОДов, не тяну геометрию )). Скорей всего в 5 версии буду снова пытаться. Из нового: 6 слотовый трипланарник для земли - долой резкие переходы, правда для красивого бленда уходит достаточно много вычислений. Так же можно блендить цветовые блоки. Откопал шумовую либу, теперь горы похожи на горы, да и вообще местность выглядит приятнее и возможностей стало побольше. Количетсво блоков ограничил 65к, туда же входят трава, цветочки и т.п. Трава и цветочки уже есть, поскольку они являются блоками, то с ними проблем нет, но на видео их нет. С деревьями и другими объектами даже не знаю что делать, все таки двиг из кубиков и прикручивать внутрь объекты как то неправильно. На самом деле я уже прикручивал объектные деревья с пару недель назад, когда экспериментил с нативным террейном смотрелось неплохо, но нужно придумать что то другое, чтобы двиг оставался чисто процедурным, может в юнити отдельные чанки для деревьев создать... Вода пока не текучая, но тоже из блоков, для красоты просто. Вообщем потихоньку продолжу пилить .
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
начал делать расстановщик травы и объектов. Точнее траву почти закончил, а вот с объектами нужно будет какой нибудь пул придумать, а то лаги страшенные при добавлении/удалении кучи деревьев. Несмотря на то что расположение травы и деревьев кажется хаотичным (что сделать было непросто ), на самом деле они жестко привязаны к ячейкам сетки и маркируются как блоки. Посадка каждого вида травы или объекта контролируется углом наклона поверхности и максимальной/минимальной высотой поверхности. Что не нравится это то, что генерация проходит в 3 захода - земля, трава, объекты. Если еще воду делать текучую, то будет еще один заход, А если еще генерить заранее сконструированные воксельные патерны - еще один, что не очень прикольно. На видео трава и деревья из стандартного пака, на досуге поищу или поделаю еще контента чтобы разнообразить картинку.
Сюда периодически чего нибудь выкладываю https://github.com/LuchunPen
Шикарно бы смотрелись шейдеры "нереалистичные". Не cell shading конечно, но хотя бы что то стилизованное. WoW-like к примеру =) А так - шикарно, сразу видно, что с момента начала, проделана огромная работа.